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.