Getting started
The PassKey public API serves your tracking data over HTTP: the sales that came in from the gateways, the period numbers and the creative ranking. Same information as the dashboard, ready for your system to store.
Base URL
All calls start from: https://public-api.passkey.global/v1
Your first call
curl "https://public-api.passkey.global/v1/sales?from=2026-08-01&to=2026-08-31" \
-H "Authorization: Bearer passkey_prd_..."The key comes from the Settings screen in the dashboard — the walkthrough is in Authentication.
What exists today
| Endpoint | Answers |
|---|---|
| GET /v1/sales | the period sales, paginated, with totals for the filter |
| GET /v1/sales/metrics | revenue by currency and counts by status |
| GET /v1/creatives/ranking | how much each creative sold, with spend and traffic |
Three things that prevent the common mistake
1. Currencies are never summed. Every amount comes with its currency, and revenue lists carry one entry per currency:
"revenue": [
{ "currency": "BRL", "amountCents": 60000 },
{ "currency": "USD", "amountCents": 12000 }
]Summing amountCents across the array mixes currencies and produces a wrong total with no error at all. For a single number, ask for convertTo and read the conversion field.
2. Amounts are integers in cents. amountCents: 29900 is 299.00. There is no floating point anywhere in the response — money in floats accumulates rounding error.
3. The window caps at 90 days. For longer periods, chain calls. With no from/to, the default is the last 30 days.
Conventions
| Topic | Rule |
|---|---|
| Filter dates | YYYY-MM-DD, and to is inclusive |
| Response dates | ISO-8601 (2026-08-06T12:00:00.000Z) |
| Pagination | opaque cursor — send back what you got, do not parse it |
| New fields | may appear at any time; ignore what you do not know |
Identifiers
sale_8f3a… is stable: the same sale returns the same id forever. Use it as the key in your database. The same holds for contentId, the join key between a sale and a creative.
They are not PassKey internal identifiers, and that is deliberate: it lets our internal schema change without breaking what you already stored.
Integrating with an AI agent
This same documentation is available as JSON, at a single address and in English: /docs.json. Point your agent there instead of asking it to read these pages.
curl https://docs.stg.passkey.global/docs.jsonIt carries the base URL, authentication, every endpoint with its parameters and response fields, and the error codes with retry guidance. Single address, no per-language version.
The API and the dashboard
Through the API you read the period sales, the totals and the creative ranking — enough to feed your system with what came in and what sold.
The complete view lives in the PassKey dashboard: detailed metrics, product rankings, ROI and funnel are all there.