Skip to content

iGaming Affiliate API ​

Send lead and conversion events to us — we forward them to the advertiser/brand — and read your conversions back.

Overview ​

Base URL

bash
https://api.example.com

Affiliate ID

bash
your-affiliate-id

The integration has three steps:

  1. Send traffic through your tracking link. Each visit creates a click and redirects the visitor to the brand with a clickId.
  2. Report events for that clickId via the postback endpoint.
  3. Optionally pull your conversions with your API key.

Authentication ​

The pull API authenticates with your API key in the x-apiKey header. The postback endpoint is keyed by the clickId and needs no API key.

bash
x-apiKey: your-api-key

Keep your API key secret

The plaintext key is shown only once, when it is generated. Never expose it in client-side code.

Send a Lead ​

POST a lead as JSON with your API key. We attribute it to your affiliate account and route it on to the advertiser/brand.

Requires a key with the leads:create scope.

Endpoint ​

bash
POST https://api.example.com/v1/affiliate/leads

Headers ​

  • Content-Type: application/json
  • x-apiKey: your-api-key

Example Request ​

bash
curl -X POST 'https://api.example.com/v1/affiliate/leads' \
--header 'x-apiKey: your-api-key' \
--header 'Content-Type: application/json' \
--data-raw '{
    "firstName": "John",
    "lastName": "Doe",
    "email": "john@example.com",
    "phone": "+15551234567",
    "country": "DE"
}'

Field Descriptions ​

FieldTypeDescription
firstNamestring(Required) Lead's first name
lastNamestring(Required) Lead's last name
emailstring(Required) Valid email address
phonestring(Required) Phone in international format
countrystring(Required) ISO-2 country code or name
offerIduuidTarget offer (selects the advertiser)
brokerIduuidSpecific broker to route to
lpNamestringLanding page name
passwordstringFor auto-login at the brand, if used
langstringLead language (e.g., "en")
affSub … affSub4stringYour sub-IDs for reporting
sourcestringFree-text traffic source
ipstringLead's IP address

Response ​

Success returns HTTP 201. advertiserId is the brand the lead was routed to by country rotation, or null if none matched.

json
{
    "data": {
        "id": "<lead-uuid>",
        "state": "PENDING",
        "advertiserId": "<uuid|null>"
    }
}

Validation errors return HTTP 400.

json
{
    "error": {
        "code": "VALIDATION_ERROR",
        "message": "…"
    }
}

Send traffic through your tracking link. Each visit creates a click and redirects to the brand with a clickId appended — capture it to report conversions.

bash
https://api.example.com/track/go/your-affiliate-id?offerId=OFFER_UUID

Report Conversions (Postback) ​

Report an event with an HTTP POST. Parameters go in the query string. We process the event and forward it to the brand.

Endpoint ​

bash
POST https://api.example.com/postBack

Example Request ​

bash
# Lead (registration)
curl -X POST 'https://api.example.com/postBack?clickId=CLICK_ID&status=lead&playerId=12345'

# First deposit (FTD) — amount required
curl -X POST 'https://api.example.com/postBack?clickId=CLICK_ID&status=ftd&playerId=12345&amount=100'

Field Descriptions ​

FieldTypeDescription
clickIduuid(Required) The clickId from the tracking redirect
statusenum(Required) One of: click_landed, lead, ftd, ngr_update
playerIdstring(Required) Your unique player/user id for this visitor
amountnumberDeposit amount. Required when status=ftd
affSub … affSub5stringOptional sub-IDs passed through for your reporting

Statuses ​

StatusMeaning
click_landedLanding page reached
leadRegistration
ftdFirst-time deposit (send amount)
ngr_updateNet gaming revenue update

Response ​

Success returns HTTP 200.

json
{
    "clickId": "...",
    "actions": [...]
}

Errors return HTTP 400 (validation) or HTTP 404 (click not found).

json
{
    "error": "..."
}

Pull Your Conversions ​

Read your conversions with your API key, paginated by cursor.

Endpoint ​

bash
GET https://api.example.com/v1/affiliate/conversions

Headers ​

  • x-apiKey: your-api-key

Example Request ​

bash
curl --location 'https://api.example.com/v1/affiliate/conversions?from=2026-01-01T00:00:00Z&limit=100' \
--header 'x-apiKey: your-api-key'

Field Descriptions ​

FieldTypeDescription
fromISO 8601Start of the time range (e.g., "2026-01-01T00:00:00Z")
toISO 8601End of the time range
offer_iduuidFilter to a single offer
limitintegerPage size, max 100
cursorstringnext_cursor from the previous page

Response ​

json
{
    "data": [ "… conversion rows …" ],
    "paging": {
        "next_cursor": "string|null",
        "limit": 100,
        "max_limit": 100
    }
}

Errors & Rate Limits ​

Pull API errors use the shape { "error": { "code", "message" } }.

StatusCodeMeaning
401MISSING_API_KEYNo API key was provided
401INVALID_API_KEYThe API key is not valid
403INSUFFICIENT_SCOPEThe key lacks the required scope
403IP_NOT_ALLOWEDThe request IP is not allowlisted
429RATE_LIMITEDToo many requests (see Retry-After header)

Each key is rate-limited to 60 requests per minute by default. Stay under your limit and honor Retry-After on 429.

Released under the MIT License.