For brands & publishers

REST API

Pull your data programmatically — conversions, daily stats, payouts, channels, and brands — with a simple Bearer-authenticated JSON API.

Base URL

All endpoints live under a single versioned prefix. We’ll add new fields without notice, but never remove or rename one within v1.

https://app.adryse.com/api/v1

Authentication

Create a key under Dashboard → Settings → API keys. The full key (adr_live_…) is shown once, at creation — store it like a password. Send it as a Bearer token on every request:

curl https://app.adryse.com/api/v1/me \
  -H "Authorization: Bearer adr_live_xxxxxxxxxxxxxxxxxxxx"

Keys are scoped to the organization that created them and inherit its role — a publisher key sees publisher data, an advertiser key sees advertiser data. Revoke a key any time from the same screen; revocation takes effect immediately.

Response envelope

Success responses wrap the payload in a data field. Errors return an error object with a stable code and a human-readable message.

// 200 OK
{ "data": [ /* … */ ] }

// 4xx / 5xx
{ "error": { "code": "unauthorized", "message": "Invalid or revoked API key." } }
StatusCodeMeaning
401unauthorizedMissing, malformed, or revoked key.
403forbiddenKey’s role can’t access this endpoint.
400bad_requestInvalid query parameter (e.g. a malformed date).
429rate_limitedToo many requests — see below.
500internal_errorSomething went wrong on our side. Safe to retry.

Rate limits

Requests are limited to 120 per minute per organization, measured over a trailing 60-second window. Exceed it and you get a 429 with a Retry-After: 60 header — back off and retry after the window clears. All amounts in responses are integer cents of the stated currency.

Endpoints

Every endpoint is GET-only today. Money fields are in cents; timestamps are ISO-8601 UTC.

GET /me

Identify the organization behind the current key.

curl https://app.adryse.com/api/v1/me \
  -H "Authorization: Bearer adr_live_…"

GET /conversions

Your conversions in a date range. Publishers see their earnings; advertisers see conversions across all their brands.

QueryDefaultNotes
from30 days agoISO date, inclusive.
tonowISO date, inclusive.
limit50Max 100.
curl "https://app.adryse.com/api/v1/conversions?from=2026-07-01&to=2026-07-31&limit=100" \
  -H "Authorization: Bearer adr_live_…"

GET /stats

Daily rollups over a date range — clicks, conversions, and commission per day. Same from/to params as /conversions.

curl "https://app.adryse.com/api/v1/stats?from=2026-07-01&to=2026-07-31" \
  -H "Authorization: Bearer adr_live_…"

GET /payouts · publishers

Your payout runs, newest first — period, status, net amount, and when it was paid. Accepts limit (default 20, max 100).

curl https://app.adryse.com/api/v1/payouts \
  -H "Authorization: Bearer adr_live_…"

GET /channels · publishers

Your promotional channels (sites, newsletters, apps) with their review status.

curl https://app.adryse.com/api/v1/channels \
  -H "Authorization: Bearer adr_live_…"

GET /brands · advertisers

Your brands with status, prepaid balance, and the commission rate you offer publishers.

curl https://app.adryse.com/api/v1/brands \
  -H "Authorization: Bearer adr_live_…"

Versioning

Breaking changes ship under a new prefix (/api/v2). Within a version we only add — new endpoints and new fields — so code that ignores unknown fields keeps working. For real-time pushes rather than polling, see Webhooks.