NAV Navbar
Logo new
curl PHP Node.js

Supplier API

Innovate Supplier APIs provide a simple and quick way to pull down survey inventory available to supplier and match with user’s profile. With this, supplier will be able to get updated list of survey inventory, real time statistics for each survey and targeting questions to match with user’s profile.

Running in Postman

Postman Image InnovateMR Programmatic Sampling API Reference for Buyers and Sellers The entire Innovate API collection can be easily imported into Postman, by clicking the button below:

Run in Postman

Postman is a free application that allows you to execute test calls in an intuitive interface. When making test calls, you should use the development environment.

Environments

Sandbox Endpoint

https://stagediysamplingapi.innovatesample.com/api/v1

Production Endpoint

https://supplier.innovatemr.net/api/v1/

Innovate has two environments—production and sandbox. The sandbox environment is used during development and for testing. There are no live respondents in this environment (although you may enter as a respondent). It is important to note that lookup libraries in the sandbox are different from those in production. Production should only be used once an application has been thoroughly tested in sandbox.

Lookup Question Library

Definition

GET https://<serverName>/api/v1/supply/getQuestionsByCategory/<CountryKey>/<language>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getQuestionsByCategory/US/ARABIC"
<?php
  $URL = "supplier.innovatemr.net/api/v1/supply/";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getQuestionsByCategory/US",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{  
   "apiStatus":"success",
   "msg":"questions are successfully searched",
   "result":[  
      {
        "QuestionId": 801,
        "QuestionText": "ma hi easimat alhind?",
        "QuestionKey": "TESTING_A_8012",
        "QuestionType": "Single Punch",
        "language": "ARABIC",
        "Category": [
          "Testing_A"
        ]
      },
      {
        "QuestionId": 804,
        "QuestionText": "'ayn taeish?",
        "QuestionKey": "TESTING_AB_804",
        "QuestionType": "Single Punch",
        "language": "ARABIC",
        "Category": [
          "Testing_A",
          "TESTING_KASH"
        ]
      }
   ]
}

This API will allow supplier to pull down list of all questions associated with the specified country and language( i.e. country and language passed in request). These questions are used as survey criteria and will be helpful to match user’s profile with survey criteria.

Download our basic mapping library.

Query Parameters

Property Type Required Description
Country Key String Yes Country Key (like US)
Language String No (Default will be ENGLISH) Language (like ENGLISH)

Answer Lookup

Definition

GET https://<serverName>/api/v1/supply/getAnswersByQuesKey/<QuestionKey>?country=<country name>&language=<language name>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getAnswersByQuesKey/GENDER"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getAnswersByQuesKey/GENDER";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getAnswersByQuesKey/GENDER",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "Answers are successfully searched",
  "result": {
    "QuestionId": 2,
    "QuestionText": "What is your gender?",
    "QuestionType": "Single Punch",
    "QuestionOptions": [
      {
        "OptionText": "Male",
        "id": 1,
        "Order": 1
      },
      {
        "OptionText": "Female",
        "id": 2,
        "Order": 2
      }
    ]
  }
}


API returns a list of all Answer options for the Question associated with the specified QuestionKey,country and language.

Query Parameters

Property Type Required Description
Question Key String Yes QuestionKey of the question (Example : GENDER)
Country String No (Default will be US) Country Key (like US)
Language String No (Default will be ENGLISH) Language (like ENGLISH)

Get Allocated Surveys (all live surveys)

Definition

GET https://<serverName>/api/v1/supply/getAllocatedSurveys

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getAllocatedSurveys"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getAllocatedSurveys";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getAllocatedSurveys",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": " All live groups are successfully searched",
  "result": [
    {
      "surveyId": 12632,
      "surveyName": "Basic Demo With Beverage survey",
      "N": 100,
      "isRevShr": true,
      "supCmps": 3,
      "remainingN": 97,
      "LOI": 15,
      "IR": 10,
      "Country": "United States",
      "Language": "ENGLISH",
      "groupType": "Consumer",
      "deviceType": "All",
      "createdDate": "09/11/2017, 11:03:50 pm PST",
      "modifiedDate": "09/11/2017, 11:50:27 pm PST",
      "reContact": false,
      "entryLink": "http://innovate-stage-209385288.us-east-1.elb.amazonaws.com/startSurvey?survNum=86NMz1YX&supCode=225&PID=[%%pid%%]",
      "testEntryLink": "",
      "targeting": [
        {
          "QuestionId": 11,
          "QuestionKey": "ZIPCODES",
          "QuestionText": "What is your zipcode?",
          "QuestionType": "Numeric Open Ended",
          "QuestionCategory":"Demographic",
          "Options": [
            {
              "OptionId": 1,
              "OptionText": "800235"
            }
          ]
        },
       {
          "QuestionId": 1,
          "QuestionKey":"AGE",
          "QuestionText":"What is your age?",
          "QuestionType":"Numeric Open Ended",
          "QuestionCategory":"Demographic",
           "Options":[
              {
                 "OptionId":1,
                 "ageStart":15,
                 "ageEnd":30
              }
           ]
         },
          {
             "QuestionId": 2,
             "QuestionKey":"GENDER",
             "QuestionText":"What is your gender?",
             "QuestionType":"Single Punch",
             "QuestionCategory":"Demographic",
             "Options":[
                {
                   "OptionId":1,
                   "OptionText":"Male"
                },
                {
                   "OptionId":2,
                   "OptionText":"Female"
                }
             ]
          }
      ],
      "CPI": "4.50",
      "isQuota": true,
      "jobCategory": "Beauty/Cosmetics",
      "isPIIRequired": false,
      "JobId": 9175,
      "BuyerId": 136,
      "expected_end_date": "09/21/2018",
      "duplicateSurveyIds": [14345, 14346],
      "duplicateCheckLevel" : "Multi Surveys",
      "statuses": ["Completed", "Failed"]

    },
    {
      "surveyId": 12631,
      "surveyName": "Basic Demo With Miscellaneous",
      "N": 100,
      "isRevShr": true,
      "supCmps": 0,
      "remainingN": 100,
      "LOI": 15,
      "IR": 10,
      "Country": "United States",
      "Language": "ENGLISH",
      "groupType": "Consumer",
      "deviceType": "All",
      "createdDate": "09/11/2017, 11:03:50 pm PST",
      "modifiedDate": "10/09/2017, 9:26:27 am PST",
      "reContact": false,
      "entryLink": "http://innovate-stage-209385288.us-east-1.elb.amazonaws.com/startSurvey?survNum=M6wXK8P8&supCode=225&PID=[%%pid%%]",
      "testEntryLink": "",
      "targeting": [],
      "CPI": "0.30",
      "isQuota": false,
      "jobCategory": "Beauty/Cosmetics",
      "isPIIRequired": false,
      "JobId": 9175,
      "BuyerId": 136,
      "expected_end_date": "09/21/2018",
      "duplicateSurveyIds": [14345, 14346],
      "duplicateCheckLevel" : "Job Level",
      "statuses": ["Completed", "Failed"]
    }
  ]
}

This API will allow supplier to pull down survey inventory associated with supplier’s account at Innovate. Survey list will be of only LIVE surveys.

Get Allocated Surveys By Id

Definition

GET https://<serverName>/api/v1/supply/getAllocatedSurveysBySurveyId/<surveyId>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getAllocatedSurveysBySurveyId/12632"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getAllocatedSurveysBySurveyId/12632";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getAllocatedSurveysBySurveyId/12632",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": " All live groups are successfully searched",
  "result": [
    {
        "surveyId": 12632,
        "surveyName": "Basic Demo With Beverage survey",
        "N": 100,
        "isRevShr": true,
        "supCmps": 3,
        "remainingN": 97,
        "LOI": 15,
        "IR": 10,
        "Country": "United States",
        "Language": "ENGLISH",
        "groupType": "Consumer",
        "deviceType": "All",
        "createdDate": "09/11/2017, 11:03:50 pm PST",
        "modifiedDate": "09/11/2017, 11:50:27 pm PST",
        "reContact": false,
        "entryLink": "http://innovate-stage-209385288.us-east-1.elb.amazonaws.com/startSurvey?survNum=86NMz1YX&supCode=225&PID=[%%pid%%]",
        "testEntryLink": "",
        "targeting": [
            {
                "QuestionId": 11,
                "QuestionKey": "ZIPCODES",
                "QuestionText": "What is your zipcode?",
                "QuestionType": "Numeric Open Ended",
                "QuestionCategory":"Demographic",
                "Options": [
                    {
                        "OptionId": 1,
                        "OptionText": "800235"
                    }
                ]
            },
            {
                "QuestionId": 1,
                "QuestionKey":"AGE",
                "QuestionText":"What is your age?",
                "QuestionType":"Numeric Open Ended",
                "QuestionCategory":"Demographic",
                 "Options":[
                    {
                        "OptionId":1,
                        "ageStart":15,
                        "ageEnd":30
                    }
                 ]
            },
            {
                "QuestionId": 2,
                "QuestionKey":"GENDER",
                "QuestionText":"What is your gender?",
                "QuestionType":"Single Punch",
                "QuestionCategory":"Demographic",
                "Options":[
                    {
                        "OptionId":1,
                        "OptionText":"Male"
                    },
                    {
                        "OptionId":2,
                        "OptionText":"Female"
                    }
                ]
            }
        ],
        "CPI": "4.50",
        "isQuota": true,
        "jobCategory": "Beauty/Cosmetics",
        "isPIIRequired": false,
        "JobId": 9175,
        "BuyerId": 136,
        "expected_end_date": "09/21/2018",
        "duplicateSurveyIds": [14345, 14346],
        "duplicateCheckLevel" : "Survey Level",
        "statuses": ["Completed", "Failed"]
    }
  ]
}

Example Response

{
  "apiStatus": "success",
  "msg": "Survey is Paused/Closed"
}

This API will allow supplier(s) to get Survey Status, if survey is Live then survey data will be provide else return Paused/Closed message.

Query Parameters

Property Type Required Description
Survey ID Integer Yes Survey Id of particular survey (like : 12632)

Get Allocated Surveys By Date (live surveys only)

Definition

