Skip to main content
Version: 3.x

Eligibility check

Use this endpoint to check whether a user currently has a survey offer available before you show them a call-to-action. It returns a simple has_offer true/false plus the links you need to send the user into (or away from) the offer.

POST https://www.tapresearch.com/supply_api/v4/surveys/offer

All requests must be made over HTTPS.

Request​

Send the parameters as form-encoded body fields, or as a JSON body.

ParameterTypeRequiredDescription
user_identifierStringYesYour persistent, unique identifier for this user.
api_tokenStringYesThe API token for your app, found in the Publisher Dashboard. Must belong to an app created with the Eligibility API type.
client_ipStringYesThe end user's IP address.
placement_tagStringNoTag of the survey wall placement to check.
attributes_hashObjectNoCustom user attributes for segmentation.
device_identifierStringNoThe user's device identifier, if you have one.

Example request​

curl -X POST https://www.tapresearch.com/supply_api/v4/surveys/offer \
-d "user_identifier=user-12345" \
-d "api_token=your-api-token" \
-d "client_ip=203.0.113.42"

Response​

The response is a JSON object. has_offer is the field to branch on; the URLs and message_hash are only returned when has_offer is true.

FieldTypeDescription
has_offerBooleantrue if the user has an offer available, false otherwise.
offer_reasonIntegerA code explaining the result. Always present. See Reason codes.
reason_commentStringHuman-readable explanation of offer_reason. Always present.
offer_urlStringThe URL to send the user to in order to start the offer. Present when has_offer is true.
abandon_urlStringThe URL to send the user to if they decline or abandon the offer. Present when has_offer is true.
message_hashObjectThe reward range for this user. Present when has_offer is true. See message_hash below.

message_hash​

The reward range to display to the user, in your currency.

FieldTypeDescription
minStringMinimum reward amount, in your currency.
maxStringMaximum reward amount, in your currency.
currencyStringThe name of the currency the user earns.

Example response — offer available​

{
"has_offer": true,
"offer_reason": 0,
"reason_comment": "Qualified",
"offer_url": "https://www.tapresearch.com/router/offers/8f14e45fceea167a5a36dedd4bea2543/pre_entry?sdk=false&uid=user-12345&...",
"message_hash": {
"min": "10",
"max": "700",
"currency": "gold"
},
"abandon_url": "https://www.tapresearch.com/router/offers/8f14e45fceea167a5a36dedd4bea2543?tid=...&uid=user-12345"
}

Example response — no offer​

{
"has_offer": false,
"offer_reason": 19,
"reason_comment": "No content available"
}

Using the response​

  • has_offer: true — Show your call-to-action and link the user to offer_url. Use message_hash to display the reward range (for example, "Earn 10–700 gold"). If the user backs out, send them to abandon_url.
  • has_offer: false — Do not show the call-to-action. There is nothing for the user to do right now.

When the user completes the offer, TapResearch reports the reward to your server through a postback.

Reason codes​

Every response includes offer_reason (an integer) and a matching reason_comment. Branch on the code, not the comment text. Common values:

CodeMeaning
0Qualified — an offer is available (has_offer: true)
1Not qualified — no surveys available for this user right now
2App is in test mode — only registered test devices are eligible
4Not a supported country
5User is under the supported age
8User is banned
19No active offers available
20User identifier is an anonymous device advertising ID, not a real user ID
22User is blacklisted
23User doesn't meet the placement's targeting criteria, such as your segmentation attributes
24No currency is set up for the offer

This is the common subset; other codes may appear.

Errors​

Errors return a JSON error message with an HTTP status:

StatusMeaning
401Missing or invalid API token.
422Invalid or missing request parameters.
503Temporarily unavailable.