Offerwall
HTML (iframe version)
Publisher Survey API
Survey API
Publisher Offer API
Offer API
Postbacks
Postback
Addons
Content Locker Link Locker

Publisher Offer API

Use this API to fetch available offers and send users into them. Call it, get back a list of offers with a ready-to-use link per offer, and build your own UI around it. Separate from the Survey API — offers are one-time CPA/CPI actions, not multi-question surveys.

Prerequisites

Authentication

Every request requires both:

Authorization: Bearer {your_api_key}
X-Api-Secret: {your_api_secret}

Requests missing either header, or with an invalid key/secret pair, get 401 Unauthorized.

List Offers

POST https://lootwalls.com/api/v1/publishers/offers

Headers

Authorization: Bearer {apiKey}
X-Api-Secret: {apiSecret}
Content-Type: application/json

Body

Field Required Description
userId Yes Your own identifier for this end user.
{
    "userId": "user_12345"
}

Response — 200 OK

{
    "success": true,
    "userId": "user_12345",
    "offerCount": 14,
    "offers": [
        {
            "id": "eyJpdiI6...opaque-token...",
            "name": "Offer",
            "reward": 1.20,
            "description": "Complete a quick offer",
            "logo": "https://lootwalls.com/icons/surveyicon.jfif",
            "category": ["survey"],
            "trafficType": "incent",
            "entryUrl": "https://lootwalls.com/api/v1/publishers/redirect/eyJpdiI6...?apiKey=...&userId=user_12345"
        }
    ]
}
Field Description
offers[].id Opaque identifier for this offer. Unique per offer, stable for the life of that offer, but not decodable — treat it as an arbitrary string.
offers[].reward What the user earns for completing it, in USD, already after your commission.
offers[].category Array of classification tags (e.g. survey, games, dating). Only populated for custom offers — an empty array for every other offer source, not a sign of missing data.
offers[].trafficType incent or non_incent. Only populated for custom offers — null for every other offer source, not a sign of missing data.
offers[].entryUrl Send the user to this URL (new tab / WebView / redirect) to start the offer. Do not construct or modify this URL yourself — always use the exact value returned.
An empty offers array (with offerCount: 0) is a normal response, not an error — show an empty state, not an error page.

Errors

Status Meaning
401 Missing or invalid Authorization/X-Api-Secret headers.
400 userId missing or empty.

Sending the user into an offer

Open entryUrl directly (new tab, in-app browser, or a redirect from your own backend). It will record the click against your publisher account and redirect the user to the actual offer.

Getting notified on completion

Unchanged from your existing integration: when the user completes an offer, Lootwalls calls your postback_url — the same one already configured on your publisher app — with the usual macros substituted:

{user_id}        your userId for this user
{payout}         amount earned (0 if not approved)
{status}         1 = approved, 0 = rejected/reversed
{transaction_id} unique id for this completion

Notes