Audience API Overview
Last Updated: 4/26/2024
Welcome to the DISQO Audience API documentation. This API allows you to manage Projects, Quotas, and Included and Excluded Users. A Project represents a study for which a company seeks to gather qualified panelists. Quotas belong to Projects, and define criteria that matches members of the DISQO panelist pool with qualifying projects. Included and Excluded Users enables including or excluding panelists from Projects.
You can run the requests included in this documentation using Postman, a third-party tool. Download Postman prior to clicking the button below.
Base URL
The following are the base URLs for the Audience API.
Environment | URL |
---|---|
PROD | https://projects-api.audience.disqo.com |
DEMO | https://projects-api.audience.disqo-demo.com |
DEMO
is a sandbox environment that can be used for testing. You will need credentials to access it. Credentials can be requested by contacting your integration contact.
In this documentation, the base URL will appear as the variable {baseUrl}
.
The feasibility request uses the base URL https://feasibility-api.audience.disqo.com
.
The custom questions requests use the base URL https://custom-questions-api.audience.disqo.com
.
Requests
The DISQO Audience API is RESTful and uses the methods POST
, GET
, PUT
, and DELETE
.
Responses
Responses are returned in JSON format.
Info Endpoint
The following is a sample health request.
curl -X GET \
'{baseUrl}/v1/info'
To ensure Audience API is reachable, you can issue a simple test request that will respond with the current version and date of deployment.
This section outlines each of the fields that appear in the Info response object
Attribute | Type | Description |
---|---|---|
version | string | Unique hash identifier of current version. |
timestamp | datetime | Date of last released update of the API. |
Authentication
The following is a sample request using base64 authentication.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects' \
-H 'Authorization: Basic {base64Key}'
The following is a sample request using login authentication. Note that the
username
is the same as yourclientId
.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects' \
-u '{clientId}:{API Key}'
Requests can be authenticated using a base64 value handed in cURL requests as a basic authorization header.
Alternatively, in the login format of -u '{username}:{password}'
, your clientId
will be the username
and the API Key
will be the password
.
How to Get a Base64 Value
To obtain a base64 value, fill in values for the clientId
and API Key
in the following command. Run this command in terminal. The result will be a base64 key that is used in all requests.
echo -n {clientId}:{API Key} | base 64
In the rest of the sample cURL requests, we refer to the base64 key as base64Key
. Replace this variable with the output of the echo command above.
How to Obtain a Client Key
A clientId
and API Key
will be provided to use the API. If these values are not provided, request them from your integration contact. Use your clientId
as both your username
when making API requests, and as the clientId
in any requests that require a clientId
in the URL path.
Errors
The Audience API uses standard HTTP status codes, and provides an additional errorCode
and message
.
HTTP Status | Message | Description |
---|---|---|
400 | Bad Request | The server could not understand the request. Correct the request syntax before re-trying. |
401 | Unauthorized | The request must include valid authentication. Refer to the Authentication section for more information. |
403 | Forbidden | The server understood the request but refused it. |
404 | Not Found | The requested resource was not found. Check that the URL is properly formed and that the route exists. |
409 | Conflict | There was a determined conflict and the request could not be processed. Check that the resource does not already exist before re-trying. |
The following is an example of an error response.
[
{
"errorCode": "003",
"message": "Project record could not be found under specified clientId."
}
]
In addition to standard HTTP error codes, we return a JSON object with an errorCode
and message
.
errorCode | Error Type | Description |
---|---|---|
001 | EMPTY_REQUIRED_FIELD_FAIL_CODE | A required field is missing. |
002 | INVALID_VALUE_FAIL_CODE | A value is invalid. |
003 | RECORD_NOT_FOUND_FAIL_CODE | The record was not found. |
004 | RECORD_ALREADY_EXISTS_FAIL_CODE | The record already exists. |
Integration Flow
Integrating with DISQO Audience API connects your project management system directly with our 100% first-party panelist community. This guide outlines a suggested order for integrating to provide maximum value in minimum development time.
How It Works
DISQO Audience works with your project management system to communicate with DISQO Audience and pair your surveys with qualified panelists.
Integration Timeline
The following provides an overview of the integration timeline. Each integration will vary, but following these steps will enable a more seamless process.
Partnership Kickoff Meeting
Each integration will begin with a kickoff call to discuss business and technical questions. During this call, your integration contact will review your project management system and provide guidance on best integration practices. This contact will be available for ongoing support throughout your integration.
After the kickoff meeting, DISQO will provide access credentials to your team, enabling them to build and test the integration in our sandbox environment.
Phase 1: Map Qualifications
Qualifications allow you to match Projects with panelists based on extensive profile information gathered during and after registration on our platform. DISQO Audience supports over 100 different qualifications.
Pair the qualifications used in your project management system to our qualification library. For the best performance, map as many qualifications as possible to increase the accuracy of our project matching mechanism, resulting in higher conversion rates.
Phase 2: Upload Rate Card
To be able to create a new Project, a Rate Card must be uploaded. The Rate Card defines the minimum and maximum rate per survey, length of interview/interaction (LOI) minimum and maximum, and value
. The value
is the minimum accepted cost per incident (CPI) value. This task is handled by our integration team as part of the initial setup to ensure the rates are correct.
Phase 3: Create Projects
The information you enter into your project management system should be sent to DISQO Audience. The information will be converted on our end and stored as Projects.
A Project contains important information such as survey CPI, LOI, and desired panelist qualifications (for example, males and females, and ages 18-30).
Phase 4: Create Quotas
Quotas belong to Projects and define the number of panelists needed for a specific set of qualifications. All qualifications nested within a Quota should already be part of the project-level qualifications. As long as a Quota remains open and available, this information will be stored in DISQO Audience and we will send panelists that match their profile and Quota qualifications.
Phase 5: Control Entrants by Completes or Clicks
Click Balancing increases the performance of a survey, and is used to control entrants by checking the Completes or Clicks associated with that survey.
Phase 6: Secure Redirects
When a panelist is matched to a Project, they will be sent to the URL provided in the Project body passed through our integration. In order to track the panelist, DISQO Audience will append six query parameters to the Project URL, such as surveyID and PID (panelistID).
Once a panelist has finished a survey, you must redirect them back to DISQO Audience with the same six tracking parameters. An additional event status parameter must be added to the query string to indicate whether the Project was completed successfully or not. DISQO supports up to 9 different redirect statuses, including complete, quota full, termination, and rejection. Beyond our standard redirection statuses, we support and recommend providing us with additional granular statuses. The more information we gather in real-time through these redirects, the better we can optimize the integration.
For successful completions, please note that we compensate users based on the Project or Quota CPI promised at the time of the click. When Project information such as CPI is changed mid-field, the changes may take up to 3 minutes to apply.
To ensure link security and prevent link manipulation, all redirects (including termninations), must be returned to us with a parameter called auth
. DISQO will provide a secret key and instructions on how to formulate the value for the auth
parameter. Once you append auth=[%value%]
to the redirect URL and pass the user back to us, we will use the same formula and secret key to generate the value. If the values match, we will be able to confirm the integrity of the link and ensure the accuracy of the conversion status. If the values do not match, the panelist will not be compensated and will likely be blocked to prevent future incidents.
Feature Adoption Checklist
Follow this checklist to get the best out of all the Audience API features, resulting in greater conversion rates.
Feature | Description | Benefit | Further Information |
---|---|---|---|
Qualifications Mapping | DISQO Audience provides over 100 qualifications for targeting panelists, All possible qualifications should be mapped for targeting in your project management tool. | Map as many qualifications as possible to ensure the correct users are sent into a project, reducing click waste and raising the conversion rate. High conversion means projects remain open. Without a conversion rate above 10%, projects will be shut down and panelists will not be sent. Clients who moved from basic demographic mapping to full DISQO Audience qualifications mapping saw 132% growth in completes. Client with less than 50% of qualifications mapped find that many projects convert poorly and get automatically shut off by the DISQO system. |
Questions Library |
Project Entry Control / Click Balancing | Desired number of entrants (clicks) at a project and/or quota level is sent to DISQO Audience.DISQO Audience | Indicating a desired number of entrants for a project allows for easy soft launching, ensures a healthy pace of entry (no project flooding!), and provides for the click balancing often required by certain buyers. Clients who implement click balancing see a significant decrease in quota fulls and over 100% growth in completions. |
Click Balancing |
Confirm Hash in Entry URL | Every DISQO Audience panelist entry URL will contain a hash appended to the URL. | By confirming the hash before redirecting a user, you can ensure link security. Using this feature reduces the ability of bad actors to attempt link manipulation. | Tracking and Redirects |
Custom Pre-screening Questions | Create prescreening questions to be shown to DISQO Audience users before they are matched to project | Using custom questions that are not part of the qualifications library improves conversion by allowing DISQO to confirm users qualify for projects before sending them into a survey. Projects must perform above 10% conversion rate to continue to receive sample; implementing custom questions keeps conversion rates high and ensures sample flows even on traditionally low IR studies. | Custom Questions |
StudyType | The type of study being administered. Each project can be associated with a different study type, including ad hoc, tracker, and wave study. | Marking studyType for each project correctly (including marking Trackers) will lead to important projects being highlighted more prominently on DISQO Audience panelist dashboards, resulting in a higher response rate. | Project Object |
Included & Excluded Users/Projects | If DISQO user IDs are captured, they can be sent to DISQO Audience for inclusion or exclusion in a given project. | Without integration into this feature, project managers will have to reach out to DISQO Audience Managed Services team on a project by project, ad hoc basis for all recontact and wave studies. Integration with this feature decreases cost and increases PM efficiency with recontact and wave studies. | Included and Excluded Users |
Project Specification Confirmation | Perform automatic checks to confirm a project launches with a minimum conversion rate, a maximum LOI, and a negotiated CPI rate for a given IR/LOI combination. | Confirming DISQO Audience project guidelines are met within your project management tool automatically before launch prevents human error and ensures sample will always flow when a project is launched. Note: if project is not within rate card specifications, sample will NOT be sent |
|
Automated launching | Launching all qualifying projects from your project management system into DISQO Audience without the need for a project manager to make an active selection. | The DISQO Audience system features automated algorithms that work best with a high volume of projects. Our most successful clients launch every project that qualifies to DISQO Audience as part of the supplier mix, without need for human choice. | |
Soft Launch & CR Confirmation | Soft launch opens a project for 10-100 clicks. After those clicks are filled, the actual (vs. expected) conversion rate can be calculated for the project. | The most successful DISQO Audience partners automatically soft launch a project for 10-100 clicks to confirm the conversion rate (successful completes over the number of starts). Once the CR is confirmed, the project is fully launched. This method ensures there are no issues with a project and that a buyer’s stated IR is reasonable. If a project performs under 10%, the DISQO Audience system will automatically stop sending users. |
Test the Integration
In this section, we will walk through the creation of two different Projects. Both will need to be set up to ensure that the integration will work as expected.
An integration contact will be available to answer questions throughout the integration process. Reach out to that contact to begin testing when ready. To test integration, a Project must be open, and a Quota must be live.
For demo testing, use the Demo Credentials and Hash Key provided by your integration representative.
Note: If you have misplaced or do not have your demo credentials, reach out to your representative.
For information on testing procedures, visit Testing Demo Projects.
To obtain Production Credentials and move into production environment, the Testing Guide needs to be completed. To complete the Testing Guide, follow the step-by-step instructions.
Project One
Create one Project with the following metrics.
Attribute | Value |
---|---|
completesWanted |
10 |
conversionRate |
80 |
cpi |
Define a decimal CPI value at or above the rate card agreement for this project's LOI and IR. |
loi |
5 |
qualifications |
{"and":[{"range":{"values":[{"gte":98,"lte":99}],"question":"Age"}}]} |
Move on to Project Two below.
Project Two
Create a second Project and two Quotas with the following guidelines. The Project should use clicks as tracking, want 10 clicks, and enable screenout.
The Project should have qualifications
that enable both of the Quotas below to be met.
Quota One
- Females
- Aged 20-25
- Live in CO or NH (Colorado or New Hampshire)
- Income of 55K
- Has a male child aged 5-8 or a female child aged 0-12 months
- Click limit of one
Quota Two
- Males
- Aged 24
- Live in the West region
- Have a Chevy as a primary vehicle
Once both Projects have been created, notify the integration contact.
Demo Testing
Create and launch a Project in the test environment with a working URL. Your integration contact will review the Project structure, ensure test users can enter the survey, and confirm test users return with the proper status. After this test is completed successfully, production credentials will be provided.
Internal Production Testing
Create and launch a Project in the production environment with a working URL. Your integration contact will review the Project structure, ensure test users can enter the survey, and confirm test users return with the proper status. After this test is completed successfully, a project can be opened to real (non-test) users.
Small Production Testing
Create and launch a survey with a small number of desired completes. The integration contact will monitor and analyze the project based on stated and achieved CR, LOI, and overall performance.
Final Production Testing
Launch a real project that reflects the typical LOI, CPI, conversion rate, and desired number of completes of the type of projects you expect to run through the DISQO Audience integration. The integration contact will monitor and analyze the project based on stated and achieved CR, LOI, and overall performance. As real users respond to the project, completes will be billed for this test.
Add Enhancements
DISQO Audience adds new features regularly. These features enhance the functioning of the existing integration. Enhancements we have released so far include the following:
User Inclusion Lists
For re-contact projects where specific panelists are desired, a list of panelist IDs can be associated with a project for inclusion. Inclusion does not guarantee a panelist will be sent into the project, but does ensure the panelist will be matched if they remain active.
User Exclusion Lists
Panelists with IDs in the user exclusion list for a project will never be sent into that project.
Survey Group Exclusions
Users who have previously started or completed a specific project in a survey group will not be matched to other projects within that group.
Optimization Period
The optimization period lasts from 30 to 60 days. The goal of the Optimization Period is to enhance the integration's performance and ensure the highest conversion rates as quickly as possible. To achieve this goal, the majority of projects launched in your project management tool should be launched to the DISQO Audience panel.
As part of the optimization period, DISQO will schedule a kick-off meeting to introduce your project management and operation leaders to DISQO's managed services team. The DISQO team will be available to provide guidance to client project managers on a project-by-project basis. The DISQO managed services team will also monitor and proactively reach out to project managers. The team will provide recommendations and share best practices to ensure projects launched through the API are successful.
Projects
The Audience API includes the entities Projects and Quotas. Projects define the task that needs to be met, and quotas define the eligibility that panelists must have in order to be part of a Project. Projects can have one or more Quotas.
Project Object
The following is a 201 response example.
{
"clientId": 09889,
"supplierId": 54637,
"id": "5p",
"buyer": "The Generic Company",
"name": "project-12345",
"studyType": "AD_HOC",
"allocation": null,
"url": "https://www.example.com/?project=12345",
"redirectUrl": null,
"loi": 10,
"conversionRate": 85,
"cpi": 2.5,
"country": "US",
"devices": [
"DESKTOP"
],
"hasExcludedUsers": false,
"hasIncludedUsers": false,
"hasExcludedProjects": false,
"clicksWanted": 20,
"completesWanted": 100,
"currentClicks": 17,
"currentCompletes": 11,
"enforceScreenOut": true,
"trackingField": "COMPLETES",
"status": "OPEN",
"qualifications": {
"and": [
{
"range": {
"values": [
{
"gte": 18,
"lte": 25
},
{
"gte": 35,
"lte": 50
},
{
"gte": 60,
"lte": 70
}
],
"question": "age",
"unit": "years"
}
},
{
"equals": {
"values": [
"2",
"1"
],
"question": "gender"
}
},
{
"equals": {
"values": [
"3",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"8"
],
"question": "ethnicity"
}
}
]
},
"createdAt": "2019-11-13T19:51:35.729Z",
"updatedAt": null,
"completedAt": null,
"closedAt": null,
"autoCloseAt": "2021-12-13T19:51:35.729Z"
}
This section outlines each of the fields that appear in the Project response object.
Attribute | Type | Description |
---|---|---|
allocation | integer | NOTE: As of now, this parameter does not reflect any specific state or value related to the API's functionality, does not provide any functional information and will default to null . Updates on when this parameter will become active and its intended use will be shared in our changelog/documentation as the feature is implemented. Allows you to indicate if a project's completes are exclusively allocated to the supplier (100), if there is no allocation set for the supplier (0), or if some portion of the completes is allocated to the supplier to fulfill (0-100). The integers represent percentages. |
buyer | string | A friendly name for the buyer. |
clicksWanted | integer | The amount of clicks wanted for a Project or Quota. |
clientId | integer | The client ID. |
closedAt | string | The date and time when the Project status was set to CLOSED . |
currentCompletes | integer | The number of completes achieved. This value is compared to completesWanted . |
completedAt | string | The date and time when the Project status was set to COMPLETED . |
completesWanted | integer | The amount of completes wanted for a Project or Quota. |
conversionRate | integer | The conversion rate in percentage. |
country | string | The two-letter ISO country code. |
cpi | integer | The cost per incidence in USD. |
createdAt | string | The date and time when the Project was created. |
currentClicks | integer | The current number of panelists sent to a Project or Quota from DISQO Audience. Note that this value is real-time. |
currentCompletes | integer | The current number of panelists who returned to DISQO Audience with a complete status on a Project or Quota. |
devices | array | The devices that a survey can be taken on. Devices can be DESKTOP , PHONE , and/or TABLET . |
enforceScreenOut | boolean | If set to true , users will be stopped when completesWanted or clicksWanted is reached. Whether completes or clicks is used as the target is determined by the trackingField attribute. The default value is false . This attribute only applies to the Project object. |
hasExcludedProjects | boolean | Whether or not the Project has excluded Projects. |
hasExcludedUsers | boolean | Whether or not the Project has excluded users. |
hasIncludedUsers | boolean | Whether or not the Project has included users. |
id | string | The project ID. This field only accepts alphanumerical values and dashes. Note that we also refer to id as projectId . |
loi | integer | The length of interview in minutes. |
name | string | The name of the project. |
qualifications | object | The qualifications required to be eligible for a Project. See the Qualifications section for more information. |
quotas | object | The Quotas associated with the specified Project, if there are any assigned. Note that these can be assigned after a Project has been created. |
redirectUrl | URL | This is a URL used internally for redirecting users. The default value is null . This value should not be altered. |
status | string | The status of the Project. Values that appear in this field are OPEN , CLOSED , COMPLETED , CLOSED , HOLD_FOR_USER_INCLUSION_LIST , HOLD_FOR_USER_EXCLUSION_LIST , and HOLD_FOR_USER_INCLUSION_AND_EXCLUSION_LIST . Refer to the Update Project Status section for a list of status meanings. |
studyType | string | The type of study being administered. See the table below for more information. |
supplierId | integer | The ID of the supplier. Note that the value 54637 should be used for DISQO and Survey Junkie panelists. |
trackingField | string | The method by which currentClicks or currentCompletes will be counted. Values can be either COMPLETES or CLICKS . The default value is COMPLETES . This attribute only applies to the Project object. |
updatedAt | string | The date and time when the Project was last updated. |
url | URL | The survey URL. We will add tracking data to this URL. Refer to the Tracking and Redirects section for more information. |
autoCloseAt | datetime | The date and time in ISO 8601 format when the Project status will automatically be changed to CLOSED . This will not change the Project's Quota statuses. The Project will only close if the status is OPEN . The datetime value should not exceed 90 days from current time. |
studyType
Value | Description |
---|---|
AD_HOC | A one-time project. |
DIARY | Projects that requires panelists to go in to the same survey multiple times throughout the course of a time frame to log their activity or answer questions. |
IHUT | Project that requires a panelists to use products at home followed by a survey to answer questions after the product usage. |
TRACKING_WEEKLY | A project where the same/similar survey is sent out weekly to the same demographic panelists to track patterns and trends. |
TRACKING_MONTHLY | A project where the same/similar survey is sent out monthly to the same demographic panelists to track patterns and trends. |
TRACKING_QUARTERLY | A project where the same/similar survey is sent out quarterly to the same demographic panelists to track patterns and trends. |
WAVE_STUDY | A project that is similar to a tracker but is not set up to consistently run through out the year, typically they are 2-5 waves total. |
QUALITATIVE_SCREENING | Recruit panelists that are willing to participate in a qualitative project like focus groups or shop-alongs. |
RECONTACT | Study re-inviting panelists that based on a previous study they've completed and asking them to take another survey |
Qualifications
In the following example, our panelists are eligible for a Project if they are between the ages 16 through 20 or 21 and 35. They must also be female because the gender value is
1
.
{
"not":[
{
"equals":{
"values":[
"2",
"1"
],
"question":"gender"
}
},
{
"equals":{
"values":[
"1"
],
"question":"anychildgender"
}
},
{
"and":[
{
"range":{
"values":[
{
"gte":20,
"lte":30
},
{
"gte":60,
"lte":100
}
],
"question":"age",
"unit":"years"
}
},
{
"and":[
{
"range":{
"values":[
{
"gte":1,
"lte":10
}
],
"question":"anychildage",
"unit":"months"
}
},
{
"equals":{
"values":[
"1"
],
"question":"anychildgender"
}
}
]
}
]
}
]
}
Qualifications are what make panelists eligible for participation in a specific Project. qualifications
is an object that contains attributes, as listed below. Note that only one array is accepted at the top-most level of the JSON object. If more that one array is sent at the top-most level, only the first array will apply.
Qualifications are set on two levels: Project and Quota. Those set on the Project Object are requirements all panelists must match to be eligible to take the survey.
For example, let's take a project called ABC
.
Project ABC
's qualifications: Pet Ownership: dog, cat
and Age 18-24
.
Project ABC
has two quotas with their own qualifications.
Project ABC
's quota #1 qualification: Pet Ownership: dog
.
Project ABC
's quota #2 qualification: Pet Ownership: cat
.
For the above project, only 18-24 years olds who own either a cat or a dog would be sent into project ABC. Panelists with dogs will be sent into quota #1 and panelists with cats will be sent into quota #2. If a user matches more than one open quota (for example, a pet owner with both a cat and dog), the redirect to the survey will note that the panelist matches both quotas.
To produce the best results, map as many qualifications as possible.
Array-type predicates can contain any other predicate: and
, or
, not
, range
, and equals
. Object-type predicates should contain a values
array, question
, and optionally, unit
. Refer to the Predicates section for additional information.
Attribute | Type | Description |
---|---|---|
and | array | Panelists should meet all qualifications listed in the and logic sequence. |
or | array | Panelists should meet one qualification in the or logic sequence. |
not | array | Panelists must not meet any qualifications listed in the not predicate. |
equals | object | The panelist qualifications should equal the values listed in values array. |
range | object | The panelist qualifications should be in the range of the values listed in the values array. |
All qualifications are in relation with a question and you must include a question
attribute with a value. Refer to the Questions Library for a comprehensive list of questions.
The values
array can contain an array or an array of objects. For the equals
object values
, you will list at least one item in an array. For the range
object values
, you will list multiple objects in an array.
Predicates
For equals
and range
predicates, an additional optional field unit
can be added for age
and anychildage
. The possible values for unit
are years
and months
. A value in months
can range from 0
to 24
. If no unit
is specified for age
and anychildage
, the default value will be years
.
Range Predicates
Range predicates specifying one or both starts or ends of a range
. There must be at least one valid number within the range specified. For example, {gt=20, lt=21}
is not valid because there is not a full integer within that range.
At least one of the following properties must exist in a range
.
Property | Description | Restraints |
---|---|---|
GT | Greater than | GT cannot coexist with GTE in the same range. This value cannot be greater than a LT or LTE value. |
GTE | Greater than or equal to | GTE cannot coexist with GT in the same range. This value cannot be greater than a LT or LTE value. |
LT | Less than | LT cannot coexist with LTE in the same range. This value cannot be greater than a GT or GTE value. |
LTE | Less than or equal to | LTE cannot coexist with LT in the same range. This value cannot be greater than a GT or GTE value. |
Click Balancing
Click balancing allows fine tuned control over how many panelists enter or complete a survey. This feature is set using six different attributes on both the Project and Quota objects.
Attribute | Type | Required | Description |
---|---|---|---|
clicksWanted | integer | no | The amount of clicks wanted for a Project or Quota. |
completesWanted | integer | yes | The amount of completes wanted for a Project or Quota. |
currentClicks | integer | system generated | The current number of panelists sent to a Project or Quota from DISQO Audience. Note that this value is real-time. |
currentCompletes | integer | system generated | The current number of panelists who returned to DISQO Audience with a complete status on a Project or Quota. |
enforceScreenOut | boolean | no | If set to true , users will be stopped when completesWanted or clicksWanted is reached. Whether completes or clicks is used as the target is determined by the trackingField attribute. The default value is false . This attribute only applies to the Project object. |
trackingField | string | no | The method by which currentClicks or currentCompletes will be counted. Values can be either COMPLETES or CLICKS . The default value is COMPLETES . This attribute only applies to the Project object. |
currentClicks
tracking is real-time, and once the value assigned to this attribute is reached, users will no longer be sent to that survey. COMPLETES
are only tracked when a user returns from the survey. Because of this, currentCompletes
may go over completesWanted
.
Click Balancing Example
Given that enforceScreenOut
is true
, trackingField
is COMPLETES
, currentCompletes
is 100
, and completesWanted
is 100
, a panelist clicking on a survey will be sent back rather than move forward to the survey.
However, with the same attributes except that enforceScreenOut
is false
, a panelist will be direct to the survey and a click will be registered. Additionally, if the panelist completes the survey, a complete will be registered.
Quotas Object
Refer to the Quotas section for a comprehensive understanding of the Quotas object.
Create Project
The following is a POST request example that will create a new project.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects' \
-d '{"id":"5test1","supplierId":54637,"studyType":"AD_HOC","url":"https://www.example.com","loi":10,"conversionRate":85,"cpi":2.5,"completesWanted":10,"qualifications":{"and":[{"range":{"values":[{"gte":16,"lte":20},{"gte":21,"lte":35}],"question":"age"}},{"equals":{"values":["1"],"question":"gender"}}]},"devices":["DESKTOP"],"country":"US", "trackingField": "COMPLETES"}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
This request creates a new Project. Pass the clientId
in the URL, and the entire Project object in the request body. You may opt to also create one or more Quotas at the same time as you create a new Project by passing items into the quotas
array.
As users successfully complete a project within your system, DISQO Audience must be updated about the new number of desiredCompletes
at both the Project and Quota level.
Refer to the Project object section for a comprehensive list of all items that appear in the Project object. A successful request returns the Project object including a status
field and the default status
value OPEN
. However, no sample will be sent to a Project without an associated Quota in a live
state. Learn how to update the status
value by referring to the Update Quota Status section.
Note that prior to creating Projects, a Rate Card must be uploaded. This task is handled by our integration team as part of the initial setup to ensure the rates are correct.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
Body Arguments
The following are all request body fields required to create a new Project: completesWanted
, conversionRate
, cpi
, country
, devices
, id
, loi
, qualifications
, studyType
, supplierId
, and url
. Do not include a space in the id
value. Note that the supplierId
value 54637
should be used for DISQO and Survey Junkie panelists.
Refer to Click Balancing to learn about controlling the amount of clicks and completes on a Project.
When creating a Project, qualifications should be added at the Project level before being added at the Quota level. Note that Project level qualifications apply to all associated Quotas.
The cpi
for the Project should reflect the full amount to be paid for complete. As this is the amount that will be billed, it should not reflect any expected internal margin. If no cpi
is provided and a rate card is in place, the appropriate cpi
will be generated for the Project from the rate card.
Refer to the Project object for more information. Do not add a status
when creating a Project. One will be automatically assigned and viewable in the response. The Project status
can be modified using a PUT
request once a Project has been created.
A successful request returns the Project object.
List Projects
The following is a GET request example that will return a list of projects associated with the clientId
and an optional list of statuses.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects?status=OPEN&status=COMPLETED&status=HOLD&status=CLOSED' \
-H 'Authorization: Basic {base64Key}'
This request returns a list of projects associated with a specific clientId
. If status
is provided, projects will be filtered to match the specified statuses.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects?status=OPEN&status=COMPLETED&status=HOLD&status=CLOSED |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
A successful request returns the Project object.
Get Project by projectId
The following is a GET request example that will return a project specified by the
projectId
.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}' \
-H 'Authorization: Basic {base64Key}'
This request returns a Project specified by projectId
.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId} |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request returns the Project object.
Update Project
The following is a PATCH request example that will partially update a Project object specified by
projectId
.
curl -X PATCH \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}' \
-d '{qualifications":{"and":[{"range":{"values":[{"gte":16,"lte":20},{"gte":21,"lte":35}],"question":"age"}},{"equals":{"values":["1"],"question":"gender"}}]},"devices":["DESKTOP"]}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
The following is a PUT request example that will update an entire Project object specified by
projectId
.
curl -X PUT \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}' \
-d '{"id":"5test1","studyType":"AD_HOC","url":"https://www.example.com","loi":10,"conversionRate":85,"cpi":2.5,"completesWanted":10,"qualifications":{"and":[{"range":{"values":[{"gte":16,"lte":20},{"gte":21,"lte":35}],"question":"age"}},{"equals":{"values":["1"],"question":"gender"}}]},"devices":["DESKTOP"],"country":"US"}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
A Project object can be updated using a PATCH
or PUT
request.
Method | URL |
---|---|
PATCH | /v1/clients/{clientId}/projects/{projectId} |
PUT | /v1/clients/{clientId}/projects/{projectId} |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
For a PATCH
request, add the values that you would like to replace in the Project object to the request body.
For a PUT
request, add the entire Project object to the request body. If there are missing values that are not required and do not have a default, these will be replaced with null
. If there are missing values that are required, the system will response with a 400
error.
The following values cannot be updated: isAcceptingPanelists
and id
. Only admins can update currentClicks
and currentCompletes
.
A successful request returns the Project object.
Update Project Status
The following is a PUT request example that will update a project specified by the
projectId
.
curl -X PUT \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/status' \
-d '{"status": "HOLD"}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
This request updates a Project status.
Method | URL |
---|---|
PUT | /v1/clients/{clientId}/projects/{projectId}/status |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
Pass the field status
with a status value from the table below in the request body.
Project Status
Value | Description |
---|---|
OPEN | This is the default status when a Project is created. You can set a Project status back to OPEN if its current status is HOLD or COMPLETED . |
HOLD | A Project status can be set to HOLD only if its current status is OPEN . |
COMPLETED | A Project status can be set to COMPLETED only if its current status is OPEN . |
CLOSED | A Project status can be set to CLOSED from any other status. Once a project is set to CLOSED , it can no longer be reopened. |
HOLD_FOR_USER_INCLUSION_LIST | This status functions as a hold until a user inclusion list is created. Once created, the Project status will change to OPEN . |
HOLD_FOR_USER_EXCLUSION_LIST | This status functions as a hold until a user exclusion list is created. Once created, the Project status will change to OPEN . |
HOLD_FOR_USER_INCLUSION_AND_EXCLUSION_LIST | This status functions as a hold until user inclusion and exclusion lists are created. Once created, the Project status will change to OPEN . |
A successful request returns the Project object.
Delete Project by projectId
The following is a DELETE request example that will permanently deactivate a Project specified by projectId.
curl -X DELETE \
'https://projects-api.audience.disqo.com/v1/clients/{clientId}/projects/{projectId}' \
-H 'Authorization: Basic {base64Key}'
This request permanently deactivates a Project specified by projectId
.
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The client ID. |
projectId | string | yes | The Project ID. |
A successful request returns a 204
request with an empty body.
Quotas
The Audience API includes the entities Projects and Quotas. Quotas belong to Projects and contain the requested qualifications that make panelists eligible for a Project.
Quotas are used in matching panelists to a survey. If a member meets the qualifications of the project, they then must also match to at least one open quota in order to be allowed to participate in a survey.
Quota Object
The following is a 201 response example.
{
"id": "12345",
"cpi": 2.5,
"status": "PAUSED",
"clicksWanted": 20,
"completesWanted": 100,
"currentClicks": 17,
"currentCompletes": 11,
"qualifications": {
"and": [
{
"range": {
"values": [
{
"gte": 18,
"lte": 25
},
{
"gte": 35,
"lte": 50
},
{
"gte": 60,
"lte": 70
}
],
"question": "age",
"unit": "years"
}
},
{
"equals": {
"values": [
"2",
"1"
],
"question": "gender"
}
},
{
"equals": {
"values": [
"3",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"8"
],
"question": "ethnicity"
}
}
]
},
"createdAt": "2019-11-13T21:15:04.229Z",
"updatedAt": null
}
This section outlines each of the fields that appear in the Quota object. Note that the attribute status
only appears in a created Quota. Do not add a status
when initially creating a Quota.
Attribute | Type | Description |
---|---|---|
id | string | The ID of the Quota. This field only accepts alphanumerical values and dashes. This can assist as a name of the quota that must be unique on the project level. |
clicksWanted | integer | The amount of clicks wanted for a Project or Quota. |
cpi | integer | The cost per incidence in USD. |
createdAt | string | The date and time when the Quota was created. |
completesWanted | integer | How many completes wanted. |
currentClicks | integer | The current number of panelists sent to a Project or Quota from DISQO Audience. Note that this value is real-time. |
currentCompletes | integer | The current number of panelists who returned to DISQO Audience with a complete status on a Project or Quota. |
qualifications | object | The qualifications required for a panelist to be eligible for a Project. |
status | string | When a Quota is initially created, it will have the status PAUSED . A Quota must be set to LIVE using Update Quota Status to be used for a Project. |
updatedAt | string | The date and time when the Quota was updated. |
Quota qualifications
work in the same way that Project qualifications do. Refer to the Qualifications section for more information.
Create Quota
The following is a POST request example that will create a new Quota.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/quotas' \
-d '{"id":"12347","completesWanted":10,"qualifications":{"and":[{"range":{"values":[{"gte":18,"lte":25},{"gte":35,"lte":50},{"gte":60,"lte":70}],"question":"age"}},{"equals":{"values":["2","1"],"question":"gender"}},{"equals":{"values":["3","9","10","11","12","13","14","15","16","17","18","19","8"],"question":"ethnicity"}}]}}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
This request creates a new Quota. Pass the clientId
and projectId
in the URL, and the entire Quota object in the request body.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects/{projectId}/quotas |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
The following are all request body fields required to create a new Quota: completesWanted
, id
, and qualifications
. Do not include a space in the id
value.
Refer to the Qualifications section for more information about Qualifications on the Project and Quota levels.
Refer to Click Balancing to learn about controlling the amount of clicks and completes on a Quota.
Refer to the Quota object section for more information. Do not add a status
when creating a Quota. One will be automatically assigned and viewable in the response. The Quota status can be modified using a PUT
request once a Quota has been created.
A successful request returns the Quota object.
List Quotas
The following is a GET request example that will return a list of quotas associated with a
projectId
.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/quotas' \
-H 'Authorization: Basic {base64Key}'
This request returns a list of Quotas associated with a specific projectId
.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId}/quotas |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request returns the Quota object.
Get Quota by quotaId
The following is a GET request example that will return a Quota specified by
quotaId
.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId}' \
-H 'Authorization: Basic {base64Key}'
This request returns a Quota specified by quotaId
.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId} |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
quotaId | string | yes | The unique Quota ID. |
A successful request returns the Quota object.
Update Quota
The following is a PATCH request example that will partially update a Quota object specified by
quotaId
.
curl -X PATCH \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId}' \
-d '{"completesWanted":0,"qualifications":{"and":[{"range":{"values":[{"gte":16,"lte":20},{"gte":21,"lte":35},{"gte":36,"lte":49}],"question":"age"}},{"equals":{"values":["1"],"question":"gender"}},{"equals":{"values":["1","2","4"],"question":"ethnicity"}}]}}' \
-H 'Authorization: Basic {base64Key}'
The following is a PUT request example that will update an entire Quota object specified by
quotaId
.
curl -X PUT \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId}' \
-d '{"id":"12345","cpi":2.5,"completesWanted":0,"qualifications":{"and":[{"range":{"values":[{"gte":16,"lte":20},{"gte":21,"lte":35},{"gte":36,"lte":49}],"question":"age"}},{"equals":{"values":["1"],"question":"gender"}},{"equals":{"values":["1","2","4"],"question":"ethnicity"}}]}}' \
-H 'Authorization: Basic {base64Key}'
A Quota object can be updated using a PATCH
or PUT
request.
This request updates a Quota specified by quotaId
.
Method | URL |
---|---|
PATCH | /v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId} |
PUT | /v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId} |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The client ID. |
projectId | string | yes | The Project ID. |
quotaId | string | yes | The Quota ID. |
Body Arguments
For a PATCH
request, add the values that you would like to the replace in the Quota object to the request body.
For a PUT
request, add the entire Quota object to the request body. If there are missing values that are not required, these will be replaced with null
. If there are missing values that are required, the system will response with a 400
error.
The following value cannot be updated: id
. Only admins can update currentClicks
and currentCompletes
.
A successful request returns the Quota object.
Update Quota Status
The following is a PUT request example that will update a Quota status specified by
quotaId
.
curl -X PUT \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId}/status' \
-d '{"status": "LIVE"}' \
-H 'Authorization: Basic {base64Key}'
This request updates a Quota status specified by quotaId
.
Method | URL |
---|---|
PUT | /v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId}/status |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The client ID. |
projectId | string | yes | The Project ID. |
quotaId | string | yes | The Quota ID. |
Body Arguments
Pass the field status
with a status value from the table below in the request body.
Quota Status
Value | Description |
---|---|
PAUSED | The Quota is paused. This is the default value for the status field when a new Quota is created. |
LIVE | The Quota is live. |
A successful request returns the Quota object.
Delete Quotas
The following is a DELETE request example that will permanently deactivate all Quotas associated with a Project, or all Quotas specified if parameters
quotaId
are added to the URL.
curl -X DELETE \
'https://projects-api.audience.disqo.com/v1/clients/{clientId}/projects/{projectId}/quotas' \
-H 'Authorization: Basic {base64Key}'
This request permanently deactivates all Quotas associated with a Project, or all Quotas specified if parameters quotaId
are added to the URL.
To delete Quotas by quotaId
, add the information to the request URL in the following format: "aId=quota1"aId=quota2
.
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The client ID. |
projectId | string | yes | The Project ID. |
A successful request returns a 204
request with an empty body.
Delete Quota by quotaId
The following is a DELETE request example that will permanently deactivate a Quota specified by quotaId.
curl -X DELETE \
'https://projects-api.audience.disqo.com/v1/clients/{clientId}/projects/{projectId}/quotas/{quotaId}' \
-H 'Authorization: Basic {base64Key}'
This request permanently deactivates a Quota specified by quotaId
.
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The client ID. |
projectId | string | yes | The Project ID. |
quotaId | string | yes | The Quota ID. |
A successful request returns a 204
request with an empty body.
Tracking and Redirects
The following is an example of a callback tracking URL.
{baseUrl}/?clientId={clientId}&projectId={projectId}"aIds={quotaIds}&supplierId={supplierId}&tid={tid}&pid={pid}&status={status}&V100001={age}&Q2={gender}&Q6={georegion}&Q7={geopostalcode}&Q13={ethnicity}&Q15={hispanicorigin}&Q36={householdincome}&Q38={employmentstatus}&Q40={jobposition}&auth={auth}```
> The following example shows what the `quotaIds` will look like if a user matches multiple quotas.
```shell
{baseUrl}/?clientId={clientId}&projectId={projectId}"aIds={["quotaId1","quotaID2"]}&supplierId={supplierId}&tid={tid}&pid={pid}&status={status}&V100001={age}&Q2={gender}&Q6={georegion}&Q7={geopostalcode}&Q13={ethnicity}&Q15={hispanicorigin}&Q36={householdincome}&Q38={employmentstatus}&Q40={jobposition}&auth={auth}
DISQO sends tracking information and authentication in the URL when redirecting a panelist to a created survey. This tracking information is also used when panelists are being returned to the provider, for example, surveyjunkie.com. When returning the panelist to DISQO, provide the same tracking information from the URL, plus status
, a new auth
hash, and optionally, a substatus
.
The callback tracking base URLs are as follows:
Environment | URL |
---|---|
PROD | https://go.audience.disqo.com/callback/ |
DEMO | https://go.audience.disqo-demo.com/callback/ |
For a thorough walkthrough, refer to the Hashing and Decoding Walkthrough section.
The following diagram describes the information passed to and from the provider and a survey on an external site. Note that the URL shown in the diagram is for the PROD environment.
When a panelist is sent to a survey, seven query parameters will be appended to the Project URL. When sending a panelist back to the app (ex. surveyjunkie.com), the seven query parameters must still be included in the URL.
In addition, an eighth query parameter status
must be added. Additionally, a substatus
can be added to provide additional data. Refer to the status section for more information.
During a redirection, a valid pid will be used to fetch the panelist's demographic info and add it to the query string as well.
Parameter | Description | Required |
---|---|---|
auth | A URL-safe hash key used to secure the data being passed over the URL parameter. We use this to confirm that validity of the URL. See the Hashing section for more information. | Yes |
clientId | The five digit client ID. | Yes |
pid | The panelist ID, unique to the user. | Yes |
projectId | The project ID. | Yes |
quotaIds | JSON formatted list of quota IDs, for example: ["quotaId1","quotaId2"] . |
Yes |
supplierId | The integer value representing the supplier of the panelist. Note that the value 54637 should be used for DISQO and Survey Junkie panelists. |
Yes |
tid | The tracking ID, unique to the user and the session. | Yes |
V100001 | Age | NO |
Q2 | Gender | NO |
Q6 | State | NO |
Q7 | Postal Code | NO |
Q13 | Ethnicity | NO |
Q15 | Is Hispanic | NO |
Q35 | EducationLevel | NO |
Q39 | Industry | NO |
Q36 | Household Income | NO |
Q38 | Employment Status | NO |
Q40 | Job Title | NO |
Q138 | GeoUSRegion | NO |
Q142 | EmployeeCount | NO |
isMobile | isMobile | NO |
Hashing
The following is an example of SHA-256 encoding that we do in Java using the secret key. Note that we use
.withoutPadding()
to make the hash URL-safe.
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class HashServiceImpl {
public String hash(String urlDecodedParams, String hashKey) throws NoSuchAlgorithmException, InvalidKeyException {
final String hashInstance = "HmacSHA1";
final Mac sha1Mac = Mac.getInstance(hashInstance);
final SecretKeySpec secretKey = new SecretKeySpec(hashKey.getBytes(), hashInstance);
sha1Mac.init(secretKey);
return Base64.getUrlEncoder()
.withoutPadding()
.encodeToString(sha1Mac.doFinal(urlDecodedParams.getBytes()));
}
}
To protect the data that we are passing in the URL, include a hash value for the field auth
. This value should be generated using HMAC SHA-256, URL-safe (without padding), and use the secret key provided by DISQO.
Parameters sent from our service might include the ones hashed in the documented example, but are not limited to the ones shown. This means that the URL can include additional parameters that must be considered to generate the hash.
Parameters sent might include URL-unsafe characters, so in order to handle them correctly, decode our URL-encoded characters prior to generating the hash.
URL-encoded example: "aIds=%5B%22quotaId1%22%2C%22quotaId2%22%5D
URL-decoded example: "aIds=["quotaId1","quotaId2"]
If you have not received a secret key from DISQO, reach out to your integration contact.
Elements Needed for Base64 Hashing
- All data in the URL that appears after
?
in the URL and before&auth
. For example:clientId={clientId}&projectId={projectId}"aIds=[“{quotaId1}”,“{quotaId2}”]&supplierId={supplierId}&tid={tid}&pid={pid}
- The secret key, provided by DISQO.
- The format HMAC SHA-256. Ensure that the hash value is URL-safe (no padding), meaning that the hash should not include
+
,/
, or=
. In URL-safe hashing,+
become-
,/
become_
, and=
are removed.
To check that hashing is working correctly, the following received parameters clientId=28377&projectId=5p"aIds=%5B%2218829%22%2C%2218830%22%5D&supplierId=99821&tid=883933&pid=991832
should be decoded into clientId=28377&projectId=5p"aIds=["18829","18830"]&supplierId=99821&tid=883933&pid=991832
and then hashed with the DISQO-provided example hash key 8YTkB1huUCPUJESjMNg2BvM27VvKJ5yT
into stBiNbwup_WyTAIht8kFYo4gPdA
. Note that this sample key should not be used in hashing; a different one will be provided by DISQO. This example is only used to demonstrate how hashing works.
Status
When the user is redirected back to the original website, the URL contains all parameters from the original redirect URL, plus status
, and optionally, a substatus
.
status
and substatus
should be appended to the redirect url before the auth value.
Note that the auth
value will be different since the URL is different.
The following is a redirect URL example that includes the required parameter
status
and optional parametersubstatus
.
https://go.audience.disqo.com/callback/?clientId={clientId}&projectId={projectId}"aId={quotaId}&supplierId={supplierId}&tid={tid}&pid={pid}&status={status}&substatus={substatus}&auth={auth}
Parameter | Description |
---|---|
status | The status of the user. Refer to the table below for a comprehensive list of status IDs that can be returned. |
substatus | An optional parameter that enables sending additional information. Refer to the substatus table below for a list of all values permitted. |
Status Codes
ID | Description |
---|---|
1 | The panelist completed the survey. |
2 | The panelist was sent to the survey but the survey had already been filled for their quota. |
3 | The panelist was terminated. |
4 | The survey was rejected. |
5 | The survey is a duplicate. |
6 | The survey is not available. |
7 | No survey is available. |
8 | The panelist was screened out of the survey. |
9 | The client rejected the panelist. |
substatus
ID | Description |
---|---|
100 | The IP address is a duplicate for the Project. |
101 | The deviceId is a duplicate for the Project. |
102 | The cookie is duplicate for the Project. |
200 | The Panelist has been flagged as a speeder. |
201 | The Panelist failed a red herring question. |
300 | The IP address is from an unsupported country. |
301 | The IP address could not be determined. |
302 | The Panelist is using a VPN. |
Custom Parameters
The following is an example of a redirect URL that includes a custom parameter that we named
internalTracking
.
https://go.audience.disqo.com/callback/?internalTracking={internalTracking}&clientId={clientId}&projectId={projectId}"aId={quotaId}&supplierId={supplierId}&tid={tid}&pid={pid}&status={status}&auth={auth}
Custom tracking parameters and values can be added to URLs. These parameters and values need to be included in the hashing as well.
An example of a custom parameter is internalTracking={internalTracking}
.
Demo Testing
To request the ability to test tracking events using the production sandbox,https://go.audience.disqo-demo.com/callback/?
, contact your integration contact.
Hashing and Decoding Walkthrough
This section details receiving and returning a Panelist, and hashing and decoding the URLs that enable communication with our system.
Receive a Hash Key
The Customer Success team will send you a unique DEMO hash key to use for testing. After you confirm with us that the redirection is working, we will send you a unique PROD hash key.
In this tutorial, we're going to use the following sample hash key.
NRPyNpyH2FF556499taqSafwPkT0A1QC
Note that the PROD and DEMO environments will have different hash keys, so make sure you're using the right hash key, and that you're pointing your URL to the right environment.
Receive a Panelist
The following steps detail receiving a Panelist.
Check that the Hash is Legitimate
For each panelist DISQO sends to your survey, you will receive a call from our redirection application that contains tracking parameters in the URL. This URL will look similar to the following.
{your_project_url}?clientId=71167&supplierId=59037&projectId=167004"aIds=[%2273778%22]&pid=125205585&tid=c6fe453992411eb86630231c2fbb316&auth=lbryLCs1B7GulC_g-QypQvpw-To
Decode the URL to make the URL friendly. Use a site like https://www.urldecoder.org/ for testing.
Then remove the auth
parameter and value.
At this point, the URL will look similar to the following.
clientId=71167&supplierId=59037&projectId=167004"aIds=["73778"]&pid=125205585&tid=c6fe453992411eb86630231c2fbb316
To see whether the redirection received is legitimate, ensure that the auth
value is the correct hash for the URL segment using the hash key.
Return the Panelist
The following steps detail returning a Panelist.
Add the Panelist Status
Every panelist sent from DISQO should be returned to DISQO Audience, regardless of their status.
Note that when returning the panelist, the seven query parameters must still be included in the URL.
Also, include the status of the panelist by appending status
and an optional substatus
value. You can use the following code as an example:
{audience_redirection_url}?clientId=71167&supplierId=59037&status=1&projectId=167004"aIds=["73778"]&pid=125205585&tid=c6fe453992411eb86630231c2fbb316
Create a Hash
To check that your hash is accurate, you can use the following online form. It takes input (URL parameters) and a key (hash key) to create a base64 SHA-256 hash.
Note that this site does not have a no-padding feature. A no-padding feature removes the trailing =
sign. If your hash ends with a =
sign, delete it.
Append the Hash
Append the base64 SHA-256 hash in the format &auth={your_hash_value}
to the end of your parameters.
Notify the Customer Success Team
Notify the Customer Success team when you've tested your hash and have a project in the demo environment ready for testing. They will send a test user into the system to confirm the redirects work as desired.
Your callback URL should look similar to the following. Note that we are using the DEMO URL in this sample.
https://go.audience.disqo-demo.com/callback/?clientId=71167&supplierId=59037&status=1&projectId=167004"aIds=["73778"]&pid=125205585&tid=c6fe453992411eb86630231c2fbb316&auth=V9xEfcxkYagvz3ltIRV1rytRVRw
Testing Demo Projects
The following endpoints can be used to verify redirection for returning to SurveyJunkie and clickable projects for panelists that qualify.
Note that these endpoints are only available on the demo environment, and not in the production environment.
Verify Clickable Projects
The following is a GET request example that returns a list of clickable projects.
curl -X GET \
'https://go.audience.disqo-demo.com/verify/' \
-H 'Authorization: Basic {base64Key}'
The following is a 200 response example.
{
"clientId": "35055",
"clickableProjects": [
{
"projectId": "LoadProject-21871",
"clickableQuotas": [
{
"quotaId": "LoadQuota-71282",
"url": "https://go.audience.disqo-demo.com?clientId=35055&projectId=LoadProject-21871"aIds=%5B%22LoadQuota-71282%22%5D&supplierId=54637&tid=verifyTestTid&pid=verifyTestPid&auth=bDd7gmY50UxWbckbjvD0aTHA6UY"
}
]
},
{
"projectId": "standardProjectWithCustomQuestion1",
"clickableQuotas": [
{
"quotaId": "quotaWithCustomQuestion1",
"url": "https://go.audience.disqo-demo.com?clientId=35055&projectId=standardProjectWithCustomQuestion1"aIds=%5B%22quotaWithCustomQuestion1%22%5D&supplierId=54637&tid=verifyTestTid&pid=verifyTestPid&auth=Gs5HwMZoTJMwPZxlwKhM392xqrM"
}
]
},
{
"projectId": "standardProjectWithCustomQuestion2",
"clickableQuotas": [
{
"quotaId": "quotaWithCustomQuestion1",
"url": "https://go.audience.disqo-demo.com?clientId=35055&projectId=standardProjectWithCustomQuestion2"aIds=%5B%22quotaWithCustomQuestion1%22%5D&supplierId=54637&tid=verifyTestTid&pid=verifyTestPid&auth=bZvEa5jYZC2o2KYr8i1EZVIe3Yo"
}
]
}
]
}
This request returns a list of projects that are open, accepting panelists, and contain live quotas that are accepting panelists.
This endpoint is enabled on the demo environment, and not the production environment, since it is only used for testing.
Method | URL |
---|---|
GET | https://go.audience.disqo-demo.com/verify/ |
Response Attributes
The following are attributes returned with a successful 200 request.
Attribute | Type | Description |
---|---|---|
clientId | integer | The client ID. |
clickableProjects | array | An array of clickable projects. Clickable means open, accepting panelists, and containing live quotas that are accepting panelists. See the table below for values in this array. |
clickableProjects
The following items appear in the clickableProjects array.
Attribute | Type | Description |
---|---|---|
clickableQuotas | array | An array containing the quotaId, and the URL that redirects to the survey associated with that given Quota. Users can put the URL into a browser, and confirm where a panelist will be directed for that particular survey. |
projectId | string | The Project ID. |
Verify Returning from Survey
The following is a GET request example that verifies that the redirection is correct.
curl -X GET \
'https://go.audience.disqo-demo.com/verify/callback?clientId={clientId}&projectId={projectId}"aIds={quotaIds}&supplierId={supplierId}&tid={tid}&pid={pid}&status={status}&auth={auth}' \
-H 'Authorization: Basic {base64Key}'
The following is a 200 response example.
{
"verificationStatus": "AUDIENCE_SUCCESS_STATUS",
"audienceParameters": {
"clientId": "33344",
"projectId": "174483",
"quotaIds": "[\"quotaId1\",\"quotaId2\"]",
"supplierId": "54637",
"tid": "testTid",
"pid": "testPid",
"status": "1",
"substatus": null,
"auth": "Glyy7j5KrUV1dukQki3s8vAWTpE"
},
"inputToHash": "clientId=33344&projectId=174483&supplierId=54637&extra=sadd"aIds=[\"quotaId1\",\"quotaId2\"]&tid=testTid&pid=testPid&status=1&auth=Glyy7j5KrUV1dukQki3s8vAWTpE",
"hashKey": "-----------------------------IJK",
"expectedHash": "Glyy7j5KrUV1dukQki3s8vAWTpE"
}
This request simulates a redirection back to the Survey Junkie supplier, receives the same query parameters as the Callback endpoint. The returned data indicates whether the redirection was successful or not, displaying any errors present in the request.
This endpoint is enabled on the demo environment, and not the production environment, since it is only used for testing.
Method | URL |
---|---|
GET | https://go.audience.disqo-demo.com/verify/callback |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
auth | string | yes | A URL-safe hash key used to secure the data being passed over the URL parameter. We use this to confirm that validity of the URL. See the Hashing section for more information. |
clientId | integer | yes | The five digit client ID. |
pid | string | yes | The panelist ID, unique to the user. |
projectId | string | yes | The project ID. |
quotaIds | string | yes | JSON formatted list of quota IDs, for example: ["quotaId1","quotaId2"] . |
status | integer | yes | The user status. |
substatus | integer | no | The user substatus. |
supplierId | integer | yes | The integer value representing the supplier of the panelist. Note that the value 54637 should be used for DISQO and Survey Junkie panelists. |
tid | string | yes | The tracking ID, unique to the user and the session. |
Response Attributes
The following are attributes returned with a successful 200 request.
Attribute | Type | Description |
---|---|---|
audienceParameters | object | An object of parameters with survey data. Refer to the Path Arguments above for more information. |
expectedHash | string | The expected hash. |
hashKey | string | The hash key. |
inputToHash | string | The URL portion to hash. |
verificationStatus | string | The verification status. |
Testing Guide
Complete this testing section prior to obtaining access to the production environment.
Common Issues
Common issues that occur when working with the redirection service are as follows.
- There is no Project with an
OPEN
status with a Quota with aLIVE
status. Panelists will only be sent toOPEN
status Projects with at least oneLIVE
status Quota. - When receiving a panelist from DISQO Audience, the external/client system has not been modified to properly accept/send appended content in the URL.
- When returning the panelist to DISQO Audience, the external/client URL has issues such as the hash is incorrect, there is missing appended URL content, or URL parameters have been added multiple times.
Step-by-Step Testing Instructions
The following instructions should only be used on the DEMO
environment.
Verify That the Survey is Clickable/Viewable to Panelists
- Create a Project on the DEMO environment.
- Set the Project URL to the site the survey panelists will visit. Note that path arguments including
clientId
andprojectId
will be added to this URL. - Use the qualifications in the Suggested Metrics section.
- Ensure the Project
status
isOPEN
.
- Set the Project URL to the site the survey panelists will visit. Note that path arguments including
- Create a Quota on the DEMO environment.
- Ensure the Quota is created under the Project created in the previous step.
- Use the qualifications in the Suggested Metrics section.
- Change the Quota
status
toLIVE
. - Make sure the calculated field
isAcceptingPanelists
is set totrue
for both the Project and Quota created.- If set to
false
, it is probably due to theenforceScreenOut
property being set totrue
and no clicks/completes left for the project. Try changing the value ofclicksWanted
orcompletesWanted
, according to the Project’strackingField
. If this does not solve the issue, ensure theOPEN
Project contains aLIVE
Quota.
- If set to
- Make a
GET
request tohttps://go.audience.disqo-demo.com/verify/
with the providedclientId
andapiKey
as basic authentication. The response will includeOPEN
Projects withLIVE
Quotas, and will contain a URL field with the valuehttps://go.audience.disqo-demo.com/
appended with path arguments. These will be used to verify the authenticity of the request. The URL is the site that panelists will be redirected to before being sent to the survey URL. - Visit the URL provided by the
/verify/
endpoint to be redirected into the survey URL. Our system will register this as a click into the survey and will simulate the behavior of clicks in Survey Junkie. - Make sure that clicking the URL leads to the correct Project. The URL generated will be the exact URL panelists will be sent to.
Verify Survey Redirection Back to SurveyJunkie After Completion/Screen-Out
Before proceeding, ensure a clickable Survey is correctly set up as instructed above. Continue to interact only with the DEMO environment.
- Go to the survey site and complete the survey to trigger a successful complete, or screen-out redirection behavior, on the external/client system.
- Grab the output redirection from the external/client system to
https://go.audience.disqo-demo.com/callback?...
and change the route tohttps://go.audience.disqo-demo.com/verify/callback?...
to issue aGET
request to our verify callback endpoint.- Ensure all query parameters after the
?
sign remain and are unchanged. - Append the
clientId
andapiKey
as basic authentication. - The API will return a
200
status if everything is correctly structured in the redirection (even if a screen-out status is provided).
- Ensure all query parameters after the
- If the response status is
400
when verifying the callback endpoint, analyze the response and correct it to generate a working redirection.- The
audienceParameters
field prints out all information relevant to our system and the values obtained from the redirection URL. If you see different values than what you intended to send, check for syntax errors in the URL query. - The
inputToHash
field prints the exact text that was used along with thehashKey
assigned to theclientId
to produce the expectedauth
value. Note that this is outputted in JSON format, so double quotes are escaped with a\
character. - The
expectedHash
shows the value expected by applying a HMAC SHA1 hash toinputToHash
by using the providedhashKey
. If theverificationStatus
isAUDIENCE_SCREEN_OUT_INVALID_HASH
, look at theexpectedHash
field for the correct auth value. - If an invalid
clientId
orsupplierId
is provided to the verify callback endpoint, the system will not be able to generate the expected hash or expected behavior, and an error message will be returned.
- The
- The integration is considered successful when all scenarios (completion, drop-off, and screen-out) return
200
responses. - Reach out to your DISQO contact for final verification and production credentials.
Feasibility
Feasibility is an endpoint enabling retrieval of an estimate of the number of feasible completes for a Project.
The following are the base URLs for the Feasibility API.
Environment | URL |
---|---|
PROD | https://feasibility-api.audience.disqo.com |
DEMO | https://feasibility-api.audience.disqo-demo.com |
Note: Feasibility is an optional function.
Get Feasibility Info
The following POST request will return feasibility information for each quota submitted.
curl -X POST \
'{baseUrl}/v1/number-of-panelists/' \
'{"project":{"country":"US","daysInField":7,"incidenceRate":100,"loi":3,"devices":["DESKTOP","TABLET"],"quotas":[{"id":"quotaId","cpi":2,"completesWanted":44,"qualifications":{"and":[{"range":{"values":[{"gte":20,"lte":50},{"gte":60,"lte":80}],"question":"age"}},{"and":[{"range":{"values":[{"gte":1,"lte":4}],"question":"anychildage"}},{"equals":{"values":["1"],"question":"anychildgender"}}]}]}}]}}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
The following is a 200 response example with
numberOfPanelists
values for each Quota.
{
"project": {
"quotas": [
{
"id": "quotaId1",
"numberOfPanelists": 223
},
{
"id": "quotaId2",
"numberOfPanelists": 0
}
]
}
}
This request returns an estimated number of users that are reasonably expected to successfully complete a survey if it is run, given the Project's Quota details.
At this time, feasibility information is returned per Quota and not per Project.
Method | URL |
---|---|
POST | /v1/number-of-panelists/ |
Note that the request should be made to the base URL https://feasibility-api.audience.disqo.com
with the same credentials as are used for requests to https://projects-api.audience.disqo.com
.
Body Arguments
The following are all request body fields required to return feasibility information. All fields must be nested in the project
object. As part of the quotas
object, qualifications
must be passed. Refer to the Feasibility Qualifications table in this section for a list of questions supported by the Feasibility API.
Note that Feasibility currently does not support all questions in the questions library section.
project
Attribute | Type | Description |
---|---|---|
country | string | The two-letter ISO country code. |
daysInField | integer | The number of days for which the survey will be open and accepting panelist entries. |
devices | string | The devices that a survey can be taken on. Devices can be DESKTOP , PHONE , and/or TABLET . |
incidenceRate | integer | The expected conversion rate for those who match qualifications, once they enter the survey. |
loi | integer | The length of interview in minutes. |
quotas | object | The Quotas associated with the specified Project. Refer to the table below for more information. |
quotas
Attribute | Type | Description |
---|---|---|
completesWanted | integer | The amount of completes wanted for a Project or Quota. |
cpi | integer | The cost per incidence in USD. |
id | string | The Quota ID. |
qualifications | object | The qualifications for the Quota. At this time, we support the Qualifications listed in the following table. |
Feasibility Qualifications
This section includes the Feasibility qualifications and supported questions.
Attribute | Type | Description |
---|---|---|
and | array | Panelists should meet all qualifications listed in the and logic sequence. This attribute can contain other attributes (range and equals ). |
equals | object | The panelist qualifications should equal the values listed in values array. This attribute can contain other attributes (values and question ). |
range | object | The panelist qualifications should be in the range of the values listed in the values array. This attribute can contain other attributes (values and question ). |
Questions
Question Key | Question Text |
---|---|
age |
N/A |
gender |
What is your gender? |
geocountry |
What country do you live in? |
geodmaregioncode |
DMA |
georegion |
State/provinces |
geopostalcode |
An array of postal codes in the country's format (5 digit for US, 4 digit for Australia, and 6 digit for Canada). Example of US postal code values: ["90802", "90804"] . |
groceryshoppingduty |
How much of your household's grocery shopping do you do yourself? |
rentorown |
What's your living situation? |
maritalstatus |
What's your marital status? |
ethnicity |
What's your race? |
languageproficiencyspanish |
Do you speak Spanish? |
hispanicorigin |
Are you of Hispanic, Latino or Spanish origin? |
educationlevel |
What's the highest level of education you have received? |
householdincome |
What's your household income level? |
politicalaffiliation |
Are you a registered voter? If yes, what's your political affiliation? |
employmentstatus |
What's your employment status? |
industry |
In which industry or profession do you work? Select the best option. |
jobposition |
What is your job title, level or responsibility? |
employeecount |
Approximately how many employees work at your organization (all locations)? |
children |
How many children do you have? (Do you have children in the household) |
anychildgender |
N/A |
anychildage |
N/A |
Note that this is not the entire Project object, and it is unnecessary to pass qualifications at the Project level for this request.
A successful request will return a 200
response with numberOfPanelists
values for each Quota in the Project.
Custom Questions
The Custom Questions endpoints enable the creation and management of custom questions for use in Projects. Custom questions are questions that do not exist in the standard array of DISQO qualifications. When a custom question is included in a Project, panelists will be shown the question before being matched to that Project; only panelists that respond to the question with the requested answer will be matched to the Project.
Custom Questions can only be used inside a top-level AND
predicate, and not OR
or NOT
. Custom Questions cannot be used on the Quota level.
The following are the base URLs for the Custom Questions API.
Environment | URL |
---|---|
PROD | https://custom-questions-api.audience.disqo.com |
DEMO | https://custom-questions-api.audience.disqo-demo.com |
Custom Questions Object
The following is a 200 response example.
{
"questionKey": "xNs1zGi94f",
"uiInputType": "CHECKBOXES",
"answerType": "TEXT",
"multiValue": false,
"question": "Which browser are you using?",
"predefinedAnswers": [
{
"label": "Chrome",
"answerValue": "chrome",
"sortOrder": 1
},
{
"label": "Safari",
"answerValue": "safari",
"sortOrder": 1
},
{
"label": "Firefox",
"answerValue": "firefox",
"sortOrder": 1
},
{
"label": "Explorer",
"answerValue": "explorer",
"sortOrder": 1
},
{
"label": "Other",
"answerValue": "other",
"sortOrder": 1
}
]
}
This section outlines each of the fields that appear in the Custom Questions response object.
Attribute | Type | Description |
---|---|---|
answerType | string | The value type of the answers. Values accepted in this field are TEXT , NUMERIC , and DATE . |
clientId | integer | The unique client ID. |
id | integer | The custom question ID. |
multiValue | boolean | Whether or not the answers can be single selection or multiple selection. |
questionKey | string | The custom question key ID. This field only accepts alphanumerical values and dashes. This is the value that will be used to reference the question in the Qualifications object |
predefinedAnswers | array | An array of predefined answer selections for a question. These will be displayed to the panelists. See the table below for more information. |
uiInputType | string | The UI input type. Values accepted in this field are CHECKBOXES , RADIO_BUTTONS , DROPDOWN_LISTS , and LIST_BOXES . |
question | string | The question displayed to the panelist. |
predefinedAnswers
Attribute | Type | Description |
---|---|---|
answerValue | string | The string that will be recorded as the answer to the question. |
label | string | The label that will be displayed for the answer. |
sortOrder | integer | The index integer value that will be used to order the answers. |
Get Questions by clientId
The following GET request returns questions by
clientId
.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/questions' \
-H 'Authorization: Basic {base64Key}'
This request returns a list of custom questions associated with a specific clientId
.
Note that this endpoint is coming in November 2020.
Method | URL |
---|---|
GET | https://custom-questions-api.audience.disqo.com/v1/clients/{clientId}/questions |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | string | yes | The unique client ID. |
A successful request returns a 200 response with the Custom Questions Object.
Get Question by questionKey
The following GET request returns a question by
questionKey
.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/questions/{questionKey}' \
-H 'Authorization: Basic {base64Key}'
This request returns a question by questionKey
.
Note that this endpoint is coming in November 2020.
Method | URL |
---|---|
GET | https://custom-questions-api.audience.disqo.com/v1/clients/{clientId}/questions/{questionKey} |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | string | yes | The unique client ID. |
questionKey | string | yes | The question ID. |
A successful request returns a 200 response with the Custom Questions Object.
Create Custom Question
The following POST request creates a custom question.
curl -X POST \
'https://custom-questions-api.audience.disqo.com/v1/clients/{clientId}/questions' \
-H 'Content-Type: application/json' \
-d '{"questionKey":"question-12345","uiInputType":"CHECKBOXES","answerType":"TEXT","question":"What is you favorite pie flavor?","multiValue":true,"predefinedAnswers":[{"label":"string","sortOrder":0,"answerValue":"string"}]}' \
-H 'Authorization: Basic {base64Key}'
This request creates a new Custom Question. Pass the clientId
in the URL, and the entire Custom Questions object in the request body. You must include any Predefined Answers at the same time as you create a new Custom Question by passing items into the Predefined Answers
array.
Note that this endpoint is coming in November 2020.
Method | URL |
---|---|
POST | https://custom-questions-api.audience.disqo.com/v1/clients/{clientId}/questions |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | string | yes | The client ID. |
A successful request returns a 201 response with the Custom Questions Object.
Included and Excluded Users
The Audience API enables including and excluding users from Projects, thereby disallowing (regardless of qualifications) or inviting users to take a survey.
Included Users Object
The following is a 201 response example.
{
"users": [
"1",
"2"
]
}
This section outlines each of the fields that appear in the Included Users response object.
Attribute | Type | Description |
---|---|---|
users | array | The users that should be recontacted to take a specific survey. |
Create Included Users
The following is a POST request example that will create a group of Included Users.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/includedUsers' \
-d '{"ttl": 48, "users": ["1","2"]}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
This request creates a list of included users, meaning that these users will be recontacted to take a specific survey. Pass the clientId
and projectId
in the URL. Also pass users
in the body along with the corresponding userId
of those individuals in an array.
Note that to add additional values to users
, simply make another POST
request and those values will be added to the existing array.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects/{projectId}/includedUsers |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
Pass an array called users
containing userId
values and an OPTIONAL integer called ttl
that represents how many hours the user is included in a project (if it is not provided, the user's invitation will not expire).
Attribute | Type | Required | Description |
---|---|---|---|
userId | integer | yes | userId is a unique id of a Survey Junkie user (panelist) who participates in the survey, Can also be referenced as a pid or Panelist ID. |
ttl | integer | no | ttl , spelled as time-to-live, is the numeric representation of hours in which the invitation for users to answer an inclusion list/recontact survey expires. |
A successful request returns the Included Users Object.
Included Users Object
The following is a 201 response example.
{
"users": [
{
"userId": "12345",
"expirationDate": "1996-03-20T01:01:00Z"
}
]
}
This section outlines each of the fields that appear in the Included Users response object.
Attribute | Type | Description |
---|---|---|
users | array | The users that should be recontacted to take a specific survey along with their expiration date. |
Create Included Users with a specified TTL attached
The following is a
POST
request example that creates a group of Included Users with their specifiedttl
attached.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/includedUsers/ttl' \
-d '{"users":[{"userId": "12345","ttl": 48}]}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
This request creates a list of included users, meaning that these users will be recontacted to take a specific survey. Pass the clientId
and projectId
in the URL. Also pass users
array in the body along with the corresponding userId
and ttl
of those individuals in an object.
Note that to add additional values to users
, simply make another POST
request and those values will be added to the existing array.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects/{projectId}/includedUsers/ttl |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
Pass an array called users
containing userId
values. A successful request returns the Included Users Object.
Create Included Users with a specified inviteId attached
Calls to this endpoint are optional; however, all properties are required when the call is executed. The absence of any property results in 400 Bad Request
.
The following is a
POST
request example that creates a group of Included Users with their specifiedinviteId
attached.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/includedUsers/invite' \
-d '{"users":[{"userId": "12345","inviteId": 452a7eb2-5529-4d42-b3a7-1210094a4349,"ttl": 48}]}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
Similarly to the included users with the specified TTL, this request creates a list of included users who will be recontacted to take a specific survey. Pass the clientId
and projectId
in the URL. Also pass users
array in the body along with the corresponding userId
and inviteId
of those individuals in an object.
Note that to add additional values to users
, simply make another POST
request and those values will be added to the existing array.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects/{projectId}/includedUsers/invite |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique project ID. |
Body Arguments
Pass an array called users
containing user_id
, inviteId
, and ttl
values. Note that the ttl
value is optional. A successful request returns the following:
{
"users": [
{
"userId": "12345",
"inviteId": "452a7eb2-5529-4d42-b3a7-1210094a4349",
"expirationDate": "1996-03-20T01:01:00Z"
}
]
}
Get Included Users
The following is a GET request example that will return a list of Included Users.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/includedUsers' \
-H 'Authorization: Basic {base64Key}'
This request returns a list of all Included Users for a specific Project.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId}/includedUsers |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request returns the Included Users Object.
Get Included Users with inviteId attached
Calls to this endpoint are optional; however, all properties are required when the call is executed. The absence of any property results in 404 Not Found
.
The following is a GET request example that will return a list of Included Users with
inviteId
attached.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/includedUsers/invite' \
-H 'Authorization: Basic {base64Key}'
This request returns a list of all Included Users for a specific Project. Pass the clientId
and projectId
in the URL. inviteId
will be provided on the POST create included users with inviteId
endpoint.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId}/includedUser/invite |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request returns the following:
{
"users": [
{
"userId": "12345",
"inviteId": "452a7eb2-5529-4d42-b3a7-1210094a4349",
"expirationDate": "1996-03-20T01:01:00Z"
}
]
}
Delete Included Users
The following is a DELETE request example that will delete a list of Included Users.
curl -X DELETE \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/includedUsers' \
-H 'Authorization: Basic {base64Key}'
This request deletes a list of Included Users for a specific Project.
Method | URL |
---|---|
DELETE | /v1/clients/{clientId}/projects/{projectId}/includedUsers |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request will return a 204 response.
Excluded Users Object
The following is a 201 response example.
{
"users": [
"1",
"2"
]
}
This section outlines each of the fields that appear in the Excluded Users response object.
Attribute | Type | Description |
---|---|---|
users | array | The users that should be excluded from taking a specific survey. |
Create Excluded Users
The following is a POST request example that will create a group of Excluded Users.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/excludedUsers' \
-d '{"users": ["1","2"]}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic {base64Key}'
This request creates a list of excluded users, meaning that these users should not be able to take a specific survey. Pass the clientId
and projectId
in the URL. Also pass users
in the body along with the corresponding userId
of those individuals in an array.
Note that to add additional values to users
, simply make another POST
request and those values will be added to the existing array.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects/{projectId}/excludedUsers |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
Pass an array called users
containing userId
values. A successful request returns the Excluded Users Object.
Get Excluded Users
The following is a GET request example that will return a list of Excluded Users.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/excludedUsers' \
-H 'Authorization: Basic {base64Key}'
This request returns a list of all Excluded Users for a specific Project.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId}/excludedUsers |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request returns the Excluded Users Object.
Delete Excluded Users
The following is a DELETE request example that will delete a list of Excluded Users.
curl -X DELETE \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/excludedUsers' \
-H 'Authorization: Basic {base64Key}'
This request deletes a list of Excluded Users for a specific Project.
Method | URL |
---|---|
DELETE | /v1/clients/{clientId}/projects/{projectId}/excludedUsers |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request will return a 204 response.
Excluded Projects
The Audience API enables excluding panelists from a survey if those users participated in another specified survey. This feature disallows users who have started or completed specific surveys from taking the active project. A user can be excluded based on their level of interaction with a previous survey, including whether the panelist successfully completed the previous survey or was terminated.
Excluded Projects Object
The following is a 201 response example.
{
"excludedProjects": [
{
"statuses": [
"SURVEY_STATUS_STARTED",
"SURVEY_STATUS_TERMINATED"
],
"projectId": "excluded1"
},
{
"statuses": [
"SURVEY_STATUS_STARTED"
],
"projectId": "excluded2"
},
{
"statuses": [
"SURVEY_STATUS_COMPLETE",
"SURVEY_STATUS_QUOTA_FULL"
],
"projectId": "excluded3"
},
{
"statuses": [
"SURVEY_STATUS_COMPLETE"
],
"projectId": "excluded4"
}
]
}
This section outlines each of the fields that appear in the Excluded Projects response object.
Attribute | Type | Description |
---|---|---|
excludedProjects | array | An array of objects. Each object holds statuses and projectId . See the table below for more information. |
excludedProjects
Attribute | Type | Description |
---|---|---|
projectId | string | The ID of the project. |
statuses | array | The statuses that should apply for the exclusion. These statuses reflect the user's interaction with the indicated project. See the statuses table below for more information. |
statuses
Status | Description |
---|---|
SURVEY_STATUS_STARTED |
The panelist was sent to the survey. |
SURVEY_STATUS_COMPLETE |
The panelist completed the survey. |
SURVEY_STATUS_QUOTA_FULL |
The panelist was sent to the survey but the survey had already been filled for their quota. |
SURVEY_STATUS_TERMINATED |
The panelist was terminated. |
Create Excluded Projects
The following POST request creates excluded projects.
curl -X POST \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/excludedProjects' \
--data-binary '{"excludedProjects":[{"statuses":["SURVEY_STATUS_STARTED","SURVEY_STATUS_STARTED","SURVEY_STATUS_TERMINATED"],"projectId":"excluded1"},{"statuses":["SURVEY_STATUS_STARTED"],"projectId":"excluded2"},{"statuses":["SURVEY_STATUS_COMPLETE","SURVEY_STATUS_QUOTA_FULL"],"projectId":"excluded3"},{"statuses":["SURVEY_STATUS_COMPLETE"],"projectId":"excluded4"}]}' \
-H 'Authorization: Basic {base64Key}'
This request creates excluded projects for a specific project.
Method | URL |
---|---|
POST | /v1/clients/{clientId}/projects/{projectId}/excludedProjects |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
Body Arguments
Pass an array called excludedProjects
containing at least one object with statuses
and projectId
. Note that the projectId
should be that of the project to exclude. For a list of statuses, refer to the statuses section.
A successful request will return a 201
response with the Excluded Projects object.
Get Excluded Projects
The following GET request creates excluded projects.
curl -X GET \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/excludedProjects' \
-H 'Authorization: Basic {base64Key}'
This request returns excluded projects, targeted by projectId
.
Method | URL |
---|---|
GET | /v1/clients/{clientId}/projects/{projectId}/excludedProjects |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request will return a 200
response with the Excluded Projects object.
Delete Excluded Projects
The following DELETE request creates excluded projects.
curl -X DELETE \
'{baseUrl}/v1/clients/{clientId}/projects/{projectId}/excludedProjects' \
-H 'Authorization: Basic {base64Key}'
This request deletes excluded projects, targeted by projectId
.
Method | URL |
---|---|
DELETE | /v1/clients/{clientId}/projects/{projectId}/excludedProjects |
Path Arguments
Attribute | Type | Required | Description |
---|---|---|---|
clientId | integer | yes | The unique client ID. |
projectId | string | yes | The unique Project ID. |
A successful request will return a 204
response with no content.
Questions Library
When qualifications require multiple attributes like child (age and gender) and vehicle (make, model, and year), use
and
within yourqualifications
criteria. Thisand
should contain both criteria. In the following example,qualifications
include having a female child between the ages of 1 and 10.
"and": [
{
"range": {
"values": [
{
"gte": 1,
"lte": 10
}
],
"question": "anychildage"
}
},
{
"equals": {
"values": [
"1"
],
"question": "anychildgender"
}
}
]
The following is a comprehensive table including all questions that our system recognizes. These can be included in the Projects and Quotas qualifications
object.
For a full list of the questions library, download the DISQO Audience Questions xlsx.
To produce the most effect results, map as many qualifications as possible.
Question Key | Question Text | Answer ID and Description |
---|---|---|
gender |
What is your gender? | 1 - Female2 - Male |
geocountry |
What country do you live in? | US - United StatesCA - CanadaAU - Australia |
geousregion |
What region do you live in? | 1 - Northeast2 - Midwest3 - South4 - West |
georegion |
What state / province do you live in? | United States:AL - Alabama AK - Alaska AZ - Arizona AR - Arkansas CA - California CO - Colorado CT - Connecticut DE - Delaware FL - Florida GA - Georgia HI - Hawaii ID - Idaho IL - Illinois IN - Indiana IA - Iowa KS - Kansas KY - Kentucky LA - Louisiana ME - Maine MD - Maryland MA - Massachusetts MI - Michigan MN - MinnesotaMS - MississippiMO - Missouri MT - Montana NE - Nebraska NV - Nevada NH - New Hampshire NJ - New Jersey NM - New Mexico NY - New York NC - North Carolina ND - North Dakota OH - Ohio OK - Oklahoma OR - Oregon PA Pennsylvania RI - Rhode Island SC - South Carolina SD - South Dakota TN - Tennessee TX - Texas UT - Utah VT - Vermont VA - Virginia WA - Washington WV - West Virginia WI - Wisconsin WY - Wyoming AA - U.S. Armed Forces – Americas AE - U.S. Armed Forces – Europe AP - U.S. Armed Forces – Pacific AS - American Samoa DC - District of Columbia FM - Federated States of Micronesia GU - Guam MH - Marshall Islands MP - Northern Mariana Islands PR - Puerto Rico PW - Palau VI - Virgin IslandsCanada: AB - Alberta BC - British Columbia MB - Manitoba NB - New Brunswich NL - Newfoundland NS - Nova Scotia NU - Nunavut NT - Northwest Territories ON - Ontario QC - Quebec PE - P.E.I SK - Saskatchewan YT - YukonAustralia: AU - Australia ACT - Australian Capital Territory CHR - Christmas Island COC - Cocos (Keeling) Islands HMD - Heard Island and McDonald Islands NSW - New South Wales NF - Norfolk Island NT - Northern Territory QLD - Queensland SA - South Australia TAS - Tasmania VIC - Victoria WA - Western Australia |
geopostalcode |
What's your ZIP or Postal Code? | An array of postal codes in the country's format (5 digit for US, 4 digit for Australia, and 6 digit for Canada). Example of US postal code values: ["90802", "90804"]. |
pets |
Do you own any of the following pets? Select all that apply. | 1 - Bird2 - Cat3 - Dog4 - Fish5 - Horse8 - Amphibians (frogs, toads, etc.)9 - Small animals or rodents (hamsters, mice, rabbits, ferrets, etc.)10 - Reptiles (turtles, snakes, lizards, etc.)11 - Insects / Arachnids12 - Livestock (goat, pig, chicken, cattle)6 - Other7 - Don't Own Pets |
groceryshoppingduty |
How much of your household's grocery shopping do you do yourself? | 1 - All of It2 - Almost All of It3 - About Half of It4 - Less Than Half5 - None |
rentorown |
What's your living situation? | 1 - Own2 - Rent3 - Live With Parents / Relatives5 - Own - Home6 - Own - Apartment / Condo7 - Rent - Home8 - Rent - Apartment / Condo9 - University Residence10 - Farm4 - Other |
maritalstatus |
What's your marital status? | 1 - Single2 - Married3 - Domestic Partnership4 - Divorced5 - Widowed6 - Separated7 - Prefer Not to Say |
ethnicity |
What's your race? | 1 - White / Caucasian2 - Black / African American3 - American Indian / Alaskan Native4 - Asian9 - Asian, Indian10 - Asian, Chinese11 - Asian, Filipino12 - Asian, Japanese13 - Asian, Korean14 - Asian, Vietnamese15 - Asian, Other5 - Middle Eastern6 - Pacific Islander16 - Pacific Islander, Native Hawaiian17 - Pacific Islander, Guamanian18 - Pacific Islander, Samoan19 - Pacific Islander, Other7 - Hispanic or Mixed / Other Race8 - Prefer Not to Say |
languageproficiencyspanish |
Do you speak Spanish? | 1 - No2 - Yes, More English than Spanish3 - Yes, English and Spanish Equally4 - Yes, More Spanish than English5 - Yes, Spanish Only |
hispanicorigin |
Are you of Hispanic, Latino or Spanish origin? | 1 - No2 - Yes, Mexican, Mexican American, Chicano3 - Yes, Cuban4 - Yes, Spanish6 - Yes, Argentinian7 - Yes, Colombian8 - Yes, Ecuadorian9 - Yes, Salvadoran10 - Yes, Guatemalan11 - Yes, Nicaraguan12 - Yes, Panamanian13 - Yes, Peruvian14 - Yes, Venezuelan5 - Yes, Other |
children |
How many children do you have? (Do you have children in the household) | 1 - 0 2 - 1 3 - 2 4 - 3 5 - 4 6 - 5 7 - 6 8 - 7 9 - 8 |
householdincome |
What's your household income level? | 23 - Less than $5,000 24 - $5,000 to $9,999 2 - $10,000 to $14,999 3 - $15,000 to $19,999 4 - $20,000 to $24,999 5 - $25,000 to $29,999 6 - $30,000 to $34,999 7 - $35,000 to $39,999 8 - $40,000 to $44,999 9 - $45,000 to $49,999 10 - $50,000 to $54,999 11 - $55,000 to $59,999 12 - $60,000 to $64,999 13 - $65,000 to $69,999 14 - $70,000 to $74,999 15 - $75,000 to $79,999 25 - $80,000 to $84,999 26 - $85,000 to $89,999 27 - $90,000 to $94,999 28 - $95,000 to $99,999 18 - $100,000 to $124,999 19 - $125,000 to $149,999 29 - $150,000 to $174,999 30 - $175,000 to $199,999 31 - $200,000 to $249,999 32 - $250,000 and above 22 - Prefer Not to Say |
educationlevel |
What's the highest level of education you have received? | 11 - 3rd Grade or Less 12 - Middle School - Grades 4 - 8 1 - Completed Some High School 2 - High School Graduate 9 - Vocational Training / Trade School 3 - Some College / University 4 - Associate's / 2-Yr. Degree 5 - Bachelor's Degree 6 - Some Postgraduate Study 7 - Master's Degree 8 - Doctorate / PhD |
politicalaffiliation |
Are you a registered voter? If yes, what's your political affiliation? | 1 - Democrat 2 - Green 3 - Independent 4 - Libertarian 5 - Republican 6 - Reside Outside U.S. 7 - No Affiliation 8 - Prefer Not to Say 9 - No |
employmentstatus |
What's your employment status? | 1 - Employed Full-Time 2 - Employed Part-Time 3 - Self-Employed Full-Time 4 - Self-Employed Part-Time 5 - Homemaker / Stay-at-Home Parent 8 - Student Full-Time 9 - Student Part-Time 12 - Active military 13 - Inactive military/Veteran 6 - Retired 10 - Permanently Unemployed / Disabled 11 - Unemployed 14 - None of the Above |
industry |
In which industry or profession do you work? Select the best option. | 67 - Computer - Electronics 68 - Computer - Hardware 69 - Computer - Reseller (Software / Hardware) 70 - Computer - Security 71 - Computer - Software 72 - Computer - Storage 61 - Consumer - Electronics 19 - Consumer - Food & Beverages 73 - Consumer - Packaged Goods 60 - Financial - Accounting 7 - Financial - Banking 74 - Financial - Brokerage 75 - Information Technology 25 - Internet 31 - Market Research 76 - Technology Services - Computers 77 - Technology Services - Software 78 - Technology Services - Web Development 79 - Technology Services - Other 80 - Accommodation - Hotels 81 - Accommodation - Restaurants 82 - Advertising 4 - Architecture 83 - Aviation 13 - Construction 17 - Entertainment 84 - Equipment 18 - Fashion / Apparel 30 - Manufacturing 85 - Marketing 86 - Media 40 - Printing / Publishing 87 - Public Relations 48 - Sales 88 - Skills Trade - Carpentry 15 - Skills Trade - Electrical 45 - Skills Trade - Repair Services 89 - Tourism 66 - Transportation 54 - Travel 90 - Athletics - Fitness 49 - Athletics - Sports 10 - Casino 12 - Communications/Information 14 - Education 91 - Employment 92 - Environmental Services 62 - Human Resources 24 - Insurance 26 - Law - Enforcement 27 - Law - Legal Services 93 - Non Profit / Charity 38 - Personal Services 41 - Public Administration 94 - Public Sector 43 - Real Estate / Property 46 - Retail / Wholesale Trade 44 - Religious Organizations 95 - Social Services 65 - Telecommunications 96 - Aerospace / Defense 6 - Automotive 97 - Bio-Tech 2 - Business Services - Administrative Support 9 - Business Services - Other 98 - Consulting - Training 29 - Consulting - Other 16 - Engineering 20 - Government 99 - Health Care - Dentistry 100 - Health Care - Pharmaceuticals 101 - Health Care - Veterinary Services 102 - Health Care - Other 103 - Industrial Goods 104 - Logistics - Distribution 105 - Logistics - Shipping 106 - Logistics - Warehousing 32 - Military 64 - Security 107 - Agriculture - Fishing 108 - Agriculture - Forestry 109 - Agriculture - Hunting 110 - Agriculture - Other 11 - Chemical Industry 111 - Energy - Oil & Gas 112 - Energy - Other 28 - Leisure & Recreation Services 113 - Materials - Chemical 114 - Materials - Metal 115 - Materials - Mineral 116 - Materials - Oil 117 - Materials - Plastics 118 - Materials - Rubber 119 - Mining - Metals 120 - Mining - Minerals 121 - Mining - Oils 122 - Natural Resources 55 - Utilities & Energy Providers - gas, water, electricity 123 - Waste Management 58 - None of the Above 124 - I Don't Work |
jobposition |
What is your job title, level or responsibility? | 32 - C-Level (e.g. CEO, CFO), Owner, Partner, President 33 - Vice President (EVP, SVP, AVP, VP) 34 - Director (Group Director, Sr. Director, Director) 35 - Manager (Group Manager, Sr. Manager, Manager, Program Manager) 36 - Supervisor 37 - Administrative (Clerical or Support Staff) 38 - Associate / Senior Associate 39 - Consultant 40 - Analyst 41 - Professional / Professional Specialist 42 - Technician / Technical Specialist 43 - Tradesman / Trade Specialist 44 - Intern 45 - Volunteer 31 - None of the above |
purchaseauth |
In which areas of your company are you involved in purchasing products or services? Select all that apply. | 2 - Advertising / Marketing Services 3 - Company Liability / Insurance 4 - IT Hardware 5 - IT Software 6 - Consulting Services 7 - Employee Benefits 8 - Financial Services 9 - Food / Beverage Services 10 - HR / Personnel Services 11 - Internet / Data Services 12 - Legal Services 13 - Facilities / Maintenance Services 14 - Market Research 15 - Meeting Accommodations17 - Office Services / Moving 18 - Office Supplies / Equipment 19 - Print / Copy / Photo Services 20 - Utilities 21 - Vehicles / Automobile Services 22 - Raw Materials / Components 23 - Real Estate Services24 - Sales / Business Development 25 - Security Services 26 - Shipping / Mail Services 27 - Strategic Company Goals 28 - Telecommunications 29 - Training 30 - Travel / Transportation 31 - Other 32 - None of the Above |
financialdecisionmaker |
Are you the main financial decision maker in your household? | 1 - Yes2 - No |
investableassets |
What are your household investable assets (not including homeownership)? | 1 - Less than $50,0002 - $50,000 - $74,9993 - $75,000 - $99,9994 - $100,000 - $149,9995 - $150,000 - $199,9996 - $200,000 - $499,9997 - $500,000 - $999,9998 - $1,000,000 or more9 - No investable assets10 - Prefer not to say |
insurancetype |
Which insurance do you currently have? Select all that apply. | 1 - Auto Insurance 2 - Home Insurance 3 - Renters Insurance 4 - Health Insurance |
healthinsuranceorigin |
How did you obtain your health insurance coverage? | 1 - Covered Through Employer / Union 2 - Covered Through Employer of Partner/Spouse 3 - Purchased From Health Insurance Marketplace 4 - Covered Through Parent 5 - Purchased From Health Insurance Provider / Broker 6 - Don't Have Health Insurance |
creditcardtype |
Which of these credit cards do you have? Select all that apply. | 1 - American Express 2 - Discover 3 - MasterCard 4 - Visa 5 - None of the Above |
loantype |
Which of these loans do you have? Select all that apply. | 1 - Auto Loan 2 - Student Loan 3 - Mortgage 4 - Credit Card Loan 5 - Personal Loans (Non Credit Card) 6 - None of the Above |
financialproduct |
Do you hold any of these financial products, alone or jointly with someone else? Select all that apply. | 1 - Checking Account 2 - Business Checking Account 3 - Savings Account 4 - Investment Products 5 - Investment Properties 6 - IRA or Roth IRA (Individual Retirement Account) 7 - Pension Offered By Employer 8 - Pension Not From Employer 9 - Retirement Plan (401k, 403b, 429, 457) 10 - None of the Above |
onlinepaymentmethod |
Do you use any of the following online payment methods? Select all that apply. | 1 - Online Banking 2 - Mobile Banking 3 - In-Store Payment With Mobile Phone 4 - Online Purchases With Mobile Phone 5 - PayPal 6 - BillMeLater 7 - Google Wallet 8 - Dwolla 9 - None of the Above |
vote |
Did you vote in the most recent Presidential election? | 1 - Yes2 - No3 - Prefer Not To Say |
cars |
Which of these cars do you have in your household? Select all that apply. | 1 - Acura 2 - Alfa Romeo 3 - Audi 4 - Bentley 5 - BMW 6 - Buick 7 - Cadillac 8 - Chevrolet 9 - Chrysler 10 - Dodge 11 - Eagle 12 - Ferrari 13 - Ford 14 - GMC 15 - Honda 16 - Hummer 17 - Hyundai 18 - Infiniti 19 - Isuzu 20 - Jaguar 21 - Jeep 22 - Kia 23 - Lamborghini 24 - Land Rover 25 - Lexus 26 - Lincoln 27 - Lotus 28 - Mazda 29 - Mercedes 30 - Mercury 31 - Mitsubishi 32 - Mitsubishi Fuso 33 - Nissan 34 - Oldsmobile 35 - Plymouth 36 - Pontiac 37 - Porsche 38 - Rolls-Royce 39 - Saab 40 - Saturn 41 - Subaru42 - Suzuki 43 - Toyota 44 - UD Trucks 45 - Volvo 46 - Volkswagen 47 - Other 48 - Don't Have a Car |
ownlease |
Do you own or lease the main car you drive? | 1 - Own2 - Lease3 - Don't Have a Car |
newoldvehicle |
Is the main car you drive new or secondhand? | 1 - New Purchase 2 - New Lease 3 - Secondhand Purchase 4 - Secondhand Lease 5 - Don't Have a Car |
autobody |
Which body styles would you consider for the next car in your household? Select all that apply. | 1 - Sedan 2 - SUV 3 - Crossover 4 - Minivan 5 - Cargo Van 6 - Passenger Van 7 - Pickup Truck 8 - Heavy Duty Pickup Truck 9 - Coupe 10 - Convertible 11 - Sports car 12 - Luxury car 13 - Hatchback 14 - Off Road Vehicle 15 - Don't Know |
autopurchaseprospect |
Do you plan on getting a new car in the next 12 months? | 1 - Yes2 - No |
hightechdevices |
Which high-tech devices do you have in your household? Select all that apply. | 1 - Android Smartphone 2 - iPhone 3 - Windows Smartphone 4 - Other Cell Phone (Not a Smartphone) 5 - Android Tablet 6 - iPad 7 - iPod 8 - Windows Surface Tablet 9 - Other Tablet 10 - HDTV (High-Definition Television) 11 - Home Theater System 12 - 3D Television 13 - Smart Television 14 - Gaming Device 15 - Digital Camcorder 16 - DVD Player 17 - Blue Ray Disc Player 18 - None of the Above |
employertype |
Which best describes your primary employer? | 1 - A For-Profit Business 2 - A Non-Profit, Charitable or Religious Organization 3 - A Government Agency, Office, Entity or Institution 4 - I Am Not Employed |
yearsinindustry |
How many years have you been in your industry of employment? | 1 - Less Than 1 Year 2 - 1 to 3 Years 3 - 4 to 6 Years 4 - 7 to 10 Years 5 - More Than 10 Years 6 - I Am Not Employed |
employmentdepartment |
What department do you work for at your current job? | 1 - Accounting / Finance 2 - Administrative / Clerical 3 - Advertising / Marketing 4 - Agriculture (Farming / Ranching) 5 - Architecture / Interior Design 6 - Banking 7 - Biotech / R&D / Science 8 - Building Construction / Skilled Trades 9 - Business / Strategic Management 10 - Communications / PR 11 - Compliance / Risk Management 12 - Creative / Design 13 - Customer Support / Client Support 14 - Editorial / Writing 15 - Education / Training 16 - Engineering 17 - Food Services / Hospitality 18 - Human Resources 19 - Installation / Maintenance / Repair 20 - Insurance 21 - Information Technology 22 - Legal 23 - Logistics / Transportation 24 - Manufacturing / Production / Operations 25 - Medical / Health 26 - Product Management 27 - Project / Program Management 28 - Public Service (Military / Law Enforcement / Fire Services / Emergency Services) 29 - Purchasing / Procurement 30 - Quality Assurance / Safety 31 - Real Estate / Mortgage Professionals 32 - Sales / Retail / Business Development 33 - Security / Protective Services 34 - Other 35 - I Am Not Employed36 - Technology Development Software 37 - Technology Development Hardware |
mobilephone |
Do you use a smartphone? | 1 - Yes, for Personal Use 2 - Yes, for Business Use 3 - Yes, for Both4 - No, I don't own any type of mobile phone5 - No, I don't use a smartphone but I do have a mobile phone |
mobileserviceprovider |
What is the service provider for your PERSONAL mobile phone? | 1 - Alltel 2 - Airtouch 3 - AT&T Wireless 4 - Boost Mobile 5 - Cellular One 6 - Cingular 7 - LA Cellular 8 - Nextel 9 - Qwest 10 - Sprint/Sprint PCS 11 - T-Mobile 12 - Tracfone 13 - US Cellular 14 - Verizon Wireless 15 - Virgin Mobile 16 - Voicestream 17 - Other 18 - Don't Know 19 - Don't Have a Personal Mobile Phone20 - MetroPCS |
mobilephonebrand |
What is the brand of your PERSONAL mobile phone? | 1 - Acer 2 - Alcatel 3 - Apple 4 - Blackberry 5 - Hewlett Packard 6 - HTC 7 - LG Electronics 8 - Mitsubishi 9 - Motorola 10 - Nec 11 - Nokia 12 - Palm 13 - Panasonic 14 - Pantech 15 - Philips 16 - Samsung 17 - Sharp 18 - Siemens 19 - Sony Ericsson 20 - Toshiba 21 - Other 22 - Don't Know 23 - Don't Have a Personal Mobile Phone |
smartphoneuse |
How many hours per DAY do you use your smartphone or tablet (iPad, etc.) to log into social media sites, browse the internet, check email, play games or shop. | 1 - 0 to 1 2 - 1 to 2 3 - 2 to 34 - 4 to 55 - 5+ |
internet |
Do you have internet service at home? | 1 - Yes2 - No |
internetprovider |
Which of the following is your Internet service provider at home? | 1 - AT&T 2 - Cablevision 3 - CenturyTel 4 - Charter 5 - Cincinnati Bell 6 - Clearwire 7 - Comcast 8 - Earthlink 9 - Embarq 10 - Hughes Network Systems 11 - Insight Broadband 12 - Localnet 13 - Mediacom 14 - Qwest (US West) 15 - RoadRunner 16 - Time Warner Cable 17 - United Online/Netzero/Juno 18 - Verizon 19 - Windstream 20 - Other 21 - Don't Know 22 - Don't Have Internet at Home |
internetconnection |
What type of your Internet connection do you have at home? | 1 - Cable 2 - DSL 3 - Wireless 4 - Dial-up 5 - T-1 Line 6 - Satellite 7 - Other 8 - Don't Know 9 - Don't Have Internet at Home |
internetlocation |
Where do you usually access the Internet? Select all that apply. | 1 - Home 2 - Work 3 - School/Library 4 - Free Wifi-Spots 5 - On The Road 6 - Coffeeshop 7 - None of the Above |
internetpersonaluse |
How often do you go online for personal purposes? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Several Times a Year 6 - Don't Use the Internet for Personal Purposes |
internetbusinessuse |
How often do you go online for business purposes? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Several Times a Year 6 - Don't Use the Internet for Business Purposes |
onlineshopping |
Have you shopped online in the past 12 months? | 1 - Yes, 1 to 2 Times 2 - Yes, 3 to 6 Times 3 - Yes, 7 to 12 Times 4 - Yes, More Than 12 Times 5 - No |
onlinepurchase |
What have you bought/booked online in the past 12 months? Select all that apply. | 18 - Airline Tickets 1 - Clothing or Shoes 2 - Books 3 - Dating Website Membership 4 - Electronics Equipment (TV, DVD player, etc.) 19 - Flowers 5 - Furniture 6 - Games 7 - Hardware 8 - Health and Beauty Products 20 - Hotel Reservation 9 - Household Appliances 10 - Medicine 11 - Music 12 - Secondhand Goods 13 - Software 14 - Sports Goods 15 - Event Tickets (Cinema, Theatre, Sports) 16 - Other 17 - I Have Not Purchased Anything |
socialnetworks |
Which of the following social networks are you a member of? Select all that apply. | 1 - Facebook 2 - Twitter 3 - LinkedIn 4 - Pintrest 5 - Google Plus + 6 - Tumblr 7 - Instagram 8 - YouTube 9 - Flickr 10 - Vine 11 - Meetup 12 - Tagged 13 - Bebo 14 - ClassMates 15 - MySpace 16 - Other 17 - None |
socialnetworkuse |
How often do you log on to social networks? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Less Often 6 - Never |
onlinegames |
Do you play PC or video games online? | 1 - Yes2 - No |
favoritepublications |
Which of the following types of online or printed publications do you view on a regular basis? Select all that apply. | 16 - Newspaper 3 - Arts & Crafts Magazines 17 - Automotive Magazines 2 - Computers & Electronics Magazines 18 - Cooking & Food Magazines 19 - Entertainment & TV Magazines 4 - Fashion, Style or Beauty Magazines 20 - Financial & Business Magazines 21 - Health, Fitness or Sports Magazines 22 - House & Gardening Magazines 8 - Men's Magazines (GQ, Maxim, etc.) 23 - Music Magazines 9 - Parenting 13 - Politics 14 - Science, Nature or Medical Magazines 24 - Technology Magazines 25 - Teen Magazines 26 - Travel Magazines 15 - Other 27 - Don't Read Publications |
favoritewebsites |
Which of the following type of websites do you regularly visit? Select all that apply. | 1 - Auction 2 - Business and Finance 3 - Cars 4 - Computers and Electronics 5 - Fashion 6 - Films 7 - Group Buying 8 - Home and Garden 9 - Jobs and Career 10 - Magazines 11 - Music 12 - News/Newspapers 13 - Price Comparison Sites 14 - Shopping 15 - Sports 16 - TV and Entertainment 17 - User-Made Videos (e.g. YouTube) 18 - Women's Sites 19 - None of the Above |
storebrand |
Which of these stores have you shopped at in the past 6 months? Select all that apply. | 14 - BestBuy 1 - BJ's 2 - Costco 10 - CVS 15 - HomeDepot 3 - Kmart 4 - Kohl's 5 - Macy's 12 - Rite Aid 6 - Sam's Club 7 - Target 8 - Walmart 9 - Whole Foods 11 - Walgreens 13 - None of the Above |
storetype |
Which type of stores have you shopped at in the past 6 months? Select all that apply. | 1 - Auto Supply and Auto Service 2 - Books and Media 3 - Computer and Home Electronics 4 - Convenience Stores (7Eleven, CircleK, QT, etc.) 5 - Department Stores (Sears, Macy's) 6 - Discount Stores (Kmart, Target) 7 - Drug stores (Rite Aid, CVS) 8 - Hardware / Home Supply (Home Depot) 9 - Jewelry 10 - Office Supplies 11 - Online-Only Retailers 12 - Shopping Channel (HSN, QVC) 13 - Specialty Clothing 14 - Sporting Goods 15 - Supermarket or Grocery Stores (Kroger, Albertsons, Safeway, etc.) 16 - Toys/Children's 17 - Wholesale Clubs (Sam's Club, Costco, BJs, etc.) 18 - None of the Above |
purchaseditems |
Which items have you purchased in the past 12 months? Select all that apply. | 1 - Alcohol 2 - Gourmet Foods 3 - Organic Foods 22 - Vitamins / Supplements 23 - Medication 4 - Tobacco Products 5 - Women's Clothing 6 - Men's Clothing 7 - Children's Clothing 8 - Big / Tall, Plus-Sized Clothing 9 - Kitchen & Major Appliances 10 - Furniture 11 - Outdoor Furniture 12 - Office Supplies 13 - Books 14 - CDs/DVDs 15 - Sporting Goods 16 - Luggage 17 - Bedding / Towels 18 - Wedding or Shower Gifts 19 - Gardening Equipment or Supplies 20 - Home Improvement or Hardware 21 - None of the Above |
luxurypurchases |
What type of luxury products have you bought in the past 12 months? Select all that apply. | 1 - Clothing 2 - Bags 3 - Jewelry 4 - Shoes 5 - Watches 6 - None |
grocerypurchases |
Which types of grocery products have you purchased in the past 6 months? Select all that apply. | 1 - Frozen Dinners 2 - Frozen Pizza 3 - Frozen Dough Products 4 - Juice / Orange Juice 5 - Carbonated Beverages 6 - Coffee 7 - Tea 8 - Yogurt 9 - Soy-Based Products 10 - Baby Food 11 - Packaged Baking Mixes 12 - Packaged Cookies/Snack Bars 13 - Snack Foods (Chips / Popcorn) 14 - Fruit Snacks 15 - Candy/Chocolate 16 - Cereal 17 - Health Foods 18 - Vitamins / Supplements 19 - Sugar-Free, Reduced-Calorie, Low-Carb Candy 20 - None of the Above |
purchasetype |
What category of products do you purchase online? | 1 - Clothing / Accessories 2 - Food 3 - Books / CDs / DVDs 4 - Electronics 5 - Appliances 6 - Furniture 7 - Office Supplies 8 - Other 9 - None |
onlineshops |
Which of these websites have you used to purchase products online? Select all that apply. | 1 - Amazon.com 2 - eBay.com 3 - Overstock.com 4 - WalMart.com 5 - Target.com 6 - OldNavy.com 7 - Netflix.com 8 - Sears.com 9 - BestBuy.com 10 - JCPenney.com 11 - QVC.com 12 - HSN.com 13 - BN.com 14 - iTunes.com 15 - Other 16 - I Don't Shop Online |
couponuse |
Do you use coupons when shopping in store or online? | 1 - Yes2 - No |
weeklyproducts |
Which of these products do you use at least once a week? Select all that apply. | 1 - Anti-Age Care Products 2 - Anti-Cellulite Products 3 - Anti-Dandruff Products 4 - Anti-Hair Loss Products 5 - Body Cream / Milk 6 - Care Products for Men 7 - Deodorant 8 - Facial Cleaning Products 9 - Foot Care Products 10 - Hand Care Products 11 - Lip Stick 12 - Make-Up Remover 13 - Scrubbing 14 - Shampoo 15 - None of the Above |
restaurantvisits |
How often do you go to restaurants? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Less Often / Never |
takeoutfrequency |
How often do you buy take-out food? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Less Often / Never |
fastfoodvisits |
How often do you go to fast-food restaurants? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Less Often / Never |
barcoffeevisits |
How often do you go to bars or coffee shops? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Less Often / Never |
cookingfrequency |
How often do you cook meals at home? | 1 - Every Day or Almost Every Day 2 - Several Times a Week 3 - Once a Week 4 - Several Times a Month 5 - Less Often / Never |
fastfoodrestaurants |
Which of the following fast food restaurants have you visited in the past 3 months? Select all that apply. | 1 - Arby's 2 - Burger King 3 - Chick-Fil-A 4 - Dairy Queen 5 - Domino's Pizza 6 - Dunkin' Donuts 7 - Hardee's 8 - Jack in the Box 9 - KFC 10 - McDonald's 11 - Panera Bread 12 - Papa John's 13 - Pizza Hut 14 - Popeye's 15 - Quiznos 16 - Sonic 17 - Starbucks 18 - Subway 19 - Taco Bell 20 - Wendy's 21 - Other 22 - I Have Not Visited a Fast-Food Restaurant |
alcoholconsumption |
Do you drink alcoholic beverages? | 1 - Yes2 - No |
alcoholconsumptiontypes |
Which of the following beverages have you consumed in the last 6 months? Select all that apply. | 1 - Gin 2 - Vodka 3 - Rum 4 - Whiskey 5 - Tequila 6 - Brandy 7 - Champagne 8 - Red Wine 9 - White Wine 10 - Rose Wine 11 - Sparkling Wine 12 - Vermouth 17 - Domestic beer 18 - Imported Beer 14 - Cider 15 - Other 16 - I Have Not Drunk Alcohol |
weeklyalcoholconsumption |
How many alcoholic beverages do you consume per week on average? | 1 - 0 2 - 1 to 4 3 - 5 to 10 4 - 11 to 14 5 - 15+ |
beerfavorites |
What kind of beer do you drink? Select all that apply. | 1 - Ale 2 - Amber 3 - Bitter 4 - Blond 5 - Lager 6 - Lambic 7 - Red 8 - Seasonal 9 - White 10 - Other 11 - I Don't Drink Beer |
beerfrequency |
How often do you drink beer? | 1 - Daily 2 - Weekly 3 - Monthly 4 - Less Often / Never |
smoke |
Do you smoke? Select all that apply. | 1 - Yes, Cigarettes 2 - Yes, Rolling Tobacco 3 - Yes, Electronic Cigarette 4 - Yes, Cigars 5 - Yes, but I Intend to Quit 6 - No, Stopped Less Than 12 Months Ago 7 - No, Stopped Over a Year Ago 8 - No, I Have Never Smoked |
diet |
Are you on a specific diet or have you been on a diet in the past 6 months? (Jenny Craig, Atkins, Nutrisystem, etc.) | 1 - Yes2 - No |
cigarettebrand |
Which brands of cigarettes do you usually smoke? Select all that apply. | 1 - Alfa 2 - Amigo 3 - Belmont 4 - Bravos 5 - Camel 6 - Casino 7 - Century 8 - Classicos 9 - Dunhill 10 - Galious 11 - Kool 12 - Lucky Strike 13 - Marlboro 14 - Pall Mall 15 - Paris 16 - Ritz 17 - Salem 18 - Sgventil 19 - Winston 20 - Zero Grados 21 - Other 22 - I Don't Smoke |
health |
Which health areas affect you, a member of your household or someone you provide care for? Select all that apply. | 23 - Food Allergies 24 - Hay Fever 25 - Lactose Intolerant 26 - Other Allergies 27 - Alcohol Abuse 28 - Drug Addiction 158 - Opioid Dependence 29 - Smoking Addiction 31 - Celiac Disease 32 - Chronic Fatigue Syndrome 34 - Lupus 35 - Rheumatoid Arthritis 36 - Other Autoimmune Disorder37 - Asthma 159 - Chronic Cough 38 - Bronchitis 39 - COPD 160 - Cystic Fibrosis 40 - Emphysema 41 - Pneumonia 42 - Tuberculosis 43 - Other Breathing Condition 161 - Myeloma 44 - Breast Cancer 45 - CLL (Chronic Lymphocytic Leukemia) 46 - Colorectal Cancer 47 - Leukemia 48 - Lung Cancer 49 - Prostate Cancer 50 - Skin Cancer 51 - Oral Cancer 52 - Other Cancer 53 - Canker Sores 54 - Dental Cavities 55 - Gum Disease 56 - Other Oral Condition 57 - Colitis 58 - Constipation 59 - Crohn's Disease 60 - Diarrhea 61 - Gastro Esophageal Reflux (GERD) 62 - Gastroenteritis 63 - Hemorrhoids 64 - Irritable Bowel Syndrome 65 - Reflux 66 - Ulcerative Colitis 67 - Ulcers 68 - Other Digestive Condition 69 - Anorexia Nervosa 70 - Binge Eating Disorder 71 - Bulimia Nervosa 72 - Other Eating Disorder 73 - Astigmatism 74 - Farsightedness 75 - Nearsightedness 76 - Other Eye Condition 77 - Hearing Loss 78 - Ruptured Eardrum 79 - Other Ear Condition 80 - Nasal Polyps 81 - Sinusitis 82 - Other Nose/Sinus Condition 83 - Other Throat Condition 84 - Anemia 85 - Angina 86 - Arrhythmia/Atrial Fibrillation 87 - Cardiovascular Disease 88 - Diabetes Type 1 89 - Diabetes Type 2 90 - Hemophilia 91 - High Blood Pressure 92 - High Cholesterol 93 - Hypertension 163 - Acute Coronary Syndrome (ACS) 94 - Heart Failure 95 - Other Heart Condition 96 - Other Blood Condition 97 - Arthritis 98 - Back/Neck Pain 99 - Carpal Tunnel Syndrome 100 - Fibromyalgia 101 - Gout 102 - Joint Replacement 103 - Osteoarthritis 104 - Osteoporosis 164 - Axial Spondyloarthritis 165 - Ankylosing Spondylitis 105 - Other Joint / Muscle Condition 106 - Chronic Kidney Disease 107 - Kidney Failure 108 - Overactive Bladder 109 - Urinary Incontinence 110 - Urinary Tract Infections 111 - Other Kidney / Urinary Disorder 112 - Cirrhosis 113 - Hepatitis 114 - Other Liver Condition 115 - Men's Health - Erectile Dysfunction (ED) 116 - Men's Health - Hair Loss 117 - Men's Health - Infertility 118 - Men's Health - Premature Ejaculation 119 - Other Men's Health Issue 120 - Anxiety 121 - Bipolar Disorder 122 - Depression 123 - Other Mental / Behavioral Issue 124 - ADD/ADHD 125 - Alzheimer's Disease 126 - Autism 127 - Epilepsy 128 - Migraine 129 - Motor Neuron Disease 130 - Multiple Sclerosis 131 - Parkinson's Disease 132 - Schizophrenia 133 - Stroke 134 - Other Neurological Condition 135 - HIV - Aids 136 - Syphilis 137 - Other Sexual Health Issue 139 - Other Infectious Disease 140 - Acne 141 - Eczema 142 - Psoriasis 158 - Psoriatic Arthritis 159 - Rosacea 143 - Shingles 144 - Other Skin Condition 145 - Insomnia 146 - Restless Leg Syndrome 147 - Other Sleeping Disorder 148 - Hypothyroidism 149 - Other Thyroid Condition 150 - Obesity 151 - Other Weight Condition 152 - Women's Health - Endometriosis 153 - Women's Health - Infertility 154 - Women's Health - Menopause 155 - Other Women's Health Issue 21 - Prefer Not to Say 157 - No Illnesses / Conditions in Household |
allergies |
Which allergies affect you, a member of your household or someone you provide care for? Select all that apply. | 1 - Insect Stings 2 - Anaphylaxis 3 - Cosmetic Allergies 4 - Drug / Medication Allergies 5 - Food Allergies 6 - Hives 7 - Latex Allergy 8 - Multiple Chemical Sensitivity 9 - Plant Allergies (Poison Ivy, Poison Oak) 10 - Seasonal Allergies, Pollen, etc. 11 - Other Allergies 12 - Don't Know / Prefer Not to Say 13 - None of the Above |
foodallergies |
Which food allergies affect you, a member of your household or someone you provide care for? Select all that apply. | 1 - Milk 2 - Egg 3 - Peanut 4 - Tree Nut (Walnut, Cashew, etc.) 5 - Fish 6 - Shellfish 7 - Soy 8 - Wheat 9 - MSG (Monosodium Glutamate) 10 - Other Food Allergies 11 - Don’t Know / Prefer Not to Say 12 - None of the Above |
personalhealth |
Please indicate if you are currently suffering from, or have ever suffered from any of the following health issues. Select all that apply. | 23 - Food Allergies 24 - Hay Fever 25 - Lactose Intolerant 26 - Other Allergies 27 - Alcohol Abuse 28 - Drug Addiction 29 - Smoking Addiction 31 - Celiac Disease 32 - Chronic Fatigue Syndrome 34 - Lupus 35 - Rheumatoid Arthritis 36 - Other Autoimmune Disorder 37 - Asthma 38 - Bronchitis 39 - COPD 40 - Emphysema 41 - Pneumonia 42 - Tuberculosis 43 - Other Breathing Condition 44 - Breast Cancer 45 - CLL (Chronic Lymphocytic Leukemia) 46 - Colorectal Cancer 47 - Leukemia 48 - Lung Cancer 49 - Prostate Cancer 50 - Skin Cancer 51 - Oral Cancer 52 - Other Cancer 53 - Canker Sores 54 - Dental Cavities 55 - Gum Disease 56 - Other Oral Condition 57 - Colitis 58 - Constipation 59 - Crohn's Disease 60 - Diarrhea 61 - Gastro Esophageal Reflux (GERD) 62 - Gastroenteritis 63 - Hemorrhoids 64 - Irritable Bowel Syndrome 65 - Reflux 66 - Ulcerative Colitis 67 - Ulcers 68 - Other Digestive Condition 69 - Anorexia Nervosa 70 - Binge Eating Disorder 71 - Bulimia Nervosa 72 - Other Eating Disorder 73 - Astigmatism 74 - Farsightedness 75 - Nearsightedness 76 - Other Eye Condition 77 - Hearing Loss 78 - Ruptured Eardrum 79 - Other Ear Condition 80 - Nasal Polyps 81 - Sinusitis 82 - Other Nose/Sinus Condition 83 - Other Throat Condition 84 - Anemia 85 - Angina 86 - Arrhythmia/Atrial Fibrillation 87 - Cardiovascular Disease 88 - Diabetes Type 1 89 - Diabetes Type 2 90 - Hemophilia 91 - High Blood Pressure 92 - High Cholesterol 93 - Hypertension 94 - Heart Failure 95 - Other Heart Condition 96 - Other Blood Condition 97 - Arthritis 98 - Back/Neck Pain 99 - Carpal Tunnel Syndrome 100 - Fibromyalgia 101 - Gout 102 - Joint Replacement 103 - Osteoarthritis 104 - Osteoporosis 105 - Other Joint / Muscle Condition 106 - Chronic Kidney Disease 107 - Kidney Failure 108 - Overactive Bladder 109 - Urinary Incontinence 110 - Urinary Tract Infections 111 - Other Kidney / Urinary Disorder 112 - Cirrhosis 113 - Hepatitis 114 - Other Liver Condition 115 - Men's Health - Erectile Dysfunction (ED) 116 - Men's Health - Hair Loss 117 - Men's Health - Infertility 118 - Men's Health - Premature Ejaculation 119 - Other Men's Health Issue 120 - Anxiety 121 - Bipolar Disorder 122 - Depression 123 - Other Mental / Behavioral Issue 124 - ADD/ADHD 125 - Alzheimer's Disease 126 - Autism 127 - Epilepsy 128 - Migraine 129 - Motor Neuron Disease 130 - Multiple Sclerosis 131 - Parkinson's Disease 132 - Schizophrenia 133 - Stroke 134 - Other Neurological Condition 135 - HIV - Aids 136 - Syphilis 137 - Other Sexual Health Issue 139 - Other Infectious Disease 140 - Acne 141 - Eczema 142 - Psoriasis 143 - Shingles 144 - Other Skin Condition 145 - Insomnia 146 - Restless Leg Syndrome 147 - Other Sleeping Disorder 148 - Hypothyroidism 149 - Other Thyroid Condition 150 - Obesity 151 - Other Weight Condition 152 - Women's Health - Endometriosis 153 - Women's Health - Infertility 154 - Women's Health - Menopause 155 - Other Women's Health Issue 21 - Prefer Not to Say 157 - No Illnesses / Conditions |
childshealth |
Please indicate if your child/children are currently suffering from, or have ever suffered from any of the following health issues. Select all that apply. | 1 - ADD / ADHD 2 - Allergies (Food, Seasonal) 3 - Asthma 4 - Autism 5 - Cancer - Leukemia 6 - Cancer - Other 7 - Diabetes (Type 1) 8 - Diabetes (Type 2) 9 - Epilepsy / Seizure Disorders 10 - Multiple Sclerosis 11 - Obesity 12 - Don’t Know / Prefer Not to Say 13 - None of the Above |
weeklytvuse |
How often do you watch tv on a weekly basis? | 4 - I Don't Watch TV 5 - 1-2 hours 6 - 3-5 hours 7 - 6-10 hours 8 - 11-20 hours 9 - 20+ hours |
tvnetworks |
Which of the following television networks do you watch regularly? Select all that apply. | 1 - A&E 2 - ABC 3 - Animal Planet 4 - Bravo 5 - CBS 6 - CNN 7 - Comedy Central 8 - CW 9 - Discovery 10 - Disney Channel 11 - ESPN 12 - Food Network 13 - FOX 14 - FX 15 - HBO 16 - HGTV 17 - MSNBC 18 - MTV 19 - National Geographic 20 - NBC 21 - Nickelodeon 22 - Oxygen 23 - TBS 24 - The History Channel 25 - TLC 26 - TNT 27 - USA 28 - None of the Above |
moviegenres |
Which of the following types of movies do you enjoy watching? Select all that apply. | 1 - Action 2 - Adventure 21 - Children's Films 3 - Comedy 4 - Disaster 5 - Documentary 6 - Drama 7 - Epic 8 - Family 9 - Fantasy 10 - Film-Noir 22 - Foreign / Artistic / Cultural 11 - Horror 12 - Musical 13 - Mystery 14 = - Romance 15 - Science Fiction 16 - Sport 17 - Thriller 18 - War 19 - Western 20 - I Don't Watch Movies |
weeklyradiouse |
How often do you listen to the radio on a weekly basis? | 5 - 5 hours or less 6 - 6 to 10 hours 7 - 11 to 20 hours 8 - More than 20 hours 4 - I Don't Listen to Radio |
weeklymagazineuse |
How often do you read a magazine on a weekly basis? | 1 - Very Often 2 - Sometimes 3 - Not Often 4 - Never |
magazinefavorites |
Which of the following magazines do you regularly read? Select all that apply. | 1 - AARP The Magazine 2 - All You 3 - Car And Driver 4 - Cooking Light 5 - Cosmopolitan 6 - Entertainment Weekly 7 - Essence 8 - Everyday With Rachel Ray 9 - Family Circle 36 - Forbes 37 - Fortune 10 - Glamour 11 - Good Housekeeping 38 - Health 12 - In Touch13 - InStyle 14 - Ladies' Home Journal 15 - Maxim 16 - Men's Health 17 - Money 18 - National Geographic 19 - Newsweek 20 - O Oprah Magazine 21 - People 22 - Popular Science 23 - Prevention 24 - Readers Digest 25 - Real Simple 26 - Redbook 27 - Self 28 - Southern Living 29 - Sports Illustrated 30 - Star 31 - Time 39 - Travel + Leisure 32 - US News & World Report 33 - US Weekly 40 - Vanity Fair 34 - Woman's Day 35 - None of the Above |
weeklynewspaperuse |
How often do you read a newspaper on a weekly basis? | 1 - Very Often 2 - Sometimes 3 - Not Often 4 - Never |
newspaperfavorites |
Which of the following newspapers do you regularly read? Select all that apply. | 1 - Financial Times 2 - International Herald Tribune 3 - New York Times 4 - USA Today 5 - Wall Street Journal 6 - Wall Street Journal Europe 7 - None of the Above |
frequentingmovies |
How often do you go to the cinema / movies? | 7 - I Don't Go to Movie Theaters 8 - Less than once a month 9 - One time per month 10 - Two times per month 11 - Three times per month 12 - Four times per month 13 - Five or more times per month |
interests |
What are your interests and hobbies? Select all that apply. | 1 - Arts, Crafts and Hobbies 2 - Books and Magazines 3 - Business and Entrepreneurism 4 - Cars and Trucks 5 - Casino Gambling (Offline) 6 - Computers and Technology 7 - Family and Parenting 8 - Fashion 9 - Finance and Investments 10 - Food and Cooking 11 - Games (Computer / Board / Card, etc.) 12 - Gardening and Landscaping 13 - Health and Fitness 14 - Home Architecture / Improvement / Decorating15 - Music, Movies and Entertainment 24 - Hunting/Fishing 25 - Boating 26 - Camping 27 - Motor caravaning 28 - Skiing 17 - Pets and Animals 18 - Photography 19 - Shopping 29 - Sports - Extreme Sports 30 - Sports - Participating in Athletics 31 - Sports - Golf 32 - Sports - Watching Sports 21 - Travel 22 - Workshop / Do-It-Yourself 23 - None of the Above |
sportingevents |
Which of the following types of sporting events do you like to watch or attend? Select all that apply. | 1 - Amateur Sports 2 - College Sports 3 - Extreme Sports 4 - High School Sports 5 - International Sports 6 - Paralympics 7 - Professional Sports 8 - Summer Olympics 9 - Winter Olympics / Sports 10 - Youth Olympics 11 - None of the Above |
watchsportcategories |
Which of the following sports do you watch on TV at least occasionally? Select all that apply. | 1 - Martial Arts 2 - Baseball 3 - Basketball 4 - Boxing 5 - Car Racing 6 - Cycling 7 - Football 8 - Golf 9 - Hockey 10 - Running 11 - Snow Sports 12 - Soccer 13 - Swimming 14 - Tennis 15 - Other 16 - I Don't Watch Sports |
practicesports |
How often do you practice sports? | 7 - Less than one hour per week 8 - 1 to 2 hours per week 9 - 3 to 4 hours per week 10 - 5 to 6 hours per week 11 - 7 to 8 hours per week 12 - 9 to 10 hours per week 13 - 11 hours or more per week 6 - Never |
eventattendance |
Which of the following types of events do you like to attend? Select all that apply. | 1 - Concerts / Musicals / Benefit Concerts 2 - Conferences and Seminars 3 - Fashion Shows 4 - Motor Racing 5 - Networking Events 6 - Product Launches 7 - Sporting Events / Leagues 8 - Trade Shows / Trade Fairs 9 - Workshops 10 - None of the Above |
creativehobbies |
What types of creative hobbies are you interested in? Select all that apply. | 1 - Artistic Projects 2 - Computers (Building From Scratch) 3 - Film Making 4 - Jewelry Making 5 - Musical Instruments (Playing) 6 - Papercraft 7 - Photography 8 - Restoring Cars 9 - Robots (Building) 10 - Software Projects 11 - Woodworking 12 - None of the Above |
yearlytravelfrequency |
How many times have you traveled in the last year for leisure or business purposes? | 1 - 1 to 2 Times 2 - 3 to 4 Times 3 - 5 to 10 Times 4 - More Than 10 Times 5 - None of the Above |
yearlytravelsbyplane |
For your LEISURE trips, how often do you take a plane per YEAR? | 1 - 1 to 2 Times 2 - 3 to 4 Times 3 - 5 to 10 Times 4 - More Than 10 Times 5 - None of the Above |
yearlycarrentalfrequency |
For your LEISURE trips, how often do you rent a car per YEAR? | 1 - 1 to 2 Times 2 - 3 to 4 Times 3 - 5 to 10 Times 4 - More Than 10 Times 5 - None of the Above |
travelsites |
Which types of websites have you used to book your LEISURE travels in the past year? Select all that apply. | 1 - Airline Company Websites (American Airlines, Lufthansa, etc.) 2 - Car Rental Websites (Hertz, Avis, etc.) 3 - Travel Agency Websites (Expedia, Orbitz, Etc.) 4 - Hotel Websites (Hotels.com, Booking.com, etc.) 5 - Price Comparison Websites (Farecompare.com, Kayak.com, etc.) 6 - Other Websites 7 - I Haven't Used Any Website |
hotelcategory |
Which category of hotel do you usually stay in for LEISURE? Select all that apply. | 1 - 1 Star Hotel 5 - 2 Star Hotel 6 - 3 Star Hotel 7 - 4 Star Hotel 8 - 5 Star Hotel 9 - Better Than 5 Star Hotel 4 - None of the Above |
airlinecompany |
Which of the following companies have you flown with for LEISURE in the past year? Select all that apply. | 1 - Air Canada 2 - AirTran 3 - Alaska Airlines 4 - American Airlines 5 - Delta 6 - Jet Blue 7 - Southwest 8 - Spirit 9 - United 14 - Northwest Airlines 15 - Continental Airlines 10 - US Airways 11 - Virgin 12 - Other 13 - None |
airlineseatclass |
Which class do you usually fly on for LEISURE? | 1 - Economy Class 2 - Economy Plus / Premium 3 - Business Class 4 - First Class 5 - I Don't Fly |
travelcruise |
Have you taken a cruise in the past 2 years for LEISURE? | 1 - Yes2 - No |
hotelprogrammember |
Are you a member of a hotel frequent traveler program? | 1 - Yes2 - No |
hotelrewardsprogram |
Are you a member of any of the following hotel rewards programs? Select all that apply. | 1 - Hilton - Hilton Honors 2 - Hyatt - Hyatt Gold Passport 3 - Intercontinental, Holiday Inn, etc. - Priority Club 4 - Marriott - Marriott Rewards 5 - Radisson - Club Carlson / Gold Rewards 6 - Starwood Hotels - Starwood Preferred Guest 7 - Wyndham - Wyndham Rewards 8 - Other 9 - None of the Above |
frequentflyerprogram |
Are you currently enrolled in a frequent flyer program? | 1 - Yes2 - No |
airlineprogram |
Are you a member of the frequent flyer program of any of the following airlines? Select all that apply. | 1 - AirTran Airways 2 - Alaska Airlines 3 - Aloha Airlines 4 - America West 5 - American Airlines 6 - Continental Airlines, Inc. 7 - Delta Air Lines Inc 8 - JetBlue Airways Corporation 9 - Midwest Airlines 10 - Southwest Airlines Co 11 - United Airlines 12 - US Airways 13 - Other 14 - None of the Above |
carrentalprogram |
Are you a member of any of the following car rental rewards programs? Select all that apply. | 1 - Advantage Rent a Car - Advantage Frequent Rent Club 2 - Alamo - Quicksilver 3 - Avis - Avis First 4 - Budget - Rapid Rez 5 - Dollar Rent a Car - Dollar Express 6 - Enterprise - Enterprise-Plus 7 - Hertz - #1 Club 8 - National - Emerald Club 9 - Thrifty - Blue Chip Express 10 - None of the Above |
geodmaregioncode |
DMA (Designated Market Area) code | From 500 to 881 |
employeecount |
Approximately how many employees work at your organization (all locations)? | 1 - 1-10 2 - 11-50 3 - 51-100 4 - 101-500 5 - 501-1000 6 - 1001-5000 7 - Greater than 5000 8 - I Don't Work |
sportparticipation |
Which of the following sports do you participate in? Select all that apply. | 1 - Archery 2 - Badminton 3 - Baseball 4 - Basketball 5 - Bicycling 6 - Canoeing or Kayaking 7 - Cricket 8 - Fishing 9 - Football 10 - Golf 11 - Hiking 12 - Hockey - Field 13 - Hockey - Ice 14 - Hunting 15 - Jogging 16 - Raquetball 17 - Rock Climbing18 - Rowing19 - Rugby 20 - Sailing 21 - Skate Boarding 22 - Skiing - Cross Country 23 - Skiing - Downhill 24 - Snowboarding 25 - Soccer 26 - Squash 27 - Swimming 28 - Tennis 29 - Wrestling 30 - Other 31 - I Don't Participate in Sports |
age |
Age | [Age] |
anychildage |
Child age | [Age] |
anychildgender |
Child Gender | 1 - Female2 - Male |
isexpectingparent |
Are you an expecting parent? | 1 - Yes2 - No |
vehicleownorlease |
Vehicle Own or Lease | 0 - Lease1 - Own |
primaryvehicleownorlease |
Primary Vehicle Own or Lease | 0 - Lease1 - Own |
Billing Information
All fees are to be paid in US Dollars and within thirty (30) days of invoice date. Invoices are not based on projects that were closed during the billing period, but on the number of survey completes achieved by panelists.
Changelog
Nov 1, 2023
A ttl
optional value has been added to the Included Users with a specified inviteId attached endpoint.
Aug 25, 2023
A new endpoint was added for Included Users. You can now make POST
and GET
requests to /v1/clients/{clientId}/projects/{projectId}/includedUsers/invite
. Calls to this endpoint are optional; however, all properties are required when the call is executed. The absence of any property results in 400 Bad Request
for POST
requests and 404 Not Found
for GET
requests.
June 17, 2022
Status parameter was added to the List Project endpoint to retrieve a specific client's projects with OPEN, CLOSE, COMPLETED, or HOLD statuses.
May 18, 2022
Demographic details were added to the entry link
March 22, 2022
Launch the Create Included Users with a specified TTL attached endpoint.
June 02, 2021
Launch the Info endpoint.
March 16, 2021
Launch the Rate Card endpoint.
December 16, 2020
Launch the Verify Clickable Projects endpoint.
Launch the Verify Returning from Survey endpoint.
November 29, 2020
Launch the Custom Questions endpoints.
June 3, 2020
Add Click Balancing, which allows fine tuned control over how many panelists enter or complete a survey.
April 15, 2020
Add the ability to indicate percentage allocation (with 100% meaning exclusive allocation to a supplier) by using the allocation
attribute.
April 3, 2020
Support geousregion
as a project and quota qualification.
March 31, 2020
Launch the Feasibility endpoint.
February 18, 2020
Launch the Excluded Projects endpoint. This endpoint provides the ability to exclude users based on participation in previous projects.
January 23, 2020
Add support for inclusion list of user IDs (recontacts) and exclusion lists per project.
Supplier ID is now required per project.
Support
For support inquiries, contact integrations@disqo.com.