GET https://<serverName>/api/v1/supply/getAllocatedSurveysByDate/<Datetime>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getAllocatedSurveysByDate/2017-10-01T13:35:11.364Z"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getAllocatedSurveysByDate/2017-10-01T13:35:11.364Z";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getAllocatedSurveysByDate/2017-10-01T13:35:11.364Z",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": " All live groups are successfully searched",
  "result": [
    {
      "surveyId": 14345,
      "surveyName": "Basic Demo With Beverage survey",
      "N": 10,
      "isRevShr": true,
      "supCmps": 0,
      "remainingN": 10,
      "LOI": 3,
      "IR": 100,
      "Country": "United States",
      "Language": "ENGLISH",
      "groupType": "B2B",
      "deviceType": "All",
      "createdDate": "11/07/2017, 12:46:10 am PST",
      "modifiedDate": "11/07/2017, 12:58:06 am PST",
      "reContact": false,
      "entryLink": "http://innovate-stage-209385288.us-east-1.elb.amazonaws.com/startSurvey?survNum=36mnkXPb&supCode=225&PID=[%%pid%%]",
      "testEntryLink": "",
      "CPI": "1.13",
      "jobCategory": "Education",
      "targeting": [
        {
          "QuestionId": 11,
          "QuestionKey": "ZIPCODES",
          "QuestionText": "What is your zipcode?",
          "QuestionType": "Numeric Open Ended",
          "QuestionCategory": "Geographic",
          "Options": [
            {
              "OptionId": 1,
              "OptionText": "800235"
            }
          ]
        }
      ],
      "isQuota": false,
      "isPIIRequired": false,
      "JobId": 9175,
      "BuyerId": 136,
      "expected_end_date": "09/21/2018",
      "duplicateSurveyIds": [14345, 14346],
      "duplicateCheckLevel" : "Multi Surveys",
      "statuses": ["Completed", "Failed"]
    },
    {
      "surveyId": 14343,
      "surveyName": "Basic Demo With Miscellaneous",
      "N": 10,
      "isRevShr": true,
      "supCmps": 0,
      "remainingN": 10,
      "LOI": 3,
      "IR": 100,
      "Country": "United States",
      "Language": "ENGLISH",
      "groupType": "B2B",
      "deviceType": "All",
      "createdDate": "11/07/2017, 12:40:34 am PST",
      "modifiedDate": "11/07/2017, 12:45:30 am PST",
      "reContact": false,
      "entryLink": "http://innovate-stage-209385288.us-east-1.elb.amazonaws.com/startSurvey?survNum=1YjMLWvq&supCode=225&PID=[%%pid%%]",
      "testEntryLink": "",
      "CPI": "0.60",
      "jobCategory": "Education",
      "targeting": [],
      "isQuota": false,
      "isPIIRequired": false,
      "JobId": 9175,
      "BuyerId": 136,
      "expected_end_date": "09/21/2018",
      "duplicateSurveyIds": [14345, 14346],
      "duplicateCheckLevel" : "Job Level",
      "statuses": ["Completed", "Failed"]
    }
  ]
}

API returns a list of all LIVE surveys allocated to supplier’s account updated or created after certain datetime.

Query Parameters

Property Type Required Description
Date Time String Yes Date and time of the live surveys (Example : 2017-10-01T13:35:11.364Z)

Get Quota for Survey

Definition

GET https://<serverName>/api/v1/supply/getQuotaForSurvey/<surveyId>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getQuotaForSurvey/12634"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getQuotaForSurvey/12634";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getQuotaForSurvey/12634",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "Quotas are successfully searched",
  "result": [
    {
      "_id": "59b778c66e4c0b1c8288f6ad",
      "id": 780275,
      "quotaN": 10,
      "title": " 13 - 99 Yes, for business Yes, for personal Yes, for both",
      "quotaName": "",
      "hardStopType": 0,
      "cmp": 1,
      "clk": 1,
      "hardStop": 1,
      "quotaStatus": "Open",
      "RemainingN": 9,
      "targeting": {
        "AGE": [
            {
                "ageEnd": 99,
                "ageStart": 13,
                "OptionId": 1
            }
        ],
        "TECHNOLOGY_87": [
            {
                "OptionText": "Yes, for business",
                "OptionId": 1
            },
            {
                "OptionText": "Yes, for personal",
                "OptionId": 2
            },
            {
                "OptionText": "Yes, for both",
                "OptionId": 3
            }
        ]
      }
    },
    {
      "_id": "59b778c66e4c0b1c8288f6af",
      "id": 780276,
      "quotaN": 10,
      "title": " 3rd Grade or less Middle School - Grades 4 - 8 Completed some high school High school graduate Completed some college, but no degree",
      "quotaName": "",
      "hardStopType": 0,
      "cmp": 0,
      "clk": 0,
      "hardStop": 1,
      "quotaStatus": "Open",
      "RemainingN": 10,
      "targeting": {
        "EDUCATION": [
            {
                "OptionId": 1,
                "OptionText": "3rd Grade or less"
            },
            {
                "OptionId": 2,
                "OptionText": "Middle School - Grades 4 - 8"
            },
            {
                "OptionId": 3,
                "OptionText": "Completed some high school"
            },
            {
                "OptionId": 4,
                "OptionText": "High school graduate"
            },
            {
                "OptionId": 6,
                "OptionText": "Completed some college, but no degree"
            }
        ]
      }
    }
  ]
}

This API will allow supplier to get quotas associated with each survey. Each quota will be returned with sample size and targeting criteria.

Query Parameters

Property Type Required Description
Survey ID Integer Yes Survey Id of particular survey (like : 12634)

Get Redirect Method for Survey

Definition

GET https://<serverName>/api/v1/supply/surveySpecificRedirects/<surveyId>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/surveySpecificRedirects/6544"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/surveySpecificRedirects/6544";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/surveySpecificRedirects/6544",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "Redirection Methods fetched successfully",
  "redirectURL": {
      "sUrl": "http://www.survey.com?pid=[%%pid%%]",
      "fUrl": "http://www.survey.com?pid=[%%pid%%]&token=[%%token]",
      "oUrl": "",
      "qTUrl": "http://www.survey.com?pid=[%%pid%%]&token=[%%token]",
      "tUrl": "http://www.survey.com?pid=[%%pid%%]&token=[%%token]",
      "pstbck": "",
      "pstbck_fail": "",
      "pstBckSuccessMethod":"",
      "pstBckFailMethod" : ""
  }
}

With this API, supplier should be able to get redirect URLs or Pixels of the survey. By default, it will be supplier’s global redirect and URLs will be used for each survey associated with supplier’s account.

Set Redirect Method for Survey

Definition

PUT https://<serverName>/api/v1/supply/setRedirectionForSurvey/<surveyId>

Example Request

curl -X PUT -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/setRedirectionForSurvey/6544"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/setRedirectionForSurvey/6544";

  $aHTTP['http']['method']  = 'PUT';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "PUT",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/setRedirectionForSurvey/6544",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "Redirection Methods updated successfully"
}

With this API, supplier should be able to update redirect URLs or Pixels for each survey. By default, supplier’s global redirect and URLs will be used for each survey associated with supplier’s account. This API allows supplier to update the same at survey level. Global redirect URLs and Pixels for supplier’s account will remain as it is. Postback methods can be “GET/POST”. Detault Postback method will be “GET”.

Query Parameters

Property Type Required Description
sUrl String NO Survey Success Url
fUrl String NO Fail Survey Url
oUrl String NO Overquota Survey Url
qTUrl String NO Quality Termination Survey Url
tUrl String NO Termination Survey Url
pstbck String NO Success Postback
pstbck_fail String NO Postback Fail
pstBckSuccessMethod String NO Success Postback Method
pstBckFailMethod String NO Postback Fail Method

Delete Redirect Method for Survey

Definition

DELETE https://<serverName>/api/v1/supply/surveySpecificRedirects/<surveyId>

Example Request

curl -X DELETE -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/surveySpecificRedirects/6544"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/surveySpecificRedirects/6544";

  $aHTTP['http']['method']  = 'DELETE';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "DELETE",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/surveySpecificRedirects/6544",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
    "apiStatus": "success",
    "msg": "Redirection Methods updated successfully"
}

With this API, supplier should be able to delete/remove the redirect URLs or Pixels of the survey. This API allows supplier to delete/remove the same at survey level. Global redirect URLs and Pixels for supplier’s account will remain as it is.

Get PIDs for re-contact surveys (studies)

Definition

GET https://<serverName>/api/v1/supply/getPidsForRecontactSurvey/<surveyId>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getPidsForRecontactSurvey/6299"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getPidsForRecontactSurvey/6299";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getPidsForRecontactSurvey/6299",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "PIDs are successfully searched",
  "result": {
    "sourceSurveyIDs": [
      748493,
      3303030
    ],
    "exclude": [
      "57974767f92c2ed94208a507",
      "57d7c450707c3d6220489230",
      "57ac5ae0707c3d095f4886eb"
    ],
    "include": [
      "57f255a5707c3d3a76410182",
      "572adfc1f92c2e971efb7678"
    ]
  }
}

This API allows suppliers to pull down list of PIDs (user Ids) for re-contact studies. When re-contact flag is True in Survey details, this API should be used to pull down user Ids associated with Supplier’s traffic.

Query Parameters

Property Type Required Description
Survey ID Integer Yes Survey Id of particular survey (like : 6299)

Get Closed Survey List (allocated to supplier only)

Definition

GET https://<surveyName>/api/v1/supply/getClosedSurveyListByDate/<Datetime>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getClosedSurveyListByDate/2017-11-01T13:35:11.364Z"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getClosedSurveyListByDate/2017-11-01T13:35:11.364Z";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getClosedSurveyListByDate/2017-11-01T13:35:11.364Z",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "closed Survey IDs are successfully searched",
  "result": [
      12331,
      12656,
      14055,
      12163,
      12849,
      12423,
      12458
  ]
}

This API returns list of all Closed survey Ids which were allocated to Supplier’s account. Closed surveys after certain date time will be returned in this list. Using this list, Supplier should be able to archive such closed surveys from list.

Query Parameters

Property Type Required Description
Date Time String Yes Date and time of the closed survey (Example : 2017-11-01T13:35:11.364Z)

Get survey stats

Definition

GET https://<severName>/api/v1/supply/getSurveyStats/<surveyKey>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getSurveyStats/6614"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getSurveyStats/6614";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getSurveyStats/6614",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "Survey Stats are successfully searched",
  "result": {
    "isVerified": false,
    "clicks": 52,
    "surveyStarts": 19,
    "completes": 13,
    "fails": 0,
    "overQuota": 0,
    "qualityTerms": 0,
    "preSurveyTerminates": 21,
    "preSurveyOverQuota": 1,
    "preSurveyQualityTermination": 0,
    "averageLOI": "0.23",
    "revenue": 3.379999999999999,
    "Conversion": "68.42"
  }
}

This API allows suppliers to get real time statistics for allocated survey. This will return data like number of clicks, completes, fails, over quota, revenue etc. for supplier’s traffic.

Query Parameters

Property Type Required Description
Survey ID Integer Yes Survey Id of particular survey (like : 6614)

Get Survey Transactions data

Definition

GET https://<serverName>/api/v1/supply/getSurveyTransactions/<surveyId>?startDate=yyyy-mm-dd&endDate=yyyy-mm-dd&status=Completed

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getSurveyTransactions/6299?startDate=2017-01-02&endDate=2017-02-10&status=Completed"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getSurveyTransactions/6299?startDate=2017-01-02&endDate=2017-02-10&status=Completed";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getSurveyTransactions/6299?startDate=2017-01-02&endDate=2017-02-10&status=Completed",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{
  "apiStatus": "success",
  "msg": "Survey Transactions are successfully searched",
  "result": [
    {
      "ip": "104.189.11.109",
      "verifyToken": "Pending",
      "termReason": "",
      "CPI": "0.26",
      "PID": "9834540538942",
      "token": "TrJHBnKhpW",
      "st_date_time": "10/24/2017, 2:12:24 am PST",
      "clkDateTime": "10/24/2017, 2:12:03 am PST",
      "completeDateTime": "10/24/2017, 2:12:33 am PST",
      "status": "Completed",
      "trackId": "6d30aa69-2693-4bce-91ab-1a85b69a72d5"
    }
  ]
}

This API allows supplier to download transactional data for each survey with fields like PID (supplier user Id), survey transaction status, IP Address, survey start time, survey end time etc.

Query Parameters

