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 |
| N/A | 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