AdPlusMedia Docs
Docs API Reference

Offerwall API

This is the endpoint our hosted offerwall calls to render itself. It returns a richer object than the Offers API, including per-offer goals, and it is the right choice when you are building a custom wall that mirrors ours.

Endpoint

GET http://adplusmedia.com/api/v1/offers-iframe/[APP_ID]/[USER_ID]

Authentication

This endpoint does not take an API key. Access is authorised by the placement itself: the app must exist and its status must be Active.

Because there is no key, anyone who knows your app ID can read this feed. Do not treat the response as confidential, and never expose internal pricing you would not want a competitor to see.

Query parameters

ParameterRequiredDescriptionDefault
selected_platform No Filter to one platform. Accepts ios, android, desktop or web. Detected from the user agent
lang No Two-letter language code for offer titles and descriptions. Parsed from Accept-Language

Example

bash
curl "http://adplusmedia.com/api/v1/offers-iframe/1042/user_8837?selected_platform=android&lang=de"

Response

json
{
      "offers": [
        {
          "id": 4821,
          "name": "Puzzles & Survival",
          "offer_type": "offer",
          "description": "Reach castle level 10 and claim your reward.",
          "short_description": "Reach castle level 10.",
          "instructions": "Install, then reach castle level 10 within 14 days.",
          "requirements": "New users only.",
          "image": "https://cdn.example.com/offers/4821.png",
          "payout": "21.00",
          "points": 1260,
          "reward": 1260,
          "devices": [
            "android"
          ],
          "goals": [
            {
              "id": 1,
              "name": "Install the game and play for 1 minute",
              "payout": 1,
              "reward": 60
            },
            {
              "id": 2,
              "name": "Reach castle level 10",
              "payout": 20,
              "reward": 1200
            }
          ],
          "favorite": false,
          "isPremium": false,
          "is_game": 1,
          "incent": 1,
          "offerwall_enabled": 1,
          "url": "http://adplusmedia.com/api/redirect/eyJpdiI6IlZ4..."
        }
      ]
    }

Offer object

FieldTypeDescription
idIntegerUnique offer ID.
nameStringOffer title, localised when lang is supported.
offer_typeStringOffer category.
descriptionStringFull description.
short_descriptionStringCondensed description for tight layouts.
instructionsStringWhat the user has to do to convert.
requirementsStringEligibility rules.
imageStringOffer icon URL.
payoutStringTotal payout in USD across all goals.
pointsNumberTotal reward in your virtual currency.
rewardNumberReward amount for the offer.
devicesArraySupported devices.
goalsArrayIndividual milestones. Empty for single-step offers.
favoriteBooleanWhether this user has favourited the offer.
isPremiumBooleanWhether the offer is flagged as premium.
incentInteger1 when incentivised traffic is allowed.
offerwall_enabledInteger1 when the offer may appear on a wall.
urlStringEncrypted redirect URL bound to the user ID in the request path.

Multi-step goals

When goals is non-empty, the user is rewarded incrementally. Each goal fires its own conversion and therefore its own postback, so the same user can generate several credits from one offer.

Show the goal list in your UI. Offers with visible milestones convert substantially better than a single large payout with no intermediate feedback.

Do not sum goals[].reward and credit it up front. Credit each goal only when its postback arrives — users frequently complete the first milestone and stop.

Errors

StatusBodyCause
400Missing parametersApp ID or user ID absent from the path.
404App Not FoundNo placement matches the given app ID.
403App Not ActiveThe placement is disabled, pending, rejected or deleted.