API reference

Every endpoint, every field, and the conversion callback we send you — generated from the same OpenAPI 3.1 document our own code is described by, so it cannot go stale.

Specification version 1.0.0.

The endpoints

The full interactive reference needs JavaScript. Everything it shows is in openapi.json and openapi.yaml — import either into Swagger UI, Redocly, Insomnia or your code generator. Here is the shape of it.

Authentication

Identify the placement with appId, your 32-character public key. Authenticate with the secret key in the X-Api-Key header, or sign the sorted query string if you cannot set headers. The secret never travels in a URL.

The JSON API

EndpointWhat it returns
GET /api/v1/offers The catalogue this user may see, already targeted and priced in your currency. Pass userId to get a ready-to-use clickUrl on every offer.
GET /api/v1/offers/{id} One offer plus its goal ladder — the steps of a multi-step offer and what each pays.
GET /api/v1/conversions Completed offers, for reconciliation. The postback is the real-time channel.
GET /api/v1/stats Daily series and totals: impressions, clicks, conversions, reversals, your payout, EPC.
GET /api/v1/categories The category vocabulary with live counts, for building a filter UI.

The hosted wall

URLWhat it is
GET /wall/{publicKey} The offerwall itself, for an iframe. Sets no cookies.
GET /wall/{publicKey}/click/{offer} Records the click, then redirects to the advertiser. Never link straight to an advertiser.

The documents

URLFormatWhen to use it
/openapi.json OpenAPI 3.1 Canonical. Use this unless your tool refuses it.
/openapi.yaml OpenAPI 3.1, YAML The same document. Byte-for-byte the same meaning.
/openapi-3.0.json OpenAPI 3.0.3 For openapi-generator, older Swagger UI, gateways — anything that cannot read 3.1.
/openapi-3.0.yaml OpenAPI 3.0.3, YAML The same compatibility build.
/postman.json Postman v2.1.0 Postman, Insomnia, Hoppscotch, Bruno, Thunder Client.

The 3.0.3 build is generated from the 3.1 one and says the same thing, with two unavoidable differences: the conversion callback moves from webhooks to x-webhooks (3.0 has no webhooks; Redoc, Swagger UI and Stoplight all read the extension), and JSON Schema's examples/const become 3.0's example/enum. Both are validated on every change.

The callback we send you

One signed server-to-server request per conversion, and one more if it is later reversed. Verify it before crediting anybody — the contract is here.

Start integrating