Property Type Required Description
Survey ID Integer Yes Survey Id of particular survey (like : 6299)
Start Date String Yes - if End Date is present Start Date is beginning date (like : 2017-01-02)
End Date String Yes - if Start Date is present End Date is ending date (like :2017-02-10)
Status String No If we passed status along with Start Date and End Date then transaction status/ statuses (Pre Survey DNC/Completed/Failed/ Over Quota, Quality Termination/Pre Survey Termination/Start Survey DNC/Pre Survey Over Quota/Pre Survey Quality Termination) should be passed.

Get Survey Transactions data By PID and survey number

Definition

GET https://<serverName>/api/v1/supply/getSurveyTransactionsByCond/<surveyId>/<PID>

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getSurveyTransactionsByCond/6555/9834540538942"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getSurveyTransactionsByCond/6555/9834540538942";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getSurveyTransactionsByCond/6555/9834540538942",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{  
   "apiStatus":"success",
   "msg":"Survey Transactions are successfully searched",
   "result":[  
      {  
        "id": "TrJHBnKhpW",
        "ip": "104.189.11.109",
        "verifyToken": "Pending",
        "termReason": "",
        "CPI": "0.26",
        "st_date_time": "10/24/2017, 2:12:24 am PST",
        "clkDateTime": "10/24/2017, 2:12:03 am PST",
        "completeDateTime": "10/24/2017, 2:12:33 am PST",
        "status": "Completed",
        "trackId": "6d30aa69-2693-4bce-91ab-1a85b69a72d5"
      }
   ]
}

This API allows suppliers to get specific survey transaction record associated with PID (supplier user Id) and survey Id.

Query Parameters

Property Type Required Description
Survey ID Integer Yes Survey Id of particular survey (like : 6555)
PID String Yes Panelist Id (like : 9834540538942)

Get Survey Transactions data By Date Range

Definition

GET https://<serverName>/api/v1/supply/getSurveyTransactionsByDateRange?startDate=yyyy-mm-dd&endDate=yyyy-mm-dd&status=Completed
                            OR
GET https://<serverName>/api/v1/supply/getSurveyTransactionsByDateRange?verifiedStartDate=yyyy-mm-dd&verifiedEndDate=yyyy-mm-dd&status=Valid

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getSurveyTransactionsByDateRange?startDate=2017-01-02&endDate=2017-02-10&status=Completed"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getSurveyTransactionsByDateRange?startDate=2017-01-02&endDate=2017-02-10&status=Completed";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getSurveyTransactionsByDateRange?startDate=2017-01-02&endDate=2017-02-10&status=Completed",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{  
   "apiStatus":"success",
   "msg":"Survey Transactions are successfully searched",
   "result":[  
    {
      "id": "THyBTPgJkf",
      "ip": "122.160.153.166",
      "verifyToken": "Pending",
      "termReason": "",
      "grp": {},
      "CPI": "1.57",
      "PID": "J1",
      "st_date_time": "11/07/2017, 1:08:15 am PST",
      "clkDateTime": "11/07/2017, 1:06:53 am PST",
      "completeDateTime": "11/07/2017, 1:09:33 am PST",
      "surveyId": 14344,
      "status": "Completed",
      "trackId": "6d30aa69-2693-4bce-91ab-1a85b69a72d5"
    },
    {
      "id": "THy8jOzDCW",
      "ip": "122.160.153.166",
      "verifyToken": "Valid",
      "termReason": "",
      "grp": {},
      "verifiedTknDt": "11/01/2017, 5:00:20 am PST",
      "CPI": "0.26",
      "PID": "test52",
      "st_date_time": "11/01/2017, 2:11:53 am PST",
      "clkDateTime": "11/01/2017, 2:11:35 am PST",
      "completeDateTime": "11/01/2017, 2:12:01 am PST",
      "surveyId": 14016,
      "status": "Completed",
      "trackId": ""
    }
  ] 
}

This API allows suppliers to get survey transaction records associated within the specified Date Range whether startDate and endDate/ verifiedStartDate and verifiedEndDate (in case of valid and invalid token).

Query Parameters

Property Type Required Description
Start Date String Yes Start Date is beginning date (like : 2017-01-02)
End Date String Yes End Date is ending date (like :2017-02-10)
Verified Start Date String Yes Verified Start Date is beginning date to get token which are verified(like : 2017-01-02)
Verified End Date String Yes Verified End Date is ending date to get token which are verified upto that date (like : 2017-02-10)
Status String No 1. If we passed status along with Start Date and End Date then transaction status/ statuses (Pre Survey DNC/Completed/Failed/ Over Quota,Quality Termination/Pre Survey Termination/Start Survey DNC/Pre Survey Over Quota/Pre Survey Quality Termination) should be passed.
2. If we passed status along with Verified Start Date and Verified End Date then verified token status/statues (Valid/Invalid) should be passed.

Get Survey Stats data By Date Range

Definition

GET https://<serverName>/api/v1/supply/getSurveyStatsByDateRange?startDate=yyyy-mm-dd&endDate=yyyy-mm-dd
                            OR
GET https://<serverName>/api/v1/supply/getSurveyStatsByDateRange?verifiedStartDate=yyyy-mm-dd&verifiedEndDate=yyyy-mm-dd

Example Request

curl -X GET -H "Content-Type: application/json" 
"x-access-token: YOUR_X-ACCESS-TOKEN_HERE"
"https://supplier.innovatemr.net/api/v1/supply/getSurveyStatsByDateRange?startDate=2017-01-02&endDate=2017-02-10"
<?php
  $URL = "https://supplier.innovatemr.net/api/v1/supply/getSurveyStatsByDateRange?startDate=2017-01-02&endDate=2017-02-10";

  $aHTTP['http']['method']  = 'GET';

  $aHTTP['http']['header']  = "x-access-token: YOUR_X-ACCESS-TOKEN_HERE";

  $context = stream_context_create($aHTTP);

  $response = file_get_contents($URL, false, $context);
?>
var options = {
  "method": "GET",
  "hostname": "supplier.innovatemr.net",
  "path": "/api/v1/supply/getSurveyStatsByDateRange?startDate=2017-01-02&endDate=2017-02-10",
  "headers": {
    "content-type": "application/json",
    "x-access-token": "YOUR_X-ACCESS-TOKEN_HERE",
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Example Response

{  
  "apiStatus": "success",
  "msg": "Survey Stats are successfully searched",
  "result": 
  {
    "clicks": 418,
    "surveyStarts": 172,
    "completes": 94,
    "fails": 10,
    "overQuota": 7,
    "qualityTerms": 7,
    "preSurveyTerminates": 164,
    "preSurveyOverQuota": 4,
    "preSurveyQualityTermination": 15,
    "averageLOI": "0.48",
    "revenue": "46.79",
    "Conversion": "54.65",
    "validCompletes": 16,
    "invalidCompletes": 6,
    "pendingCompletes": 72
  }
}

This API allows suppliers to get survey statistics records associated within the specified Date Range whether startDate and endDate/verifiedStartDate and verifiedEndDate.

Query Parameters

Property Type Required Description
Start Date String Yes Start Date is beginning date (like : 2017-01-02)
End Date String Yes End Date is ending date (like :2017-02-10)
Verified Start Date String Yes Verified Start Date is beginning date to get token which are verified(like : 2017-01-02)
Verified End Date String Yes Verified End Date is ending date to get token which are verified upto that date (like : 2017-02-10)

Supplier API Version-2

Innovate Supplier APIs provide a simple and quick way to pull down survey inventory available to supplier and match with user’s profile. With this, supplier will be able to get updated list of survey inventory, real time statistics for each survey and targeting questions to match with user’s profile.

https://innovatemr.stoplight.io/docs/supplier-api/

Postbacks/Redirects

Redirect URL

Survey success URL

This redirect URL will be used when user will complete a survey successfully.

Fail survey URL

This redirect URL will be used when user will be terminated on client side for the survey.

Over quota survey URL

This redirect URL will be used when user will be marked as over quota by client OR by Innovate system for the survey.

Quality terminate survey URL

This redirect URL will be used when user will be marked as Quality terminate by client OR by Innovate system for the survey.

Terminate survey URL

This redirect URL will be used when user will be marked as terminate (for qualification mismatch OR survey closed reasons) by Innovate system for the survey.

Following fields support in redirect URL :-

Field Merge Field Defintion
token %%token%% Unique survey transaction ID.
pid %%pid%% Supplier unique user Id sent to Innovate in survey entry link as part of PID variable. Innovate will send it back to supplier in the redirects or postback.
status %%status%% Status of survey(success(1), termination(2), over quota(3), quality termination(4), pre survey termination(5), pre survey over quota(7) and pre survey quality termination(8))
revenue %%revenue%% Supplier final calculated CPI for survey complete.
surveyId %%surveyId%% Survey Id for which supplier have sent traffic.
trackId %%trackId%% Supplier unique transaction Id sent to Innovate in survey entry link as part of trackId variable. Innovate will send it back to supplier in the redirects or postback.
hashdata %%hashdata%% Innovate support 2 algorithms to hash the entire string of redirect/postback URL. SHA1 and MD5. Supplier can choose any method from this and InnovateMR will share secret key for supplier account. Supplier can use that key to decrypt the value and match the exact string.
termReason %%termReason%% Reason of survey termination.
closeQuotaId %%closeQuotaId%% When a survey is marked as over quota we passed closed quota id (due to which quota, it is marked as over quota).

PostBack URL

Success postback

This URL is fired as server to server postback pixel in case of successful complete. Both redirect and postback URLs can be used. First, Innovate system will fire postback pixel and then redirect user to the success redirect URL. Postback can be used for more secure logic with whitelisting server IPs.

Postback fail

This URL is fired as server to server postback pixel in case of all status except complete.

Following fields support in postback URL :-

Field Merge Field Definition
token %%token%% Unique survey transaction ID.
pid %%pid%% Unique user Id sent to Innovate in survey entry link as part of PID variable. Innovate will send it back to supplier in the redirects or postback.
status %%status%% Status of survey(success(1), termination(2), over quota(3), quality termination(4), pre survey termination(5), pre survey over quota(7) and pre survey quality termination(8))
revenue %%revenue%% Supplier final calculated CPI for survey complete.
trackId %%trackId%% Supplier unique transaction Id sent to Innovate in survey entry link as part of trackId variable. Innovate will send it back to supplier in the redirects or postback.
hashdata %%hashdata%% Innovate support 2 algorithms to hash the entire string of redirect/postback URL. SHA1 and MD5. Supplier can choose any method from this and InnovateMR will share secret key for supplier account. Supplier can use that key to decrypt the value and match the exact string.
termReason %%termReason%% Reason of survey termination.
surveyId %%surveyId%% Survey Id for which supplier have sent traffic.

Hashing Mechanism

Innovate uses Hashing Mechanism for the encryption using following methods :-

SHA1

MD5

Steps to generate hash-

Secret key is required to generate hash. Secret key will be provided by InnovateMR account manager.

Innovate will use complete URL without hash value in it. Example Hashed URL = https://www.xyz.com/web-service/innovate?pubid=ct4JGltDsCS&tran_id=28969 &offer_id=3&cpi=1.8&hash=

Code which will be used to generate hash :

A. SHA1 encryption method : var hashVal = crypto.createHmac(‘sha1’, secret_key).update(restUrl).digest(“hex”); where restUrl = Hashed URL

B. MD5 encryption method : var hashVal = crypto.createHmac(‘MD5’, secret_key).update(restUrl).digest(“hex”); where restUrl = Hashed URL

Generated Hash = “8c593bbbfa0beae8604e4d88805c60dc59e24db1”. Add this hash value in the URL mentioned in step 2.

Final URL which will be redirected to client side = https://www.xyz.com/web-service/innovate?pubid=ct4JGltDsCS&tran_id=28969&offer_id=3&cpi=1.8 &hash=8c593bbbfa0beae8604e4d88805c60dc59e24db1

Redirect Url Helper



Supplier API – FAQ

A supplier API that provides a simple and quick way to pull down survey inventory available to suppliers and match it with the user’s profile.

We connect our systems together and allocate a portion of our inventory to your company based on various attributes, including delivery speed, targeting capabilities, geographical reach and price. This way you as a supplier will be able to get updated lists of survey inventory, real time statistics for each survey and targeting questions to match with the user’s profile.

Your system will be able to analyze the projects fit for your target groups and then you will send your traffic to our projects.

You will be sending the invites. We are working on a feature to send the invites ourselves, but this is currently in the development phase.

It gives you the opportunity to be selective and pick only projects that are fit for your audience, thus monetizing traffic in an effective and efficient manner.

You are the one who decides the incentives for your panelists.

The general volume opportunity of our API surveys has exceeded 350k survey completions monthly and is continuously growing as we’re expanding our reach in new markets across the globe.

There are three pricing methods we can accommodate: flat rate, grid and revenue share. We’re open to discuss each and every option.

This depends on your capacity, targeting capabilities and geographical reach and engagement. As general information, Innovate MR spends considerable amounts on sample each month and this figure is constantly increasing.

We are quickly growing our global client base and adding new surveys daily, so all markets can and will be considered for integration. Our goal is to expand our inventory globally to as many markets as possible.

Beside the great revenue opportunity and the chance to exceed your ROI goals, this is a great way to increase user engagement and keep your users on their platform longer. Also save valuable time, as it eliminates the back and forth from ad-hoc bidding because everything is automated.

All the technical information regarding the integration can be found in our developer portal (http://developer.innovatemr.com/). Our tech team will also be available to assist during the integration process from start to finish.

Buyer API

The Innovate Buyer API provides an easy way to connect your system to Innovate to quickly and efficiently get survey respondents to your surveys. Simply post your sampling request with targeting criteria, and Innovate will invite its proprietary panel of survey respondents to take your survey.

Environments

Sandbox Endpoint

https://stagediysamplingapi.innovatemr.com

Production Endpoint

 https://apivisionsampling.innovatemr.com

Innovate has two environments—production and sandbox. The sandbox environment is used during development and for testing. There are no live respondents in this environment (although you may enter as a respondent). It is important to note that lookup libraries in the sandbox are different from those in production. Production should only be used once an application has been thoroughly tested in sandbox.

Running in Postman

Postman Image InnovateMR Programmatic Sampling API Reference for Buyers and Sellers The entire Innovate API collection can be easily imported into Postman, by clicking the button below:

Run in Postman

Postman is a free application that allows you to execute test calls in an intuitive interface. When making test calls, you should use the development environment.

Create Job

Definition

POST https://<serverName>/api/v2/pega/job

Example Request

curl --request POST 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/job' 
  --header 'Content-Type: application/json' 
  --header 'x-access-token: {token}' 
  --data '{
    "Name": "Job for Group Main",
    "Status": 1,
    "Category": 1
}'
<?php

$request = new HttpRequest();
$request->setUrl("https://apivisionsampling.innovatemr.com/api/v2/pega/job");
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "Name": "Job for Group Main", "Status": 1, "Category": 1 }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/job',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE' 
     'Content-Type': 'application/json' },
  body: { Name: 'Job for Group Main', Status: 1, Category: 1 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Job is successfully added",
    "job": {
        "Customer": {
            "CustomerName": "customer_demo",
            "CustomerId": 389
        },
        "ProjectManager": {
            "ProjectManagerName": "pm1",
            "ProjectManagerId": 67
        },
        "ProjectedCloseDate": {
            "Month": 1,
            "Year": 2019
        },
        "Status": 1,
        "FingerPrintingLevel": 2,
        "AllowDuplicateStatus": [],
        "Name": "Job for Group Main",
        "Category": 1,
        "isEncryptionAdded": 0,
        "DigitalFingerprintType": 3,
        "CustomerContact": [
            {
                "Primary": 0,
                "CustomerContactId": 671,
                "CustomerContactName": "DemoCustomer"
            }
        ],
        "StartDate": "2019-01-02T11:04:34.662Z",
        "EndDate": "2019-01-02T11:04:34.663Z",
        "LiveDate": "2019-01-02T11:04:34.663Z",
        "Id": 8535,
        "Success": "https://apivisionsampling.innovatemr.com/surveyDone?sc=1&tk=",
        "Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=2&tk=",
        "Over Quota": "https://apivisionsampling.innovatemr.com/surveyDone?sc=3&tk=",
        "Quality Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=4&tk="
    }
}

