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

Publisher Survey API

Use this API to fetch available surveys and send users into them. Call it, get back a list of surveys with a ready-to-use link per survey, and build your own UI around it.

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 Surveys

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

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. Must stay stable per user — used to avoid re-showing surveys they've already taken.
country No ISO country code (e.g. "US", "IN"). If omitted, detected automatically from the request's IP address.
{
    "userId": "user_12345",
    "country": "IN"
}

Response — 200 OK

{
    "success": true,
    "userId": "user_12345",
    "country": "IN",
    "surveyCount": 23,
    "surveys": [
        {
            "id": "eyJpdiI6...opaque-token...",
            "name": "Survey",
            "reward": 1.24,
            "description": "~10 min, 55% qualify",
            "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
surveys[].id Opaque identifier for this survey. Unique per survey, stable for the life of that survey, but not decodable — treat it as an arbitrary string.
surveys[].reward What the user earns for completing it, in USD, already after your commission.
surveys[].description Free-text hint (typically duration and/or qualification rate) — format isn't guaranteed, don't parse it programmatically.
surveys[].category Array of classification tags (e.g. survey, games, dating). Only populated for custom offers — an empty array for every other survey source, not a sign of missing data.
surveys[].trafficType incent or non_incent. Only populated for custom offers — null for every other survey source, not a sign of missing data.
surveys[].entryUrl Send the user to this URL (new tab / WebView / redirect) to start the survey. Do not construct or modify this URL yourself — always use the exact value returned.
An empty surveys array (with surveyCount: 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 a survey

Open entryUrl directly (new tab, in-app browser, or a redirect from your own backend — whichever fits your app). It will:

  1. Record the click against your publisher account.
  2. Redirect the user to the actual survey.

No further action needed from you at this step.

Getting notified on completion

Unchanged from your existing integration: when the user completes (or is screened out of) a survey, 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

This API doesn't introduce a second postback mechanism — it's the exact same notification you already receive from every other Lootwalls integration.

Example Flow

Your backend                          Lootwalls
     |                                    |
     |--- POST /api/v1/publishers/surveys ->|   (Bearer + X-Api-Secret)
     |<-- { surveys: [...] } ---------------|
     |                                    |
  (show surveys in your own UI)
     |                                    |
  user clicks a survey
     |                                    |
     |--- open entryUrl ------------------>|   (click recorded, redirected to real survey)
     |                                    |
  (user completes the survey on the network's own site)
     |                                    |
     |<-- POST {your postback_url} --------|   (payout, status, transaction_id)

Notes