Appearance
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.comAffiliate ID
bash
your-affiliate-idThe integration has three steps:
- Send traffic through your tracking link. Each visit creates a click and redirects the visitor to the brand with a
clickId. - Report events for that
clickIdvia the postback endpoint. - 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-keyKeep 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/leadsHeaders
Content-Type: application/jsonx-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
| Field | Type | Description |
|---|---|---|
| firstName | string | (Required) Lead's first name |
| lastName | string | (Required) Lead's last name |
| string | (Required) Valid email address | |
| phone | string | (Required) Phone in international format |
| country | string | (Required) ISO-2 country code or name |
| offerId | uuid | Target offer (selects the advertiser) |
| brokerId | uuid | Specific broker to route to |
| lpName | string | Landing page name |
| password | string | For auto-login at the brand, if used |
| lang | string | Lead language (e.g., "en") |
| affSub … affSub4 | string | Your sub-IDs for reporting |
| source | string | Free-text traffic source |
| ip | string | Lead'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": "…"
}
}Get a Tracking Link
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_UUIDReport 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/postBackExample 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
| Field | Type | Description |
|---|---|---|
| clickId | uuid | (Required) The clickId from the tracking redirect |
| status | enum | (Required) One of: click_landed, lead, ftd, ngr_update |
| playerId | string | (Required) Your unique player/user id for this visitor |
| amount | number | Deposit amount. Required when status=ftd |
| affSub … affSub5 | string | Optional sub-IDs passed through for your reporting |
Statuses
| Status | Meaning |
|---|---|
| click_landed | Landing page reached |
| lead | Registration |
| ftd | First-time deposit (send amount) |
| ngr_update | Net 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/conversionsHeaders
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
| Field | Type | Description |
|---|---|---|
| from | ISO 8601 | Start of the time range (e.g., "2026-01-01T00:00:00Z") |
| to | ISO 8601 | End of the time range |
| offer_id | uuid | Filter to a single offer |
| limit | integer | Page size, max 100 |
| cursor | string | next_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" } }.
| Status | Code | Meaning |
|---|---|---|
| 401 | MISSING_API_KEY | No API key was provided |
| 401 | INVALID_API_KEY | The API key is not valid |
| 403 | INSUFFICIENT_SCOPE | The key lacks the required scope |
| 403 | IP_NOT_ALLOWED | The request IP is not allowlisted |
| 429 | RATE_LIMITED | Too 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.