This API will allow you to create job.

Here are properties to send for Job Model:

Property Type Required Remarks
Name String true
SalesRepresentative Number false
ProjectManager Number false
ProjectManagerAlt Number false
ReferenceNumber String false Maximum Length can be 100 chars
Status Number true Example 0/1/2
Description String false
Category Number true It can be a Number from 1 to 43
isEncryptionAdded Number false Values can be 0 or 1
FingerPrintingLevel Number false Values can be 1, 2, 3 or 4(If we pass ‘FingerPrintingLevel’ as 4 then 'selectedJobsId’ Fields will be mandatory)
selectedJobsId Array false Array of JobIds like [11048, 11049]
AllowDuplicateStatus Array false Array of Numbers like [1, 2, 3, 4]
StartDate Date false ISO String format
EndDate Date false ISO String format
ProjectedCloseDate JSONObject
  • Year
  • Month
  • Number
  • Number
  • false
  • false
  • YYYY format
  • MM format
DigitalFingerprintType Number false Value should be 3
UniqueIPCheck Number false Used as boolean 0 for false and 1 for true
UniquePIDCheck Number false Used as boolean 0 for false and 1 for true

Update Job

Definition

PUT https://<serverName>/api/v2/pega/job/{jobId}

Example Request

curl --request PUT 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/8535'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}'
  --data '{
    "Name": "Job for Group",
    "Category": 42,
    "ProjectManagerId": 68
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/job/8535');
$request->setMethod(HTTP_METH_PUT);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "Name": "Job for Group", "Category": 42, "ProjectManagerId": 68 }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'PUT',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/8535',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE' 
     'Content-Type': 'application/json' },
  body: { Name: 'Job for Group', Category: 42, ProjectManagerId: 68 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Job is successfully updated",
    "job": {
        "Customer": {
            "CustomerName": "customer_demo",
            "CustomerId": 389
        },
        "ProjectManager": {
            "ProjectManagerName": "pm1",
            "ProjectManagerId": 67
        },
        "ProjectedCloseDate": {
            "Month": 1,
            "Year": 2019
        },
        "Status": 1,
        "FingerPrintingLevel": 2,
        "AllowDuplicateStatus": [],
        "Name": "Job for Group",
        "Category": 42,
        "DigitalFingerprintType": 3,
        "isEncryptionAdded": 0,
        "CustomerContact": [
            {
                "Primary": 0,
                "CustomerContactId": 671,
                "CustomerContactName": "DemoCustomer"
            }
        ],
        "StartDate": "2019-01-02T11:04:34.662Z",
        "EndDate": "2019-01-02T11:04:34.663Z",
        "LiveDate": "2019-01-02T11:04:34.663Z",
        "Id": 8535,
        "Success": "https://apivisionsampling.innovatemr.com/surveyDone?sc=1&tk=",
        "Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=2&tk=",
        "Over Quota": "https://apivisionsampling.innovatemr.com/surveyDone?sc=3&tk=",
        "Quality Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=4&tk="
    }
}

This API will allow you to modify job.

Here are properties to send for Job Model:

Property Type Required Remarks
Name String true
SalesRepresentative Number false
ProjectManager Number false
ProjectManagerAlt Number false
ReferenceNumber String false Maximum Length can be 100 chars
Status Number true Example 0/1/2
Description String false
Category Number true It can be a Number from 1 to 43
isEncryptionAdded Number false Values can be 0 or 1
FingerPrintingLevel Number false Values can be 1, 2, 3 or 4(If we pass 'FingerPrintingLevel’ as 4 then 'selectedJobsId’ Fields will be mandatory)
selectedJobsId Array false Array of JobIds like [11048, 11049]
AllowDuplicateStatus Array false Array of Numbers like [1, 2, 3, 4]
StartDate Date false ISO String format
EndDate Date false ISO String format
ProjectedCloseDate JSONObject
  • Year
  • Month
  • Number
  • Number
  • false
  • false
  • YYYY format
  • MM format
DigitalFingerprintType Number false Value should be 3
UniqueIPCheck Number false Used as boolean 0 for false and 1 for true
UniquePIDCheck Number false Used as boolean 0 for false and 1 for true

Get Job Details

Definition

GET https://<serverName>/api/v2/pega/job/{jobId}

Example Request

curl --request GET 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/8535'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/job/8535');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/8535',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE' 
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

This API will allow you to get job details.

Query Parameters

Property Type Required Remarks
JobId Number true Job Number

Example Response

{
    "apiStatus": "success",
    "job": {
        "Customer": {
            "CustomerName": "customer_demo",
            "CustomerId": 389
        },
        "ProjectManager": {
            "ProjectManagerName": "pm1",
            "ProjectManagerId": 67
        },
        "ProjectedCloseDate": {
            "Month": 0,
            "Year": 2019
        },
        "Status": 1,
        "FingerPrintingLevel": 2,
        "AllowDuplicateStatus": [],
        "Name": "Job for Group",
        "Category": 42,
        "isEncryptionAdded": 0,
        "DigitalFingerprintType": 3,
        "CustomerContact": [
            {
                "Primary": 0,
                "CustomerContactId": 671,
                "CustomerContactName": "DemoCustomer"
            }
        ],
        "StartDate": "2019-01-02T11:04:34.662Z",
        "EndDate": "2019-01-02T11:04:34.663Z",
        "LiveDate": "2019-01-02T11:04:34.663Z",
        "Id": 8535,
        "CreatedDate": "2019-01-02T11:04:34.700Z",
        "Success": "https://apivisionsampling.innovatemr.com/surveyDone?sc=1&tk=",
        "Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=2&tk=",
        "Over Quota": "https://apivisionsampling.innovatemr.com/surveyDone?sc=3&tk=",
        "Quality Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=4&tk="
    }
}

Update Job Status

Definition

PUT https://<serverName>/api/v2/pega/job/{JobId}/status

Example Request

curl --request PUT
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/8575/status'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}'
  --data '{
    "Status": 1
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/job/8575/status');
$request->setMethod(HTTP_METH_PUT);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "Status": 1 }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'PUT',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/8575/status',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: { Status: 1 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Job status is set as Live"
}

This API will allow you to update job status.

Here are properties to send for Job Model:

Property Type Required Remarks
status Number true 0 - SettingUp, 1 - Live , 2 - Paused

Get Job List By Status

Definition

