NAV Navbar

Audience API Overview

Last Updated: 11/01/2023

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.

Run in Postman

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 your clientId.

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 Sentence Diagram

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.

Integration Flow

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: &quotaId=quota1&quotaId=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}&quotaIds={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}&quotaIds={["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.

tracking diagram

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-1 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-1, 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: &quotaIds=%5B%22quotaId1%22%2C%22quotaId2%22%5D

URL-decoded example: &quotaIds=["quotaId1","quotaId2"]

If you have not received a secret key from DISQO, reach out to your integration contact.

Elements Needed for Base64 Hashing

  1. All data in the URL that appears after ? in the URL and before &auth. For example: clientId={clientId}&projectId={projectId}&quotaIds=[“{quotaId1}”,“{quotaId2}”]&supplierId={supplierId}&tid={tid}&pid={pid}
  2. The secret key, provided by DISQO.
  3. The format HMAC SHA-1. 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&quotaIds=%5B%2218829%22%2C%2218830%22%5D&supplierId=99821&tid=883933&pid=991832 should be decoded into clientId=28377&projectId=5p&quotaIds=["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 parameter substatus.

https://go.audience.disqo.com/callback/?clientId={clientId}&projectId={projectId}&quotaId={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}&quotaId={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&quotaIds=[%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&quotaIds=["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.

When returning the panelist, send the status of the panelist by appending a status and an optional substatus value.

{audience_redirection_url}?clientId=71167&supplierId=59037&status=1&projectId=167004&quotaIds=["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-1 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-1 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&quotaIds=["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&quotaIds=%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&quotaIds=%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&quotaIds=%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}&quotaIds={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&quotaIds=[\"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 a LIVE status. Panelists will only be sent to OPEN status Projects with at least one LIVE 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

  1. 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 and projectId will be added to this URL.
    • Use the qualifications in the Suggested Metrics section.
    • Ensure the Project status is OPEN.
  2. 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.
  3. Change the Quota status to LIVE.
  4. Make sure the calculated field isAcceptingPanelists is set to true for both the Project and Quota created.
    • If set to false, it is probably due to the enforceScreenOut property being set to true and no clicks/completes left for the project. Try changing the value of clicksWanted or completesWanted, according to the Project’s trackingField. If this does not solve the issue, ensure the OPEN Project contains a LIVE Quota.
  5. Make a GET request to https://go.audience.disqo-demo.com/verify/ with the provided clientId and apiKey as basic authentication. The response will include OPEN Projects with LIVE Quotas, and will contain a URL field with the value https://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.
  6. 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.
  7. 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.

  1. Go to the survey site and complete the survey to trigger a successful complete, or screen-out redirection behavior, on the external/client system.
  2. Grab the output redirection from the external/client system to https://go.audience.disqo-demo.com/callback?... and change the route to https://go.audience.disqo-demo.com/verify/callback?... to issue a GET request to our verify callback endpoint.
    • Ensure all query parameters after the ? sign remain and are unchanged.
    • Append the clientId and apiKey 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).
  3. 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 the hashKey assigned to the clientId to produce the expected auth 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 to inputToHash by using the provided hashKey. If the verificationStatus is AUDIENCE_SCREEN_OUT_INVALID_HASH, look at the expectedHash field for the correct auth value.
    • If an invalid clientId or supplierId 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.
  4. The integration is considered successful when all scenarios (completion, drop-off, and screen-out) return 200 responses.
  5. 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 specified ttl 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 specified inviteId 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 your qualifications criteria. This and 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 - Female
2 - Male
geocountry What country do you live in? US - United States
CA - Canada
AU - Australia
geousregion What region do you live in? Northeast - Northeast
Midwest - Midwest
South - South
West - 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 - Minnesota
MS - Mississippi
MO - 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 Islands

Canada:

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 - Yukon

Australia:

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 - Bird
2 - Cat
3 - Dog
4 - Fish
5 - Horse
8 - Amphibians (frogs, toads, etc.)
9 - Small animals or rodents (hamsters, mice, rabbits, ferrets, etc.)
10 - Reptiles (turtles, snakes, lizards, etc.)
11 - Insects / Arachnids
12 - Livestock (goat, pig, chicken, cattle)
6 - Other
7 - Don't Own Pets
groceryshoppingduty How much of your household's grocery shopping do you do yourself? 1 - All of It
2 - Almost All of It
3 - About Half of It
4 - Less Than Half
5 - None
rentorown What's your living situation? 1 - Own
2 - Rent
3 - Live With Parents / Relatives
5 - Own - Home
6 - Own - Apartment / Condo
7 - Rent - Home
8 - Rent - Apartment / Condo
9 - University Residence
10 - Farm
4 - Other
maritalstatus What's your marital status? 1 - Single
2 - Married
3 - Domestic Partnership
4 - Divorced
5 - Widowed
6 - Separated
7 - Prefer Not to Say
ethnicity What's your race? 1 - White / Caucasian
2 - Black / African American
3 - American Indian / Alaskan Native
4 - Asian
9 - Asian, Indian
10 - Asian, Chinese
11 - Asian, Filipino
12 - Asian, Japanese
13 - Asian, Korean
14 - Asian, Vietnamese
15 - Asian, Other
5 - Middle Eastern
6 - Pacific Islander
16 - Pacific Islander, Native Hawaiian
17 - Pacific Islander, Guamanian
18 - Pacific Islander, Samoan
19 - Pacific Islander, Other
7 - Hispanic or Mixed / Other Race
8 - Prefer Not to Say
languageproficiencyspanish Do you speak Spanish? 1 - No
2 - Yes, More English than Spanish
3 - Yes, English and Spanish Equally
4 - Yes, More Spanish than English
5 - Yes, Spanish Only
hispanicorigin Are you of Hispanic, Latino or Spanish origin? 1 - No
2 - Yes, Mexican, Mexican American, Chicano
3 - Yes, Cuban
4 - Yes, Spanish
6 - Yes, Argentinian
7 - Yes, Colombian
8 - Yes, Ecuadorian
9 - Yes, Salvadoran
10 - Yes, Guatemalan
11 - Yes, Nicaraguan
12 - Yes, Panamanian
13 - Yes, Peruvian
14 - Yes, Venezuelan
5 - 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 Accommodations
17 - 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 Services
24 - 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 - Yes
2 - No
investableassets What are your household investable assets (not including homeownership)? 1 - Less than $50,000
2 - $50,000 - $74,999
3 - $75,000 - $99,999
4 - $100,000 - $149,999
5 - $150,000 - $199,999
6 - $200,000 - $499,999
7 - $500,000 - $999,999
8 - $1,000,000 or more
9 - No investable assets
10 - 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 - Yes
2 - No
3 - 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 - Subaru
42 - 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 - Own
2 - Lease
3 - 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 - Yes
2 - 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 Employed
36 - 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 Both
4 - No, I don't own any type of mobile phone
5 - 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 Phone
20 - 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 3
4 - 4 to 5
5 - 5+
internet Do you have internet service at home? 1 - Yes
2 - 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 - Yes
2 - 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 - Yes
2 - 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 - Yes
2 - 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 - Yes
2 - 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 Disorder
37 - 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 Touch
13 - 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 / Decorating
15 - 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 - Yes
2 - No
hotelprogrammember Are you a member of a hotel frequent traveler program? 1 - Yes
2 - 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- Yes
2 - 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 Climbing
18 - Rowing
19 - 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 - Female
2 - Male
isexpectingparent Are you an expecting parent? 1 - Yes
2 - No
vehicleownorlease Vehicle Own or Lease 0 - Lease
1 - Own
primaryvehicleownorlease Primary Vehicle Own or Lease 0 - Lease
1 - 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.