API Integration (Advanced)
Get Personalized API - Technical Docs
Quick start
Endpoint
Method: GET. HTTPS is required.
Authentication
This endpoint is scoped to your wall and the user you request — no API key is required. You identify the request with two values:
Item | Where it goes | Notes |
|---|---|---|
| Path | The user identifier from your integration. |
| Query parameter | Your numeric offer wall ID. |
Request parameters
Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| path | string | Yes | The user's identifier in your integration (ASCII). |
| query | integer | Yes | Your offer wall ID. |
| query | integer | Yes | How many top-ranked offers to return (1–500). |
| query | string | No | Your session/correlation token. It is embedded into the returned |
| query | string | No |
|
| query | string (IPv4) | No | Client IP for geo evaluation. Defaults to the caller's IP; set it when calling server-side. |
| query | number | No | The requesting device's OS version (e.g. |
| query | boolean | No | When true, include |
| query | number | No | Exclude offers whose reward value is below this floor. |
| query | string | No | An experiment identifier echoed back in the response. |
Ranking and how many you get
numoffers controls how many offers you receive, returned in ranked order (best first). Each offer's position is also given explicitly as hot_offers_order. The response reports total — the number of eligible offers for the user before the numoffers cut — so you can tell how deep the user's eligible pool is. This endpoint returns the top N; it is not a paged feed (offset is always 0).
The response
A successful request returns status: "success" and a ranked offers list.
Field | Type | Description |
|---|---|---|
| string |
|
| integer | Your affiliate (publisher) ID. |
| integer | The wall the request was for. |
| integer | A reference ID for this request, useful when contacting support. |
| integer | Eligible offers for the user before the |
| integer | Always |
| integer | The number of offers returned (equals |
| string | null |
| number | null |
| array | The ranked offers (see below). |
The offer object
Each entry in offers[] describes one offer. The content, categorization, and reward fields match the Get Offers API; the remaining fields add per-user context.
Identity & content
Field | Type | Description |
|---|---|---|
| integer | Unique offer identifier. |
| string | Internal/campaign name. |
| string | Short marketing headline. |
| string | Longer description. Display this to the user. |
| string | Terms and requirements. Display this to the user. |
| string | Optional campaign label. |
Categorization
Field | Type | Description |
|---|---|---|
| string | Category label: |
| integer | Internal content category (0–11): 0 Undefined, 1 Casino/Gambling, 2 Loyalty Offers, 3 Non Branded Submits, 4 Games, 5 Trial/Purchase, 6 Surveys, 7 Branded, 8 Mobile – Non Gaming, 9 Alcohol/Tobacco/Drugs, 10 Other Mature, 11 Social Casinos. |
Rewards & events
Field | Type | Description |
|---|---|---|
| number | Total virtual currency the user can earn across all events (sum of |
| number | Your total payout for the offer in USD (sum of |
| integer | Base attribution window in days (events may override). |
| array | The reward steps (see below). |
Each event in events[]:
Field | Type | Description |
|---|---|---|
| string | Identifier for this step, used for tier-level postback tracking. The base step is |
| string | What the user must do for this step. |
| number | Virtual currency awarded to the user for this step. |
| number | Your payout for this step (USD). |
| integer | Internal classification of the conversion. |
| integer | Attribution window for this event, in days. |
| integer |
|
| boolean |
|
The click URL
Field | Type | Description |
|---|---|---|
| string | A complete, user-specific tracking URL. Serve it as-is — do not edit it. If you passed |
Unlike the Get Offers API (which gives a click_url_base template you complete per user), this URL is already personalized for the user you requested.
Per-user status
These fields reflect the requested user's relationship to the offer and are returned when available.
Field | Type | Description |
|---|---|---|
| boolean | Whether the user is eligible for the offer. |
| boolean | Whether the user has started the offer. |
| boolean | Whether the user has completed the offer. |
| number | The personalization score used in ranking. |
| integer | The offer's rank in this response (lower is higher-ranked). |
| string | null |
When you request include_sortmetric=true, each offer may also include sortmetric and conversion_rate.
Mobile, performance & creatives
Field | Type | Description |
|---|---|---|
| string | null |
| number | Historical earnings per click (network-wide, last 7 days). |
| string | Expected tracking delay: |
| array | Images, each with |
Handling banned or ineligible users
If the user (or their IP) is banned, the endpoint returns HTTP 403 with a structured error you can branch on:
error.code is USER_BANNED or IP_BANNED. This makes the endpoint a convenient ban check for support workflows: a 403 with one of these codes is a definitive "do not serve."
Best practices
Call on demand, don't store. Results are user- and moment-specific; fetch them when you're about to render, rather than caching per user.
Prefer client-side calls so device and IP are auto-detected; if you must call server-side, pass
deviceandipthat match the real client.Serve
click_urlunmodified. It is already personalized for the user.Use the per-user status (
in_progress,user_completed) to tailor the UI — for example, surfacing progress or hiding finished offers.Handle
403bans explicitly usingerror.code.Display
descriptionandoffer_termsso users understand what's required to earn the reward.
Errors
HTTP | Shape | Example | Meaning |
|---|---|---|---|
400 |
|
| Missing or invalid parameter (e.g. |
403 |
|
| The user or IP is banned. |
404 |
|
| Resource not found or nothing eligible. |
500 |
| — | Unexpected server error. |
Support
For technical questions, contact your account manager or sales contact. Include the support_id from the response when reporting an issue.
Share feedback on this documentation