POST https://<serverName>/api/v2/pega/jobs

Example Request

curl --location --request POST "https://apivisionsampling.innovatemr.com/api/v2/pega/jobs"
  --header "Content-Type: application/json"
  --header "x-access-token: {token}"
  --data '{"Status":[1,2,0,11]}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/jobs');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{"Status":[1,2,0,11]}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/jobs',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: { Status: [ 1, 2, 0, 11 ] },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "Total": 9,
    "Jobs": [
        {
            "Customer": {
                "CustomerId": 476,
                "CustomerName": "customer_name"
            },
            "ProjectManager": {
                "ProjectManagerId": 47,
                "ProjectManagerName": "pm1"
            },
            "ProjectManagerAlt": {
                "ProjectManagerId": 50,
                "ProjectManagerName": "pm2"
            },
            "Status": 1,
            "FingerPrintingLevel": 3,
            "isEncryptionAdded": 0,
            "Groups": [
                {
                    "Name": "Group A Test",
                    "Id": 23052,
                    "Status": 1,
                    "CreatedBy": "Test A",
                    "CreatedDate": "2018-12-11T07:31:08.495Z",
                    "LiveDate": "2018-12-11T11:21:26.732Z"
                }
            ],
            "Id": 9797,
            "EndDate": "2018-12-11T00:00:00.000Z",
            "StartDate": "2018-12-11T00:00:00.000Z",
            "Name": "Job for Group Main",
            "DigitalFingerprintType": 3,
            "CustomerContact": [
                {
                    "Primary": 1,
                    "CustomerContactId": 936,
                    "CustomerContactName": "customer_cont_name"
                }
            ],
            "CreatedDate": "2018-12-11T07:08:29.191Z",
            "LiveDate": "2018-12-11T07:08:29.138Z",
            "ProjectedCloseDate": {
                "Year": 2018,
                "Month": 12
            },
            "Success": "https://apivisionsampling.innovatemr.com/surveyDone?sc=1&tk=",
            "Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=2&tk=",
            "Over Quota": "https://apivisionsampling.innovatemr.com/surveyDone?sc=3&tk=",
            "Quality Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=4&tk="
        },
        {
            "Customer": {
                "CustomerId": 476,
                "CustomerName": "New api customer"
            },
            "ProjectManager": {
                "ProjectManagerId": 50,
                "ProjectManagerName": "pm1"
            },
            "ProjectManagerAlt": {
                "ProjectManagerId": 50,
                "ProjectManagerName": "pm2"
            },
            "Status": 1,
            "FingerPrintingLevel": 2,
            "isEncryptionAdded": 0,
            "Groups": [],
            "Id": 9808,
            "EndDate": "2018-12-13T09:43:26.084Z",
            "StartDate": "2018-12-13T09:43:26.084Z",
            "Name": "Job for API",
            "DigitalFingerprintType": 3,
            "CustomerContact": [
                {
                    "Primary": 0,
                    "CustomerContactName": "Supplier 1 testb",
                    "CustomerContactId": 150
                }
            ],
            "CreatedDate": "2018-12-13T09:43:26.127Z",
            "LiveDate": "2018-12-13T09:43:26.084Z",
            "Success": "https://apivisionsampling.innovatemr.com/surveyDone?sc=1&tk=",
            "Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=2&tk=",
            "Over Quota": "https://apivisionsampling.innovatemr.com/surveyDone?sc=3&tk=",
            "Quality Termination": "https://apivisionsampling.innovatemr.com/surveyDone?sc=4&tk="
},

This API will allow you to get all jobs.

Here are properties to send for Job Model:

Property Type Required Remarks
Status Array false Array of job’s Status that you need. Like [0, 1, 2]

Create Group

Definition

POST https://<serverName>/api/v2/pega/jobs/{JobId}/group

Example Request

curl --request POST
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/jobs/8575/group'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}'
  --data '{
    "Name": "Group A Test",
    "N": 20,
    "IncidenceRate": 50,
    "EstCostPerInterview": 3,
    "LengthOfInterview": 5,
    "LiveSurveyUrl": "http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]",
    "Target":{
        "Country": "United States",
        "Languages": "ENGLISH"
    }
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/jobs/8575/group');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "Name": "Group A Test", "N": 20, "IncidenceRate": 50, "EstCostPerInterview": 3, "LengthOfInterview": 5, "LiveSurveyUrl": "http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]", "Target":{ "Country": "United States", "Languages": "ENGLISH" } }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/jobs/8575/group',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: 
   { Name: 'Group A Test',
     N: 20,
     IncidenceRate: 50,
     EstCostPerInterview: 3,
     LengthOfInterview: 5,
     LiveSurveyUrl: 'http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]',
     Target: { Country: 'United States', Languages: "ENGLISH" } },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Group is successfully accepted",
    "group": {
        "Target": {
            "GeoIPCheck": 1,
            "Languages": [
                1
            ],
            "Country": "United States"
        },
        "Status": 2,
        "Name": "Group A Test",
        "N": 20,
        "IncidenceRate": 50,
        "CostPerInterview": 2,
        "EstCostPerInterview": 3,
        "LengthOfInterview": 5,
        "LiveSurveyUrl": "http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]",
        "JobId": 8575,
        "CompanyId": 44,
        "DeviceType": 6,
        "CountryCode": "US",
        "Language": "ENGLISH",
        "Id": 19427,
        "CreatedDate": "2018-12-05T13:15:54.745Z",
        "SID": "ev9wL269",
        "Fielding": {
          "FieldingStartDate": "2021-04-12T07:00:00.000Z",
          "FieldingEndDate": "2021-04-23T06:59:59.999Z"
        }
    }
}

This API will allow you to create group for a job.

Here are properties to send for Group Model:

Property Type Required Remarks
JobId Number false JobId to create group under that job
Name String true Group Name
N Number true
IncidenceRate Number true 1 to 100
EstCostPerInterview Number false Estimated Cost in USD for Internal use only
LengthOfInterview Number true 1 to 45 minutes
LiveSurveyUrl String true Url Length can be maximum 1000 chars. Example: http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]
TestSurveyUrl String false Same as Live Url
Color Number false Default 0, 0 = White/None, 1 = Yellow and 2 = Red
Priority Number false Default 0, 0 = Normal, 1 = High and 2 = Critical
DeviceType Number false Default 6(All)
Target JSONObject
  • GeoIPCheck
  • Country
  • Languages
  • Number
  • String
  • String
  • false
  • true
  • true
  • Default 1, 0 = false and 1 = true
  • Country Name. Example:“United States” Please check Country list for other country names
  • Language Name. Example: “ENGLISH” Please check Language list for other Language names
Note String false Note to add any specific information
MaximumCostPerInterview Number false MaximumCostPerInterview should be always greater than or equal to Cost per Interview.

Update Group

Definition

PUT https://<serverName>/api/v2/pega/group/{GroupId}

Example Request

curl --request PUT 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}'
  --data '{
    "IncidenceRate": 30,
    "EstCostPerInterview": 2,
    "LengthOfInterview": 3
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427');
$request->setMethod(HTTP_METH_PUT);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
  "IncidenceRate": 30,
  "EstCostPerInterview": 2,
  "LengthOfInterview": 3
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'PUT',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: 
   { IncidenceRate: 30,
     EstCostPerInterview: 2,
     LengthOfInterview: 3 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Group is successfully accepted",
    "group": {
        "Target": {
            "GeoIPCheck": 1,
            "Languages": [
                1
            ],
            "Country": "United States"
        },
        "Status": 1,
        "Name": "Group A Test",
        "N": 20,
        "IncidenceRate": 30,
        "CostPerInterview": 3.75,
        "EstCostPerInterview":2,
        "LengthOfInterview": 3,
        "LiveSurveyUrl": "http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]",
        "JobId": 8575,
        "CompanyId": 44,
        "DeviceType": 6,
        "CountryCode": "US",
        "Language": "ENGLISH",
        "Id": 19427,
        "CreatedDate": "2018-12-05T13:15:54.745Z",
        "SID": "ev9wL269",
        "TestSurveyUrl": "",
        "Fielding": {
          "FieldingStartDate": "2021-04-12T07:00:00.000Z",
          "FieldingEndDate": "2021-04-23T06:59:59.999Z"
        }
}

This API will allow you to update group for a job.

Here are properties to send for Group Model:

Property Type Required Description
JobId Number false JobId to create group under that job
Name String false Group Name
N Number false
IncidenceRate Number false 1 to 100
EstCostPerInterview Number false Estimated Cost in USD for Internal use only
LengthOfInterview Number false 1 to 45 minutes
LiveSurveyUrl String false Url Length can be maximum 1000 chars. Example: http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]
TestSurveyUrl String false Same as Live Url
Color Number false Default 0, 0 = White/None, 1 = Yellow and 2 = Red
Priority Number false Default 0, 0 = Normal, 1 = High and 2 = Critical
DeviceType Number false Default 6(All)
Target JSONObject
  • GeoIPCheck
  • Country
  • Languages
  • Number
  • String
  • String
  • false
  • false
  • false
  • Default 1, 0 = false and 1 = true
  • Country Name. Example:“United States” Please check Country list for other country names
  • Language Name. Example: “ENGLISH” Please check Language list for other Language names
Note String false Note to add any specific information
MaximumCostPerInterview Number false MaximumCostPerInterview should be always greater than or equal to Cost per Interview.
Status Number false Default 2, 1 = Live, 2 = Pause
FieldingEndDate String false End Date of fielding setup like Year-Month-Date (Example-“FieldingEndDate”: “2021-04-20”)

Get Group Details

Definition

GET https://<serverName>/api/v2/pega/groups/{GroupId}

Example Request

curl --request GET 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/groups/19427' 
  --header 'Content-Type: application/json' 
  --header 'x-access-token: {token}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/groups/19427');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/groups/19427',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "group": {
        "Target": {
            "GeoIPCheck": 1,
            "Languages": [
                1
            ],
            "Country": "United States",
            "Questions": []
        },
        "Status": 1,
        "Name": "Group A Test",
        "N": 20,
        "IncidenceRate": 30,
        "CostPerInterview": 3.75,
        "LengthOfInterview": 3,
        "LiveSurveyUrl": "http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]",
        "JobId": 8575,
        "CompanyId": 44,
        "DeviceType": 6,
        "CountryCode": "US",
        "Language": "ENGLISH",
        "Id": 19427,
        "CreatedDate": "2018-12-05T13:15:54.745Z",
        "SID": "ev9wL269",
        "TestSurveyUrl": "",
        "Fielding": {
          "FieldingStartDate": "2021-04-12T07:00:00.000Z",
          "FieldingEndDate": "2021-04-23T06:59:59.999Z"
        }
    }
}

This API will allow you to get group for a job.

Query Parameters

Property Type Required Remarks
GroupId Number true Group Number

Update Group Status

Definition

PUT https://<serverName>/api/v2/pega/group/{GroupId}/status

Example Request

