Skip to content

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

EndpointAnswers
GET /v1/salesthe period sales, paginated, with totals for the filter
GET /v1/sales/metricsrevenue by currency and counts by status
GET /v1/creatives/rankinghow much each creative sold, with spend and traffic
Everything is a read. No endpoint creates, changes or deletes anything — sales come in through the gateway postback.

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:

json
"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

TopicRule
Filter datesYYYY-MM-DD, and to is inclusive
Response datesISO-8601 (2026-08-06T12:00:00.000Z)
Paginationopaque cursor — send back what you got, do not parse it
New fieldsmay 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.

bash
curl https://docs.stg.passkey.global/docs.json

It 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.