Introduction
Welcome to the Qurated API!
The Qurated API allows you to easily integrate surveys in to your platform. Surveys can be accessed in 3 different ways:
- The Qurated Offerwall - Simply place the widget on to your site and leave the heavy lifting to us.
- Fetch surveys with an API call - Use your API key to get a list of surveys for a user.
- URL to redirect users to the best current survey - Create a url for a user with given parameters, users clicking on the link will be taken to the best matching survey at the time. Ideal for emails and notifications.
Before your users start taking surveys, make sure your endpoints are configured. This allows us to let you know your users have completed surveys and are redirected to the right place.
Authentication
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl "https://api_endpoint_here"
-H "Authorization: Basic $(echo -n secret:secret | base64)"
Make sure to replace
secret
with your API key.
Authentication is done via basic auth
. The provided API key is used as both username and password.
Authorization: Basic $(echo -n secret:secret | base64)
Qurated Offerwall
What is the Offerwall?
If you don't want to display survey data yourself you can simply drop the offerwall js widget in to your existing site.
Prerequisites
- Qurated API key (Contact us to get one)
- An existing user base
- A website that can integrate with our APIs serverside
Offerwall Flow
Authenticating your user with Qurated
When a user comes to your site and wants to complete surveys, you need to generate an access token for that individual. This is done by calling https://studies.qurated.ai/user/access_token
with your unique identifier for your user (ID, UUID, GUID) and the user's country code.
It is also possible to include a user's demographic data when creating an access token to be used for new users. You can read about this in the User Demographic passing section.
Note: The access token must be generated server side
curl -X GET "https://studies.qurated.ai/user/access_token?api_key=$apikey&guid=$guid&country=$country"
Generate an access token for your user
Note: the country param is the ISO 3166-1 alpha-3 for the country.
Providing the user access token to the offerwall widget
Once you have a user's access token it needs to be given to the widget so it can fetch surveys for this user. The example HTML needs to be added to your site with the $token
replaced with the user's token you got from the previous step.
Once these two steps are done user's will be able to see surveys.
<div id="ow-root"></div>
<script src="https://offerwall.qurated.ai/widget.js?authtoken=$TOKEN" id="qurated-studies"></script>
These tags need to be added to your HTML with the token you received from the API
Creating a postback API
The last step is to provide a 'postback' API that we can send events to so that you know when a user completes a survey and what their reward was. This is all detailed here.
Offerwall widget in React
If you want to use the widget in a React app there are a few different ways to achieve this.
Custom react hook
Create a hook that will import a script and assign it an ID of qurated-studies
.
import { useEffect } from 'react';
const useImportScript = resourceUrl => {
useEffect(() => {
const script = document.createElement('script');
script.src = resourceUrl;
script.async = true;
script.id = 'qurated-studies';
document.body.appendChild(script);
return () => {
document.body.removeChild(script);
}
}, [resourceUrl]);
};
export default useImportScript;
The custom React hook
You can then use this hook with the user's JWT to fetch surveys.
import React from 'react';
import useImportScript from './importScript';
const Offerwall = () => {
let userToken = getUserToken(); // You need to define this
useImportScript(`https://offerwall.qurated.ai/widget.js?authtoken=${userToken}`);
return (
<div className="App">
<div id="ow-root" ></div>
</div>
)
}
export default Offerwall;
Using the hook
Using the react-script-tag package
The react-script-tag package can be used to insert scripts in to your react app.
import React from 'react';
import ScriptTag from 'react-script-tag';
const Offerwall = () => {
let userToken = getUserToken(); // You need to define this
return (
<div className="App">
<div id="ow-root" ></div>
<ScriptTag id="qurated-studies" type="text/javascript" src={`https://offerwall.qurated.ai/widget.js?authtoken=${userToken}`} />
</div>
)
}
export default Offerwall;
Using the react script tag package
Configuring the Offerwall
It is possible to set several different configuration options when adding the Offerwall to your site.
In order to do this, include the optional parameters described below in the querystring, after your authToken
and appended with &
.
<div id="ow-root"></div>
<script src="https://offerwall.qurated.ai/widget.js?authtoken={token}¬ification_position=top-right&hide_filter_buttons=true&max_survey_number=6" id="qurated-studies"></script>
Script Parameters
Parameter | Description | Permitted Values | Default Value |
---|---|---|---|
notification_position | Set where the notification card will appear on screen. | 'top-left' 'top-right' 'bottom-left' 'bottom-right' | 'top-right' |
hide_filter_buttons | Hide the Webcam and PII buttons and filter out those surveys | false | |
max_survey_number | Set the maximum number of surveys to show on the Offerwall | Positive integers | Not set |
Surveys
List available surveys - API key
curl "https://studies.qurated.ai/f0ad37b292a39ad86a0e6a95f43bfc53?user_agent=Mozilla&user_ip=192.168.1.1&webcam=true&collects_pii=true"
-H "Authorization: Basic $(echo -n secret:secret | base64)"
-X GET
The above command returns JSON structured like this:
[
{
"id": "936c3509623a",
"category": "Market topics",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/57-385cbc592f275441abaada185b52562a.jpg",
"cpi": "57",
"loi": "20",
"flags": "hot",
"url": "https://router.qmree.com/surveys/9c4c006ce88f536c"
},
{
"id": "bbaf70a16737",
"category": "Automotive",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/12-08341236ad154579424b753370275921.jpg",
"cpi": "102",
"loi": "24",
"flags": "hot,webcam",
"url": "https://router.qmree.com/surveys/b791afa5334ac807"
},
{
"id": "237d80ca0b95",
"category": "Food",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/164-82e7dd37cf9ee7ad7e2118c543888b72.jpg",
"cpi": "39",
"loi": "5",
"flags": "recontact",
"url": "https://router.qmree.com/surveys/d592934163dd5669"
},
{
"id": "21b42e5ce95a",
"category": "Consumer trends",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/59-bac1e55757c34ead0f700872db92ada4.jpg"
"cpi": "92",
"loi": "10",
"flags": "",
"url": "https://router.qmree.com/surveys/79445bc985cb2ea5"
}
]
This endpoint returns a ranked list of available surveys.
The results from this endpoint should be updated frequently, ideally every 1-2 minutes, and after every survey start to ensure the latest list is presented.
HTTP Request
GET https://studies.qurated.ai/:guid?user_agent=:user_agent&user_ip=:user_ip&webcam=:webcam
URL Parameters
Parameter | Description |
---|---|
guid | The guid previously provided of the user to get surveys for |
user_agent | The current user agent of the user |
user_ip | The current ip of the user |
webcam | Return webcam surveys: true/false (Default: true) |
collects_pii | Return surveys that collect PII: true/false (Default: true) |
List available surveys - JWT
If you wish to consume the API through your front end you can create a JWT for your user to use as the authentication. Allowing your API key to remain secret.
To create a JWT for a user follow the process listed here
curl --location --request GET 'https://studies.qurated.ai/studies' \
--header 'Authorization: Bearer <USER_JWT>'
The above command returns JSON structured like this:
[
{
"id": "936c3509623a",
"category": "Market topics",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/57-385cbc592f275441abaada185b52562a.jpg",
"cpi": "57",
"loi": "20",
"flags": "hot",
"url": "https://router.qmree.com/surveys/9c4c006ce88f536c"
},
{
"id": "bbaf70a16737",
"category": "Automotive",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/12-08341236ad154579424b753370275921.jpg",
"cpi": "102",
"loi": "24",
"flags": "hot,webcam",
"url": "https://router.qmree.com/surveys/b791afa5334ac807"
},
{
"id": "237d80ca0b95",
"category": "Food",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/164-82e7dd37cf9ee7ad7e2118c543888b72.jpg",
"cpi": "39",
"loi": "5",
"flags": "recontact",
"url": "https://router.qmree.com/surveys/d592934163dd5669"
},
{
"id": "21b42e5ce95a",
"category": "Consumer trends",
"categoryImage": "https://d1s51etp8bktk6.cloudfront.net/images/59-bac1e55757c34ead0f700872db92ada4.jpg"
"cpi": "92",
"loi": "10",
"flags": "",
"url": "https://router.qmree.com/surveys/79445bc985cb2ea5"
}
]
URL Parameters
Parameter | Description |
---|---|
webcam | Return webcam surveys: true/false (Default: true) |
collects_pii | Return surveys that collect PII: true/false (Default: true) |
JSON Response Object
Field | Description |
---|---|
id | The identifier for the survey invite. Use this id to follow up on any issues reported with the survey. This id will be unique for this user and survey and will be returned in redirects and server to server calls. |
category | The category of the survey (*see below for a list of all possible categories) |
categoryImage | A suggested image for the category (not required to be used) |
cpi | The amount in cents paid on successful completion of the survey |
loi | The length in minutes of the survey |
flags | Additional data about the survey, comma seperated (*see below for a list of possible values) |
url | The url to redirect the user into to start the survey (This url will expire in 5 minutes and is single use) |
reward | The suggested remuneration for the end user |
formattedReward | The suggested remuneration for the end user as a formatted currency string |
Survey flags
Flag | Description |
---|---|
hot | Survey has a very high likelyhood of completion by the user |
webcam | Requires a webcam to complete the survey |
collects_pii | Requires user to enter Personally Identifiable Information |
recontact | This is a follow up to a survey the user previously completed (normally 100% IR) |
screener | This will be a 0 cpi survey that is used to enable more content for the user depending on market conditions. |
Survey categories
Categories | - |
---|---|
Airlines | Household services |
Alcohol free beverages | Information technology |
Alcoholic beverages | Insurance |
Automative products | Internet providers services |
Automotive | Last nights TV |
Beer | Market topics |
Business services | Media |
Cell phones | Mobile phones |
Cereals | Movie Films |
Chocolate | Music |
Cleaning products | New products |
Coffee | Personal care |
Computer games | Pet food |
Computer products | Pet |
Consumer topics | Politics |
Consumer trends | Printers |
Cosmetics | Products for children |
Educational products | Restaurants |
Electronic products | Shopping |
Employment | Snacks |
Energy providers | Sport |
Entertainment | Sports |
Environment | Supermarkets |
Esports | Sweets |
Fashion | Technology |
Fast food | Telecommunication services |
Finance | Television |
Financial products | Tobacco |
Financial services | Transportation |
Food | Travel |
Fragrance | Trending topics |
Furniture | Universal topics |
Gambling | Universal trends |
General | Video game systems |
Health | Wellness |
Home | Wholesale |
Household appliances |
Survey Gateway
Since surveys come and go fairly quick, notifications and emails linking directly to surveys can go stale quickly. This is where Survey Gateway comes in. Generate a URL to send to your users, when they click it, it will take them to the best survey that fits the parameters.
Generating the Survey Gateway URL
curl --location --request GET 'https://studies.qurated.ai/survey-match/gateway-url?guid=:guid&country=:country_code' \
--header 'Authorization: Basic $(echo -n secret:secret | base64)'
Make a request using your API key to create a link for a user.
URL Parameters
Parameter | Description | Required |
---|---|---|
guid | The guid of your user | true |
country | The country code of your user (USA, GBR, etc) | true |
min_cpi | The minimum CPI in cents for the surveys returned by the URL | false |
max_cpi | The maximum CPI in cents for the surveys returned by the URL | false |
min_loi | The minimum LOI in minutes for the surveys returned by the URL | false |
max_loi | The maximum LOI in minutes for the surveys returned by the URL | false |
note: LOI times are based on average completion times
Response
https://studies.qurated.ai/survey-match/redirect?token=eyJhbGciOiJIUzI1NiJ9.eyJwYW5lbEd1aWQiOiIyIiwic3ViIjoiMSIsImNvdW50cnlDb2RlIjoiR0JSIiwicHJvdmlkZXIiOiJzdG9wX2JlaW5nX25vc3kiLCJzdXJ2ZXlGaWx0ZXJzIjp7Im1pbkNwaSI6IjUwIiwibWF4Q3BpIjpudWxsLCJtaW5Mb2kiOm51bGwsIm1heExvaSI6bnVsbH0sImF1dGhvciI6InF1cmF0ZWQiLCJleHAiOjE2MzQxMzY0ODR9.i1YtxcLbU3RMbZFFjjighwaUECQjP9Zm-XvWCLl0dOs
The response will look something like this. Share this with your user and they will be taken to the best matching survey at the time they click it. The link is valid for 7 days.
Configuring your Endpoints
To integrate with Qurated you need to configure a redirect, postback and profile redirect URL. You can also set a notification endpoint but this is optional.
- The
redirect
URL you set is where user's will be redirected to after completing a survey. - The
postback
URL is where a payload detailing information about completed and terminated surveys will be sent. - The
notification
URL is where we will post you a list of user guids that have been identified as a good match for a survey. This endpoint is optional. - The
user_banned
URL is where we will post any users that we have identified as being fradulent and have banned from taking surveys. This endpoint is optional. - The
profile_redirect
URL is where the user should be redirect after - The
profiler_postback
URL is where a payload detailing information about started and completed profiler surveys will be sent. This endpoint is optional.
Setting Endpoints
curl --location --request PUT 'https://panel-provider.qurated.ai/provider/endpoints' \
--header 'Authorization: Bearer secret' \
--header 'Content-Type: application/json' \
--data-raw '{
"redirect": "https://test.com/%status%/%guid%/%study_id%",
"postback": "https://test.com/postback",
"notification": "https://test.com/notification",
"user_banned": "https://test.com/user_banned",
"profile_redirect": "https://test.com",
"profiler_postback": "https://test.com/profiler"
}'
The above command expects JSON structured like this in the body:
{
"redirect": "test.com/%status%/%guid%/%study_id%",
"postback": "test.com/postback",
"notification": "test.com/notification",
"user_banned": "test.com/user_banned",
"profile_redirect": "test.com",
"profiler_postback": "test.com/profiler"
}
This endpoint allows programmatic setting of the redirect endpoints users will be sent to on returning from a survey
Failures can immediately be communicated back to the user, but completes should wait for verification via the server to server postback method.
HTTP Request
PUT https://panel-provider.qurated.ai/provider/endpoints
JSON Object
Field | Required | Description |
---|---|---|
redirect | true | The url to redirect users to on finishing the survey. Placeholders can be specified that will be substituted on redirect |
postback | true | The url to send the postback object to. Details of postback are listed below |
notification | false | The url to send notification events to |
user_banned | false | The url to send user banned notifications to |
Response Code | Meaning |
---|---|
200 | Endpoints updated successfully |
Get current configured endpoints
curl "https://panel-provider.qurated.ai/provider/endpoints"
-H "Authorization: Bearer secret"
-X GET
The above command returns JSON structured like this:
{
"redirect": "redirect.com/%status%/%guid%/%study_id%",
"postback": "postback.com/qurated_postback",
"notification": "test.com/notification",
"user_banned": "test.com/user_banned",
"profile_redirect": "test.com",
"profiler_postback": "test.com/profiler"
}
This endpoint returns the current setting for your endpoints.
HTTP Request
GET https://panel-provider.qurated.ai/provider/endpoints
Redirect
The user will be redirected backfrom the survey to your site using this link. It will contain information about the user, survey and the status.
HTTP Request
GET https://panel-provider.qurated.ai/provider/endpoints
Placeholders
Variable | Description |
---|---|
%status% | The status of the survey. See below for a list of statuses. |
%guid% | The user guid. |
%study_id% | The id of the study - this will match the id returned from the available surveys endpoint. |
Statuses
Status | Meaning |
---|---|
complete | Survey successfully completed and user can be rewarded |
terminate | Survey was rejected |
quota_full | Survey has enough respondents for the user profile |
screenout | User did not qualify for the survey |
timeout | User abandoned the survey |
fraud | Survey was rejected due to fraudulent activity (VPN/Proxy use, speeders, straightliners, gibberish, etc.) |
taken | User has already taken the survey (potentially on another platform or with a duplicate account) |
not_available | Survey not available (survey closed, full, etc.) |
used_link | Survey url has already been used to enter the survey (users cannot re enter a survey once they have attempted it) |
expired_link | Survey url has expired (old urls are likely to be for surveys that are no longer available - ensure the list of available surveys is refreshed regularly) |
Postback endpoint
Postback events can come out of order, be replayed or have future events that do not change the current state.
The rules for state transitions are as follows:
- Any Terminate status can transition to Complete.
- Complete can only transition to Terminate on
reconcile_to_terminate
- A
reconcile_to_terminate
can transition back to Complete on a laterreconcile_to_complete
- If the rejection reason is challenged and reversed.
HTTP Request
POST https://www.example.com/s2s/survey_finished
Example for an API survey listing integration
{
"guid": "f0ad37b292a39ad86a0e6a95f43bfc53",
"study_id": "237d80ca0b95",
"finished_at": "2019-05-24T15:42:04Z",
"status": "complete",
"audience_complete": false,
"cpi" : 140,
"cpi_currency": "USD",
}
Example for offerwall and gateway integrations
{
"guid": "f0ad37b292a39ad86a0e6a95f43bfc53",
"study_id": "237d80ca0b95",
"finished_at": "2019-05-24T15:42:04Z",
"status": "complete",
"audience_complete": false,
"displayed_reward": 115,
"cpi" : 140,
"cpi_currency": "USD",
"user_reward": 115
}
JSON Object
Field | Description |
---|---|
guid | The user guid |
study_id | The id of the study - this will match the id returned from the available surveys endpoint. |
finished_at | The timestamp when the user finished the survey (iso8601) |
status | The verified status of the survey attempt (see below for a list of possible values) |
cpi | The revenue you receive by your user completing this survey |
cpi_currency | The currency of the revenue (This can vary based on the survey provider) |
user_reward | User reward is in the user's home currency unless you have configured a custom currency, in which case it will be calculated using your custom currency settings |
displayed_reward | The reward that was shown to the user when they clicked it - only applicable to offerwall integrations - typically identical to user_reward |
audience_complete | Some survey providers have 'mini' surveys within a normal survey. If this is set to true, the user has completed a mini survey to earn an extra reward. |
URL Parameters
The following parameter will be added to every postback url to enable verification of source
Field | Description |
---|---|
signature | HMAC_SHA256(API_KEY, request.body) |
Status | Meaning |
---|---|
complete | Survey successfully completed and user can be rewarded |
terminate | Survey was rejected |
quota_full | Survey has enough respondents for the user profile |
screenout | User did not qualify for the survey |
timeout | User abandoned the survey |
fraud | Survey was rejected due to fraudulent activity (VPN/Proxy use, speeders, straightliners, gibberish, etc.) |
taken | User has already taken the survey (potentially on another platform or with a duplicate account) |
not_available | Survey not available (survey closed, full, etc.) |
used_link | Survey url has already been used to enter the survey (users cannot re enter a survey once they have attempted it) |
expired_link | Survey url has expired (old urls are likely to be for surveys that are no longer available - ensure the list of available surveys is refreshed regularly) |
reconcile_to_complete | Previously terminated survey has been accepted by the client and will now be paid. These events can have a delay of weeks/months. |
reconcile_to_terminate | Survey answers have been rejected by the client and will not be paid. Normally due to poor quality answers. |
Notification endpoint
This endpoint will receive a list of users matched to a high performing survey opportunity that is likely to be short lived. Notifying them to visit your site/app to attempt the survey as soon as possible will give them an opportunity to qualify for the survey before it is full. Users are likely to receive multiple opportunities throughout the day and some more than others so thought should be given to what notification strategy best suits your users in terms of frequency. These notifications are good for at most 5-10 minutes after which they will be stale and should be discarded.
HTTP Request
POST https://www.example.com/s2s/notification
{
"guids": ["f0ad37b292a39ad86a0e6a95f43bfc53", "b0ec82b563b39dd86a0e6a95f83bgc27"]
}
JSON Object
Field | Description |
---|---|
guids | A list of user guids to notify |
User Banned endpoint
The User Banned endpoint is used to notify when a user has been paused or unpaused by our fraud system. This gives visibility of why a user might not be shown surveys by our system.
HTTP Request
POST https://www.example.com/s2s/user_banned
JSON Object
Field | Description |
---|---|
guid | User guid to be paused or unpaused |
banned | For true, the user has been banned. For false, the user is no longer banned |
time | Time in UTC that the user paused or unpaused action ocurred |
{
"guid": "f0ad37b292a39ad86a0e6a95f43bfc53",
"banned": true,
"time": "2019-05-24T15:42:04Z"
}
Profile redirect endpoint
This endpoint is used to redirect a user back to your site once they have finished editing their profile using the Qurated profile page.
Profiler Postback endpoint
Profiler Postback events can come out of order or be replayed.
HTTP Request
POST https://www.example.com/profiler
Example for a Profiler start
{
"guid": "f0ad37b292a39ad86a0e6a95f43bfc53",
"status": "start",
"time": "2019-05-24T15:42:04Z",
"initial_profiler": true,
"tracking_params" : {}
}
JSON Object
Field | Description |
---|---|
guid | The user guid |
status | The type of profiler event. This will either be "start" or "complete". |
time | The timestamp for the start or finish of the profiler survey (iso8601). |
initial_profiler | Whether the user is entering our sign-up survey for being screened for further profile information. |
tracking_params | Any tracking params that were passed through by you with the user. |
URL Parameters
The following parameter will be added to every profiler postback url to enable verification of source
Field | Description |
---|---|
signature | HMAC_SHA256(API_KEY, request.body) |
Users
User Profiling
Qurated will gather demographic data on your users when you they enter a survey for the first time. Having an accurate and comprehensive demographic profile is integral to users getting the best experience from surveys.
If you would like to control the profiling flow without having to come directly to Qurated first you can use these APIs to generate links for the initial profiler and the profile page where users can edit their demographic data. These URLs could then be iframed or added as a pop-out modal without the user having to leave your site.
All this data can then be retrieved from the User profile API
Initial profiler URL
Fetch the initial profiler URL for a given user guid.
Will return a 404 if the user has already completed the initial profiler
curl "https://studies.qurated.ai/:guid/signup-survey/url?country=USA"
-H "Authorization: Basic $(echo -n secret:secret | base64)"
-X GET
Profile Page URL
Fetch profile page URL so the user can add and edit their demographic profile.
curl "https://studies.qurated.ai/:guid/profile/url?country=USA"
-H "Authorization: Basic $(echo -n secret:secret | base64)"
-X GET
Managing User Data
It might be necessary to request that a user be deleted or their most sensitive data be removed from the Qurated system. This allows your organisation to be compliant of data and privacy laws such as GDPR and CCPA.
Deleting a User
curl "https://demographics.qurated.ai/users/:guid/full-profile"
-H "Authorization: Bearer secret"
-X DELETE
This endpoint will remove all profile data about a requested user and opt them out of surveys.
HTTP Request
DELETE https://demographics.qurated.ai/users/:guid/full-profile
Authentication
Authentication is done via bearer token
. The provided API key is used as the bearer token.
Authorization: Bearer secret
Deleting sensitive User data
To authorize, use this code:
curl "https://demographics.qurated.ai/users/:guid/sensitive-data"
-H "Authorization: Bearer secret"
-X DELETE
This endpoint will remove sensitive data for a user, which includes information such as Ethnicity, Religion and Medical Conditions but will not opt them out of surveys.
HTTP Request
DELETE https://demographics.qurated.ai/users/:guid/sensitive-data
Authentication
Authentication is done via bearer token
. The provided API key is used as the bearer token.
Authorization: Bearer secret
Get a User's Profile
To authorize, use this code:
curl "https://demographics.qurated.ai/users/:guid/demographics"
-H "Authorization: Bearer secret"
-X GET
Make sure to replace
secret
with your API key.The above command returns JSON structured like this:
[
{
"question": {
"key": "1",
"label": "Postcode"
},
"answers": [
{
"key": "1-1",
"label": "90210"
}
]
},
{
"question": {
"key": "2",
"label": "Which, if any, of these drinks have you consumed in the past four weeks?"
},
"answers": [
{
"key": "2-1",
"label": "Fruit drinks/juices"
},
{
"key": "2-2",
"label": "Flavored malt beverages or wine coolers"
},
{
"key": "2-3",
"label": "Pre-mixed packaged spirits/flavored alcoholic beverages"
},
{
"key": "2-4",
"label": "Coffee"
}
]
}
]
This endpoint allows you to query a user's profile data using their user guid and your api key. The returned data is an array of objects, containing a question object and answers array. If you have provided your own set of keys for questions and answers, they will be included in the JSON response. For any questions a user has answered, but no question or answer key is provided, the description of the question or answer will still be provided.
HTTP Request
GET https://demographics.qurated.ai/users/:guid/demographics
Authentication
Authentication is done via bearer token
. The provided API key is used as the bearer token.
Authorization: Bearer secret
Passing in User Demographics
It is possible to pass some demographic information about a user to pre-fill the Sign up Survey. This will allow information users have already entered to be automatically added to their profile. In order to pass in User Demographics a mapping file needs to be generated, allowing your stored questions and answers to be converted into a form Qurated can use. Contact the Qurated team for help with generating this file. Because this information is used to pre-fill the Sign up survey, it is only necessary to send user demographics for a User that has not filled out the Sign up survey. You can check if a user has done this by querying the profile endpoint.
Offerwall User Demographics
When using the Offerwall, user demographics can be passed in using the access token that is given to the widget.
Generating the Access Token
Look at the section on Authenticaing your user to learn how to generate the access token.
When creating the access token, append key-value pairs of your question and answer codes as parameters to the URL. For questions with multiple answers, concatenate using a "," delimiter.
Example for generating Offerwall access token with user demographics appended as URL parameters
curl -X GET "https://studies.qurated.ai/user/access_token?api_key=$apikey&guid=$guid&country=$country&question_id_1=answer_1&question_id_2=answer_2,answer_3&question_id_3=answer_4"
Survey Gateway User Demographics
When using the Survey Gateway, append key-value pairs of your question and answer codes as parameters to the URL. For questions with multiple answers, concatenate using a "," delimiter.
Example for Survey Gateway query with user demographics appended as URL parameters
curl --location --request GET "https://studies.qurated.ai/survey-match/gateway-url?guid=$guid&country=$country_code&question_id_1=answer_1&question_id_2=answer_2,answer_3&question_id_3=answer_4" \
--header 'Authorization: Basic $(echo -n secret:secret | base64)'
Errors
The Qmree API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- JSON body or parameter is malformed or cannot be understood |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- Your request was blocked. |
404 | Not Found -- The specified user profile could not be found. |
405 | Method Not Allowed -- You tried to use an unsupported method. |
406 | Not Acceptable -- The request included unsupported options. |
422 | Unprocessable Entity -- JSON body contains unexpected or missing fields. Inspect the json response for details. |
429 | Too Many Requests -- Your request was rate limited! Slow down! |