curl --request PUT 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/status' 
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}' 
  --data '{
    "Status": 2
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/status');
$request->setMethod(HTTP_METH_PUT);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "Status": 2 }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'PUT',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/status',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: { Status: 2 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Group status is set as Paused",
    "group": {
        "Target": {
            "GeoIPCheck": 1,
            "Languages": [
                1
            ],
            "Country": "United States"
        },
        "Status": 2,
        "Name": "Group A Test",
        "N": 20,
        "IncidenceRate": 30,
        "CostPerInterview": 3.75,
        "LengthOfInterview": 3,
        "LiveSurveyUrl": "http://www.survey.com?tk=[%%token%%]&pid=[%%pid%%]",
        "JobId": 8575,
        "CompanyId": 44,
        "DeviceType": 6,
        "CountryCode": "US",
        "Language": "ENGLISH",
        "Id": 19427,
        "CreatedDate": "2018-12-05T13:15:54.745Z",
        "SID": "ev9wL269",
        "TestSurveyUrl": "",
        "Fielding": {
          "FieldingStartDate": "2021-04-12T07:00:00.000Z",
          "FieldingEndDate": "2021-04-23T06:59:59.999Z"
        }
    }
}

This API is used to update group status. To mark Group as Live(Status 1), MaximumCostPerInterview should be updated in group.

Here are properties to send for Group Model:

Property Type Required Remarks
Status Number false Default 2, 1 = Live, 2 = Pause

Add Target to group

Definition

POST https://<serverName>/api/v2/pega/group/{GroupId}/target

Example Request

curl --request POST
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19286/target'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}' 
  --data '{
    "Options":["13-34", "45-66"],
    "QuestionId":1
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/19286/target');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "Options":["13-34", "45-66"], "QuestionId":1 }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19286/target',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: { Options: [ '13-34', '45-66' ], QuestionId: 1 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Target updated successfully",
    "Target": [
        {
            "Type": "",
            "Sequence": 1,
            "QuestionId": 1,
            "QuestionKey": "AGE",
            "QuestionType": "Numeric Open Ended",
            "QuestionText": "What is your age?",
            "Category": 1,
            "Options": [
                {
                    "OptionId": 1,
                    "AgeStart": "13",
                    "AgeEnd": "34"
                },
                {
                    "OptionId": 2,
                    "AgeStart": "45",
                    "AgeEnd": "66"
                }
            ]
        }
    ]
}

This API will allow you to add target to a group.

Here are properties to send for Target Model:

Property Type Required Remarks
QuestionId Number true Question Id as in Questions Library
Options Array of String/Number true For AGE and ZipCodes, Array of String. e.g.: AGE - [“18-25”, “45-60”] and ZIPCODES - [“23213”, “34543”]. For all other targets it will be array of numbers(OptionIds of Question Module) e.g.: [1, 3, 4]

Update Target to group

Definition

PUT https://<serverName>/api/v2/pega/group/{GroupId}/target

Example Request

curl --request PUT 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/target'
  --header 'Content-Type: application/json'
  --header 'x-access-token: {token}'
  --data '{
    "Options":[1, 2],
    "QuestionId":2
}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/target');
$request->setMethod(HTTP_METH_PUT);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "Options":[1, 2],
    "QuestionId":2
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'PUT',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/target',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: { Options: [ 1, 2 ], QuestionId: 2 },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Target updated successfully",
    "Target": [
        {
            "Type": "",
            "Sequence": 1,
            "QuestionId": 1,
            "QuestionKey": "AGE",
            "QuestionType": "Numeric Open Ended",
            "QuestionText": "What is your age?",
            "Category": 1,
            "Options": [
                {
                    "OptionId": 1,
                    "AgeStart": "13",
                    "AgeEnd": "34"
                },
                {
                    "OptionId": 2,
                    "AgeStart": "45",
                    "AgeEnd": "66"
                }
            ]
        },
        {
            "Type": "",
            "Sequence": 2,
            "QuestionId": 2,
            "QuestionKey": "GENDER",
            "QuestionType": "Single Punch",
            "QuestionText": "What is your gender?",
            "Category": 1,
            "Options": [
                {
                    "OptionId": 1,
                    "OptionText": "Male"
                },
                {
                    "OptionId": 2,
                    "OptionText": "Female"
                }
            ]
        }
    ]
}

This API will allow you to update target in a group.

Here are properties to send for Target Model:

Property Type Required Remarks
QuestionId Number true Question Id as in Questions Library
Options Array of String/Number true For AGE and ZipCodes, Array of String. e.g.: AGE - [“18-25”, “45-60”] and ZIPCODES - [“23213”, “34543”]. For all other targets it will be array of numbers(OptionIds of Question Module) e.g.: [1, 3, 4]

Remove Target Question

Definition

DELETE https://<serverName>/api/v2/pega/group/{GroupId}/{QuestionKey}

Example Request

curl --request DELETE 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/GENDER' 
  --header 'Content-Type: application/json' 
  --header 'x-access-token: {token}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/GENDER');
$request->setMethod(HTTP_METH_DELETE);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/19427/GENDER',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Target removed successfully",
    "Target": [
        {
            "Type": "",
            "Sequence": 0,
            "Category": 1,
            "QuestionText": "What is your Age?",
            "QuestionType": "Numeric Open Ended",
            "QuestionKey": "AGE",
            "QuestionId": 1,
            "Options": [
                {
                    "AgeStart": 24,
                    "AgeEnd": 40,
                    "OptionId": 1
                }
            ]
        }
    ]
}

Group Id and Question Key are required to remove a qualification from group.

Here are properties to send for Target Model:

Property Type Required Remarks
QuestionKey String true Question Key Like “AGE”, “GENDER” etc. as in Questions Library
GroupId Number true Group Number

Add Quota to Group

Definition

POST https://<serverName>/api/v2/pega/quota

Example Request

curl --location --request POST "https://apivisionsampling.innovatemr.com/api/v2/pega/quota"
  --header "Content-Type: application/json"
  --header "x-access-token: {token}"
  --data "{ "N": 5, "Title": "Male ", "Conditions": { "AGE": ["26-35", "51-60"] }, "GroupId": 19254, "HardStopType": 0, "HardStop": true }"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/quota');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{ "N": 5, "Title": "Male ", "Conditions": { "AGE": ["26-35", "51-60"] }, "GroupId": 19254, "HardStopType": 0, "HardStop": true }');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/quota',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: 
   { N: 5,
     Title: 'Male ',
     Conditions: { AGE: [ '26-35', '51-60' ] },
     GroupId: 19254,
     HardStopType: 0,
     HardStop: true },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "Quota is successfully created.",
    "Quota": {
        "HardStop": true,
        "Status": 1,
        "HardStopType": 0,
        "N": 5,
        "Title": "Male ",
        "Conditions": {
            "AGE": [
                {
                    "OptionId": 1,
                    "AgeStart": 26,
                    "AgeEnd": 35
                },
                {
                    "OptionId": 2,
                    "AgeStart": 51,
                    "AgeEnd": 60
                }
            ]
        },
        "GroupId": 19254,
        "JobId": 8528,
        "Id": 12130,
        "CreatedDate": "2019-01-11T13:48:56.884Z"
    }
}

This API is used to add quota to the group.

Here are properties to send for Quota Model:

Property Type Required Description
Title String true Quota Name for Quota
HardStop Boolean false Hard Stop to Quota if required N is achieved. Default is false.
HardStopType Number false Hard Stop on Click or Completes. 0 - Survey Complete and 1 - Survey Click
N Number true Number of Click/Completes you need into Quota
GroupId Number true Group Id to add Quota into that Group
Conditions JSONObject true It will have targets options conditions(all targets to add here should be added in targets first). Minimum 1 and maximum 3 targets can be added here. e.g: {“AGE”: [“18-35”], “GENDER”: [1, 2], “ZIPCODES”: [“23213”, “34543”]}

Update Group Quota

Definition

PUT https://<serverName>/api/v2/pega/quota/{QuotaId}

Example Request

curl --location --request PUT "https://apivisionsampling.innovatemr.com/api/v2/pega/quota/15588"
  --header "Content-Type: application/json"
  --header "x-access-token: {token}"
  --data "{
    "N": 10,
    "GroupId":23434,
    "Conditions": {
        "GENDER": [2]
    }
}"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/quota/15588');
$request->setMethod(HTTP_METH_PUT);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "N": 10,
    "GroupId":23434,
    "Conditions": {
        "GENDER": [2]
    }
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'PUT',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/quota/15588',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: { N: 10, GroupId: 23434, Conditions: { GENDER: [ 2 ] } },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

This API is used to update quota in a group.

Example Response

{
    "apiStatus": "success",
    "msg": "Quota is successfully updated."
}

Here are properties to send for Quota Model:

Property Type Required Description
Title String false Quota Name for Quota
HardStop Boolean false Hard Stop to Quota if required N is achieved. Default is false.
HardStopType Number false Hard Stop on Click or Completes. 0 - Survey Complete and 1 - Survey Click
N Number false Number of Click/Completes you need into Quota
GroupId Number true Group Id to add Quota into that Group
Conditions JSONObject true It will have targets options conditions(all targets to add here should be added in targets first). Minimum 1 and maximum 3 targets can be added here. e.g: {“AGE”: [“18-35”], “GENDER”: [1, 2], “ZIPCODES”: [“23213”, “34543”]}

Get Group Quotas

Definition

GET https://<serverName>/api/v2/pega/quotas/{GroupId}

Example Request

curl --location --request GET "https://apivisionsampling.innovatemr.com/api/v2/pega/quotas/19254"
  --header "Content-Type: application/json"
  --header "x-access-token: {token}"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/quotas/19254');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/quotas/19254',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

This API is used to get group quotas.

Example Response

{
    "apiStatus": "success",
    "Quotas": [
        {
            "HardStop": true,
            "Status": 1,
            "HardStopType": 0,
            "N": 5,
            "Title": "Male ",
            "Conditions": {
                "AGE": [
                    {
                        "OptionId": 1,
                        "AgeStart": 26,
                        "AgeEnd": 35
                    },
                    {
                        "OptionId": 2,
                        "AgeStart": 51,
                        "AgeEnd": 60
                    }
                ]
            },
            "GroupId": 19254,
            "JobId": 8528,
            "Id": 12130,
            "CreatedDate": "2019-01-11T13:48:56.884Z"
        }
    ]
}

Query Parameters

Property Type Required Remarks
GroupId Number true Group Number

Get Group Feasibility

Definition

GET https://<serverName>/api/v2/pega/group/{GroupId}/feasibility

Example Request

curl --location --request GET "https://apivisionsampling.innovatemr.com/api/v2/pega/group/17780/feasibility"
  --header "Content-Type: application/json"
  --header "x-access-token: {token}"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/17780/feasibility');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/17780/feasibility',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

This API is used to get group feasibility.

Example Response

{
    "apiStatus": "success",
    "Feasibility": {
        "Common": [
            {
                "Days": 1,
                "Estimate": 10
            }
        ]
    }
}

Query Parameters

Property Type Required Remarks
GroupId Number true Group Number

Feasibility (Find estimates)

Definition

POST https://<serverName>/api/v2/pega/feasibility

Example Request

