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 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
- WHAT IS THE INNOVATE SURVEY SUPPLY API?
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.
- HOW DOES THE INNOVATE API WORK?
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.
- IN SIMPLER WORDS?
Your system will be able to analyze the projects fit for your target groups and then you will send your traffic to our projects.
- WHO WILL SEND THE INVITES?
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.
- HOW IS IT DIFFERENT FROM OTHER SUPPLIER APIs?
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.
- WHAT INCENTIVES DO MY PANELISTS GET?
You are the one who decides the incentives for your panelists.
- HOW LARGE IS YOUR INVENTORY?
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.
- WHAT’S IN IT FOR ME?
There are three pricing methods we can accommodate: flat rate, grid and revenue share. We’re open to discuss each and every option.
- HOW MUCH POTENTIAL REVENUE CAN BE GENERATED?
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.
- WHICH MARKETS HAVE THE STRONGEST REVENUE POTENTIAL?
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.
- HOW WILL THIS HELP MY BUSINESS GROW?
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.
- WHAT DOES IT IMPLY FROM A TECHNICAL POINT OF VIEW?
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 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 | ||
|
|
|
|
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 | ||
|
|
|
|
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 | ||
|
|
|
|
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 | ||
|
|
|
|
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
- WHAT IS THE INNOVATE BUYER API?
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.
- HOW DOES THE INNOVATE BUYER API WORK?
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
- IN SIMPLER WORDS?
Your system will be able to reach our respondents that fit for your target and then you will get our respondents to your surveys.
- WHO WILL SEND THE INVITES?
Innovate will send invites according to your target.
- HOW IS IT DIFFERENT FROM OTHER BUYER APIs?
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.
- HOW MUCH DOES IT COST?
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.
- WHICH MARKETS DO YOU HAVE AVAILABILITY IN?
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.
- WHAT DOES IT IMPLY FROM A TECHNICAL POINT OF VIEW?
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 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 |
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
- WHAT IS THE INNOVATEMR TEXT ANALYZER API?
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.
- HOW DOES THE INNOVATEMR TEXT ANALYZER API WORK?
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.
- IN SIMPLER WORDS?
Your system will be able to reach our Text Analyzer to check the quality of open-end responses.
- HOW IS IT DIFFERENT FROM OTHER OPEN END APIs?
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.
- WHICH MARKETS DO YOU HAVE AVAILABILITY IN?
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.
- WHAT DOES IT IMPLY FROM A TECHNICAL POINT OF VIEW?
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.
- IS THERE A REPORTING DASHBOARD?
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.