MMecilo Reporting API

Adjust S2S integration guide

One endpoint for events, revenue, and attribution groups.

A lightweight JSON wrapper around fixed Adjust endpoints. Relay caller-supplied credentials, report activity, and split Organic from non-organic users without managing another backend.

Base URLhttps://reporting.mecilo.com
01 / Authentication

Relay the token with each request

Pass the Adjust API token in an Authorization: Bearer TOKEN header. For JSON-only integrations, you may instead include api_token in the request body. The wrapper removes it from the form payload and forwards it only as Adjust's bearer header.

i
No stored credentials. Tokens, app identifiers, event tokens, and device IDs are held only for the lifetime of the request.
02 / Quick start

Confirm the service is ready

The health route makes no Adjust request and returns the active Google Cloud region.

curl https://reporting.mecilo.com/health
200 OK{"ok":true,"service":"adjust-s2s-wrapper","region":"us-central1"}
Live testing

Enter values, generate curl, and run

Choose an endpoint and enter your Adjust values. The console builds a ready-to-use curl command, lets you copy it, and can send the equivalent request directly from this page.

Values stay in this browser tab and are sent only when you click Run live request.

Generated curl
curl -X POST https://reporting.mecilo.com/events \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer $ADJUST_API_TOKEN' \
  -d '{
  "app_token": "YOUR_APP_TOKEN",
  "device_id": "YOUR_DEVICE_ID",
  "device_id_type": "gps_adid",
  "event_token": "YOUR_EVENT_TOKEN",
  "environment": "production"
}'
POST

/events

Report standard Adjust events. Add revenue and currencyto the same request when the event carries app revenue.

FieldRequiredDescription
app_tokenYesAdjust app token.
event_tokenYesAdjust event token.
Device IDYesgps_adid, idfa, adid, or generic mapping.
revenueFor revenueAmount in full currency units.
currencyWith revenueISO currency code such as USD.
environmentNoproduction or sandbox.
created_at_unixRecommendedEvent time as a Unix timestamp.

Example request

curl -X POST https://reporting.mecilo.com/events \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer $ADJUST_API_TOKEN' \
  -d '{
    "app_token": "abc123abc123",
    "event_token": "evt123",
    "device_id": "660e1d86-6796-463a-be86-897993136018",
    "device_id_type": "gps_adid",
    "revenue": 1.25,
    "currency": "USD",
    "environment": "production"
  }'
Adjust accepted{"ok":true,"adjust_status":200,"adjust_response":"OK"}
POST

/ad-revenue

Report advertising revenue such as AdMob impression value. When omitted, the wrapper sets source=publisher and ad_impressions_count=1.

FieldRequiredDescription
app_tokenYesAdjust app token.
Device IDYesPlatform identifier or generic mapping.
revenueYesAdvertising revenue amount.
currencyYesCurrency associated with the amount.
ad_revenue_networkNoAd network, for example AdMob.
ad_revenue_unitNoAd unit or format.

Example request

curl -X POST https://reporting.mecilo.com/ad-revenue \
  -H 'Content-Type: application/json' \
  -d '{
    "api_token": "YOUR_ADJUST_API_TOKEN",
    "app_token": "abc123abc123",
    "gps_adid": "660e1d86-6796-463a-be86-897993136018",
    "revenue": 0.01,
    "currency": "USD",
    "ad_revenue_network": "AdMob",
    "ad_revenue_unit": "rewarded_video"
  }'
GET

/group

also POST

Inspect a device's current Adjust attribution and return a two-way experiment group.

1
Non-organic

Any successful TrackerName other than Organic.

2
Organic

TrackerName exactly matches Organic, case-insensitive.

curl 'https://reporting.mecilo.com/group?app_token=abc123abc123&device_id=DEVICE_ID' \
  -H 'Authorization: Bearer $ADJUST_API_TOKEN'
Adjust Device API limitation

Adjust documents inspect_device in its SDK testing and sandbox workflow. Confirm production availability with Adjust before using this route as a live experiment dependency.

03 / Reference

Responses and errors

StatusSourceMeaning
200Wrapper or AdjustHealthy, or Adjust accepted the request.
204WrapperCORS preflight accepted.
400WrapperRequired fields are missing; Adjust was not called.
4xx/5xxAdjustAdjust rejected or could not process the request.
502WrapperNetwork or unexpected relay failure.
504WrapperAdjust did not respond within 10 seconds.
04 / Operations

Runtime profile

Regionus-central1
RuntimeNode.js 22
Timeout30 seconds
Upstream limit10 seconds
Memory256 MiB
PersistenceNone