curl --location --request POST "https://apivisionsampling.innovatemr.com/api/v2/pega/feasibility"
  --header "Content-Type: application/json"
  --header "x-access-token: {token}",
  --data '{"N": 1000,"LengthOfInterview": 8,"Conditions": {"ETHNICITY": [1],"PARENTAL_STATUS": [1],"AGE": ["26-35", "51-60"]},IncidenceRate": 50,"DaysInField":1,"Languages": "ENGLISH","Country":"United States"}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/feasibility');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
  "N": 1000,
  "LengthOfInterview": 8,
  "Conditions": {
    "ETHNICITY": [1],
    "PARENTAL_STATUS": [1],
    "AGE": ["26-35", "51-60"]
  },
  "IncidenceRate": 50,
  "DaysInField":1,
  "Languages": "ENGLISH",
  "Country":"United States"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/feasibility',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' },
  body: 
   { N: 1000,
     LengthOfInterview: 8,
     Conditions: 
      { ETHNICITY: [ 1 ],
        PARENTAL_STATUS: [ 1 ],
        AGE: [ '26-35', '51-60' ] },
        IncidenceRate: 50,
        DaysInField: 1,
        Languages: "ENGLISH",
        Country: 'United States' },
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

This API is used to find estimate value with help of pricing and qualifications.

Example Response

{
    "apiStatus": "success",
    "feasibility": {
        "commonFeas": [
            {
                "days": 1,
                "estimate": 145
            },
            {
                "days": 14,
                "estimate": 481
            }
        ]
    }
}

Here are properties to send for feasibility model:

Property Type Required Remarks
Country String true Country Name. Example:“United States” Please check Country list for other country names
DaysInField Number true Number of days to put survey live for the world
IncidenceRate Number true 1 to 100
N Number true Number of Click/Completes you need into Quota
LengthOfInterview Number true Estimated length of survey in minutes. Range - 1 to 45
Languages String true Language Name. Example: “ENGLISH” Please check Language list for other Language names
Conditions JSONObject false It will have targets options conditions(all targets to add here should be added in targets first). Minimum 1 and maximum 3 targets can be added here. e.g: {“AGE”: [“18-35”], “GENDER”: [1, 2], “ZIPCODES”: [“23213”, “34543”]}

Questions Library

Get All Questions

Definition

GET https://<serverName>/api/v2/pega/questions/{CountryCode}/{Language}

Example Request

curl --request GET 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/pega/questions/US/ENGLISH' 
  --header 'Content-Type: application/json' 
  --header 'x-access-token: {token}'
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/questions/US/ENGLISH');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/questions/US/ENGLISH',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "Questions": [
        {
            "StandardTarget": 0,
            "Category": [
                {
                    "Primary": true,
                    "Id": 202,
                    "Name": "Test Category"
                }
            ],
            "QuestionType": "Multipunch",
            "Id": 7123,
            "QuestionKey": "TEST_CATEGORY_7123",
            "Options": [
                {
                    "OptionText": "Palau",
                    "Id": 4
                },
                {
                    "OptionText": "Nauru",
                    "Id": 3
                },
                {
                    "OptionText": "Tuvalu",
                    "Id": 2
                },
                {
                    "OptionText": "Vatican City",
                    "Id": 1
                }
            ],
            "PremiumPrice": 3.23,
            "QuestionText": "Which country has the lowest population?"
        }
    ]
}

The questions in this library can be used to add qualifications for groups(surveys).

Query Parameters

Property Type Required Description
Country Key String Yes Country Key (like US)
Language String No (Default will be ENGLISH) Language (like ENGLISH)

Countries list:

Country Name Country Code
Afghanistan AF
Albania AL
Algeria DZ
American Samoa AS
Andorra AD
Angola AO
Anguilla AI
Antarctica AQ
Antigua and Barbuda AG
Argentina AR
Armenia AM
Aruba AW
Australia AU
Austria AT
Azerbaijan AZ
Bahamas BS
Bahrain BH
Bangladesh BD
Barbados BB
Belarus BY
Belgium BE
Belize BZ
Benin BJ
Bermuda BM
Bhutan BT
Bolivia BO
Bosnia and Herzegovina BA
Botswana BW
Bouvet Island BV
Brazil BR
British Indian Ocean Territory IO
Brunei Darussalam BN
Bulgaria BG
Burkina Faso BF
Burundi BI
Cambodia KH
Cameroon CM
Canada CA
Cape Verde CV
Cayman Islands KY
Central African Republic CF
Christmas Island CX
Cocos (Keeling) Islands CC
Comoros KM
Chad TD
Chile CL
China CN
Colombia CO
Congo CG
Cook Islands CK
Costa Rica CR
Croatia HR
Cuba CU
Cyprus CY
Czech Republic CZ
Democratic People’s Republic of Korea CD
Denmark DK
Djibouti DJ
Dominica DM
Dominican Republic DO
Ecuador EC
Egypt EG
El Salvador SV
Equatorial Guinea GQ
Eritrea ER
Estonia EE
Ethiopia ET
Falkland Islands (Malvinas) No 71 FK
Faroe Islands FO
Federated States of Micronesia FM
Fiji FJ
Finland FI
France FR
French Guiana GF
French Polynesia PF
French Southern Territories TF
Gabon GA
Gambia GM
Georgia GE
Germany DE
Ghana GH
Gibraltar GI
Greece GR
Greenland GL
Grenada GD
Guadeloupe GP
Guam GU
Guatemala GT
Guernsey GG
Guinea GN
Guinea-Bissau GW
Guyana GY
Haiti HT
Heard Island and McDonald Islands HM
Holy See (Vatican City State) VA
Honduras HN
Hong Kong HK
Hungary HU
Iceland IS
India IN
Indonesia ID
Iraq IQ
Ireland IE
Islamic Republic of Iran IR
Isle of Man IM
Israel IL
Italy IT
Ivory Coast IC
Jamaica JM
Japan JP
Jersey JE
Jordan JO
Kazakhstan KZ
Kenya KE
Kiribati KI
Kuwait KW
Kyrgyzstan KG
Lao People’s Democratic Republic LA
Latvia LV
Lebanon LB
Lesotho LS
Liberia LR
Libyan Arab Jamahiriya LY
Liechtenstein LI
Lithuania LT
Luxembourg LU
Macao MO
Madagascar MG
Malawi MW
Malaysia MY
Maldives MV
Mali ML
Malta MT
Marshall Islands MH
Martinique MQ
Mauritania MR
Mauritius MU
Mayotte YT
Mexico MX
Moldova MD
Monaco MC
Mongolia MN
Montenegro ME
Montserrat MS
Morocco MA
Mozambique MZ
Myanmar MM
Namibia NA
Nauru NR
Nepal NP
Netherlands NL
Netherlands Antilles NL
New Caledonia NC
New Zealand NZ
Nicaragua NI
Niger NE
Nigeria NG
Niue NU
Norfolk Island NF
Northern Mariana Islands MP
Norway NO
Oman OM
Pakistan PK
Palau PW
Palestinian Territory, Occupied PS
Panama PA
Papua New Guinea PG
Paraguay PY
Peru PE
Philippines PH
Pitcairn PN
Poland PL
Portugal PT
Puerto Rico PR
Qatar QA
Republic of Korea KR
Republic of Macedonia MK
Reunion RE
Romania RO
Russian Federation RU
Rwanda RW
Saint Helena SH
Saint Kitts and Nevis KN
Saint Lucia LC
Saint Pierre and Miquelon PM
Saint Vincent and the Grenadines VC
Samoa WS
San Marino SM
Sao Tome and Principe ST
Saudi Arabia SA
Senegal SN
Serbia RS
Serbia and Montenegro SW
Seychelles SC
Sierra Leone SL
Singapore SG
Slovakia SK
Slovenia SI
Solomon Islands SB
Somalia SO
South Africa ZA
South Georgia and the South Sandwich Islands GS
Spain ES
Sri Lanka LK
Sudan SD
Suriname SR
Svalbard and Jan Mayen SJ
Swaziland SZ
Sweden SE
Switzerland CH
Syrian Arab Republic SY
Taiwan TW
Tajikistan TJ
Thailand TH
The Democratic Republic of the Congo CO
Timor-Leste TL
Togo TG
Tokelau TK
Tonga TO
Trinidad and Tobago TT
Tunisia TN
Turkey TR
Turkmenistan TM
Turks and Caicos Islands TC
Tuvalu TV
Uganda UG
Ukraine UA
United Arab Emirates AE
United Kingdom GB
United Republic of Tanzania TZ
United States US
United States Minor Outlying Islands UM
Uruguay UY
Uzbekistan UZ
Vanuatu VU
Venezuela VE
VietNam VN
Virgin Islands, British VG
Virgin Islands, U.S VI
Wallis and Futuna WF
Western Sahara EH
Yemen YE
Zambia ZM
Zimbabwe ZW

Language list:

Language Name
ENGLISH
FRENCH
ITALIAN
HINDI
HEBREW
HUNGARIAN
GREEK
DUTCH
ARABIC
CHINESE
GERMAN
BULGARIAN
DANISH
BELGIAN
CZECH
CROATIAN
KOREAN
VIETNAMESE
SWAHILI
SERBIAN
CHINESE SIMPLIFIED
SPANISH
FLEMISH
RUSSIAN
SLOVENE
SLOVAK
ZULU
LITHUANIAN
ESTONIAN
LATVIAN
BAHASA MELAYU
UKRAINIAN
TAGALOG
THAI
MALAY
INDONESIAN
LUXEMBOURG
ROMANIAN
ICELANDIC
TURKISH
FINNISH
NORWEGIAN
SWEDISH
PORTUGUESE
POLISH
JAPANESE
URDU

Get Job Stats

Definition

GET https://<serverName>/api/v2/pega/job/stats/{JobId}

Example Request

curl --location --request GET "https://apivisionsampling.innovatemr.com/api/v2/pega/job/stats/8483"
  --header "x-access-token: {token}"
  --header "Content-Type: application/json"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/job/stats/8483');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/job/stats/8483',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "Statistic": {
        "Visits": 4,
        "Completes": 4,
        "Termination": 0,
        "OverQuota": 0,
        "QualityTermination": 0,
        "StartSurveyDNC": 7,
        "SurveyStart": 11,
        "PreSurveyOverQuota": 0,
        "PreSurveyQualityTermination": 1,
        "PreSurveyDNC": 0,
        "PreSurveyTermination": 1,
        "Cost": "9.75",
        "isVerified": false
    }
}

This API is used to get job stats.

Query Parameters

Property Type Required Remarks
JobId Number true Job Number

Get Group Stats

Definition

GET https://<serverName>/api/v2/pega/group/stats/{JobId}/{GroupId}

Example Request

curl --location --request GET "https://apivisionsampling.innovatemr.com/api/v2/pega/group/stats/8524/19221"
  --header "x-access-token: {token}"
  --header "Content-Type: application/json"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/group/stats/8524/19221');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/group/stats/8524/19221',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "Statistic": {
        "Visits": 0,
        "Completes": 4,
        "Termination": 8,
        "OverQuota": 2,
        "QualityTermination": 0,
        "StartSurveyDNC": 0,
        "SurveyStart": 14,
        "PreSurveyOverQuota": 0,
        "PreSurveyQualityTermination": 0,
        "PreSurveyDNC": 0,
        "PreSurveyTermination": 0,
        "Cost": "17.75",
        "isVerified": false
    }
}

This API is used to get group stats.

Query Parameters

Property Type Required Remarks
JobId Number true Job Number
GroupId Number true Group Number

Get Group Quota Stats

Definition

GET https://<serverName>/api/v2/pega/quotas/stats/{GroupId}

Example Request

curl --location --request GET "https://apivisionsampling.innovatemr.com/api/v2/pega/quotas/stats/23593"
  --header "x-access-token: {token}"
  --header "Content-Type: application/json"
<?php

$request = new HttpRequest();
$request->setUrl('https://apivisionsampling.innovatemr.com/api/v2/pega/quotas/stats/23593');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'GET',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/pega/quotas/stats/23593',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE',
     'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "Statistic": [
        {
            "Visits": 0,
            "Completes": 0,
            "Termination": 0,
            "OverQuota": 0,
            "QualityTermination": 0,
            "GroupName": "Group A",
            "QuotaId": 16819
        }
    ]
}

This API is used to get group quotas stats.

Query Parameters

Property Type Required Remarks
GroupId Number true Group Number

Buyer API - FAQ

The buyer API provides a quick and simple way to connect your system to Innovate to quickly and efficiently get survey respondents to your surveys. Simply post your sampling request with targeting criteria and Innovate will invite its proprietary panel of survey respondents to take your survey.

You connect your system to ours and we show our panelists your survey opportunity based on various targeted attributes, including demographic and geographic. This allows you as a buyer to get access to Innovate’s panelists, with real time statistics for each survey

Your system will be able to reach our respondents that fit for your target and then you will get our respondents to your surveys.

Innovate will send invites according to your target.

This is the only buyer API that gives direct access to Innovate’s proprietary panel.  There are no limitations on what you can post, and you can gain access to our traffic in an effective and efficient manner.

This depends on your sampling needs, targeting requirements and geographical needs. Pricing is primarily based on the length of your interview, the post-targeting incidence of your research project, as well as other demo/geo targeting requirements you define.

We are quickly growing our global panel base and adding new panelists daily, so all markets can and will be considered for integration. Our goal is to expand our inventory globally to as many markets as possible.

All the technical information regarding the integration can be found in our developer portal (http://developer.innovatemr.com/#buyer-api/). Our tech team will also be available to assist during the integration process from start to finish.

HTTP Status Codes

Innovate uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error caused by the information provided (i.e., a required parameter was omitted, a method was not found, etc.), and codes in the 5xx range indicate an error with Fulcrum’s servers (these are rare).

Status Code Meaning
200 OK – The request has succeeded . Request include GET and POST
201 Created – The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.
202 Accepted – The request has succeeded and has been added to the queue, but the resource has not yet been created. This is typically the response sent after PUT and POST requests.
204 No Content – There is no content to send for this request. This is common for DELETE requests.
400 Bad Request – This response means that server could not understand the request due to invalid syntax.
401 Unauthorized – Authentication is needed to get requested response. This is similar to 403, but in this case, authentication is possible.
403 Forbidden – Client does not have access rights to the content so server is refusing to give proper response.
404 Not Found – Server cannot find the requested resource.
405 Method Not Allowed – The request method is known by the server but has been disabled and cannot be used. Double check your method type (i.e. GET, POST, PUT, DELETE)
406 Not Acceptable – You requested a format that isn’t json
410 Gone – The kitten requested has been removed from our servers
418 I’m a teapot
429 Too Many Requests – You’re requesting too many kittens! Slow down!
500 Internal Server Error – We had a problem with our server. Try again later.
503 Service Unavailable – We’re temporarially offline for maintanance. Please try again later.
504 Gateway Timeout – This error response is given when the server is acting as a gateway and cannot get a response in time.

Text Analyzer API

The InnovateMR Text Analyzer is a complex, patent-pending engine which dynamically evaluates open-end responses. The program checks for commonly observed issues found in open-end client data like gibberish, profanity, bot scripting, spelling errors, copy/paste, timing/genuine human behavior and contextuality. The Text Analyzer API will analyze the answer text and send a response to accept or flag the survey respondent based on your customized settings.

Environments

Sandbox Endpoint

https://stagediyqualityapi.innovatemr.com

Production Endpoint

 https://apivisionsampling.innovatemr.com

Innovate has two environments—production and sandbox. The sandbox environment is used during development and for testing. There are no live respondents in this environment (although you may enter as a respondent). It is important to note that lookup libraries in the sandbox are different from those in production. Production should only be used once an application has been thoroughly tested in sandbox.

Running in Postman

Postman Image InnovateMR Programmatic Sampling API Reference for Buyers and Sellers The entire Innovate API collection can be easily imported into Postman, by clicking the button below:

Run in Postman

Postman is a free application that allows you to execute test calls in an intuitive interface. When making test calls, you should use the development environment.

API Details

Definition

POST https://<serverName>/api/v2/textAnalyzer/getTAResponse

Example Request

curl --request POST 
  --url 'https://apivisionsampling.innovatemr.com/api/v2/textAnalyzer/getTAResponse
  --header 'Content-Type: application/json' 
  --header 'x-access-token: {token}' 
  --data '{"jobNumber": 10000, "jobName": "example job", "templateId":1, "answer": "Eat Less and Read more", "languageCode": "en","questionId": "8202", "timeDifference": 80, "supplier": "testSupplier"}'
<?php

$request = new HttpRequest();
$request->setUrl("https://apivisionsampling.innovatemr.com/api/v2/textAnalyzer/getTAResponse");
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'x-access-token' => 'YOUR_X-ACCESS-TOKEN_HERE',
  'Content-Type' => 'application/json'
));

$request->setBody('{"jobNumber": 10000, "jobName": "example job", "templateId": 1, "answer": "Eat Less and Read more", "languageCode": "en", "questionId": "8202", "timeDifference": 80, "supplier": "testSupplier"}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://apivisionsampling.innovatemr.com/api/v2/textAnalyzer/getTAResponse',
  headers: 
   { 'x-access-token': 'YOUR_X-ACCESS-TOKEN_HERE' 
     'Content-Type': 'application/json' },
  body: {jobNumber: 10000, jobName: 'example job', templateId:1, answer: 'Eat Less and Read more', languageCode: 'en', questionId: "8202", timeDifference:80, supplier: 'testSupplier'},
  json: true };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Example Response

{
    "apiStatus": "success",
    "msg": "OE processed successfully",
    "response": {
        "_id": "5f64a1b8488d7a7e95cb367c",
        "result": "accepted",
        "OEResponse": {
            "answer_chars": "22",
            "n_words": "5",
            "profanity_score": "0",
            "cp_score_1": "0.06",
            "cp_score_2": "0.68",
            "spelling": "0",
            "n_sentences": "1",
            "mn_sentence_length": "5",
            "past_oe": "1",
            "exec_time": "0.088",
            "n_past_oes": "7",
            "is_url": "0",
            "oe_rate": "1",
            "contextuality": "1",
            "error_message": "NA",
            "client": "44",
            "email": "0",
            "SSN": "0",
            "IPv4": "0",
            "date": "0",
            "visa": "0",
            "license": "0",
            "ZIP": "0",
            "address": "0",
            "fname": "0",
            "lname": "0",
            "study": "10000"
        }
    }
}

Here are properties to send for text analyzer Model:

Property Type Required Remarks
jobNumber Number true This is the unique number for API transaction
jobName String false This is the name for API transaction
questionId String true Question Id/Custom question text of the answer text
answer String true Answer text
supplier String false Name of Supplier eg: “Test Supplier”
languageCode String true Language code e.g : en(for English)
templateId Number true Id of template uploaded to which OE response needs to be compared
timeDifference Number false Time Difference

API Response Parameters

Text Analyzer API response

{
    "apiStatus": "success",
    "msg": "OE processed successfully",
    "response": {
        "_id": "5f64a1b8488d7a7e95cb367c",
        "result": "accepted",
        "OEResponse": {
            "answer_chars": "22",
            "n_words": "5",
            "profanity_score": "0",
            "cp_score_1": "0.06",
            "cp_score_2": "0.68",
            "spelling": "0",
            "n_sentences": "1",
            "mn_sentence_length": "5",
            "past_oe": "1",
            "exec_time": "0.088",
            "n_past_oes": "7",
            "is_url": "0",
            "oe_rate": "1",
            "contextuality": "1",
            "error_message": "NA",
            "client": "44",
            "email": "0",
            "SSN": "0",
            "IPv4": "0",
            "date": "0",
            "visa": "0",
            "license": "0",
            "ZIP": "0",
            "address": "0",
            "fname": "0",
            "lname": "0",
            "study": "10000"
        }
    }
}

Here are the definitions of the Text Analyzer API response parameters

Response Parameter Definition
answer_chars Number of characters in the response
n_words Number of words in the response
profanity_score 1= Profanity present based on settings; 0=No profanity
cp_score_1 Typing speed in words/sec.  Values > 1.5 indicate possible copy and pasting from another screen
cp_score_2 Looking for copy and paste from the question.  Values in the range 0 - 0.2 indicate a complete or partial copy of the question into the response
spelling Values in the range 0 - 0.33 indicate acceptable spelling. If response is in whitelist set to 0
n_sentences Number of sentences in the response
mn_sentence_length Average sentence length. The average number of words is calculated by total word(s)/total sentence(s). A sentence is considered any word or set of words followed by a period
past_oe 0 indicates the same response has occurred before as a response in the same study.  If response is in whitelist set to 0.
exec_time Execution time in seconds
n_past_oes Number of past OEs search for dupes to particular client and study
oe_rate Number of OE’s processed in last minute
is_url If response contains a URL = 1, otherwise 0
contextuality Estimates the contextuality of the response in terms of the question.  Values > 0.1 are satisfactory. If response is in whitelist set to 1
client Company Id 
email If the response contains an email address = 1, otherwise 0
SSN If the response contains an SSN = 1, otherwise 0
IPv4 If the response contains an IP address = 1, otherwise 0
date If the response contains a date = 1, otherwise 0
visa If the response contains a visa = 1, otherwise 0
license If the response contains a license = 1, otherwise 0
ZIP If the response contains a zip = 1, otherwise 0
address If the response contains physical address in the US = 1, otherwise 0
fname If the response contains a first name = 1, otherwise 0
lname If the response contains a last name = 1, otherwise 0
study If a job number is passed, it will show here

Text Analyzer API - FAQ

The Text Analyzer API provides a quick and simple way to dynamically evaluate open-end responses. The program checks for commonly observed issues found in open-end client data like gibberish, profanity, bot scripting, spelling errors, copy/paste, timing/genuine human behavior and contextuality. The Text Analyzer API will analyze the answer text and send a response to accept or flag the survey respondent based on your customized settings.

Using your customized settings templates, the Text Analyzer will analyze your survey respondents open end responses in real time to provide either an acceptance or flagged output. This allows you as a Text Analyzer API partner to get access to Innovate’s Text Analyzer engine, with real time analysis and data output on your survey takers open end responses.

Your system will be able to reach our Text Analyzer to check the quality of open-end responses.

This is the only open end API that gives you transparency and control over settings with customization. There are 70+ questions available to access contextuality and the ability to customize your own to collect data against.

Currently the Text Analyzer is available in English, French, Spanish and German. We are growing our reach into China and other APAC countries. Our goal is to expand our inventory globally to as many markets as possible.

All the technical information regarding the integration can be found in our developer portal (http://developer.innovatemr.com/#text-analyzer-api/). Our tech team will also be available to assist during the integration process from start to finish.

Yes! Using the Text Analyzer API, the InnovateMR Insights Platform will store when you call the Text Analyzer and enable you to view and download your data. You can login to your Platform account where you can to download reports, view charts, access our question library and more. If you need a login, you can create one at InnovateMR.com or contact platformsupport@innovatemr.com to get help creating a free account.