API stands for "application programming interface." This Wikipedia article covers APIs in more detail, but it can be helpful to think of the API as a way for different apps to talk to one another. For many users, the main interaction with the API will be through API access key, a way for other apps to access your account without you giving out your password.
The QuestionPro API is organized around REST. We use built-in HTTP features, like HTTP authentication and HTTP verbs, to allow you to interact securely with our API from a client-side web application. JSON will be returned in all responses from the API, including errors.
Note: Our API supports maximum 100 responses per API call.
http://api.questionpro.com/a/api
Team Edition | Enterprise | |
Responses per call (surveyResponses) | 100 | 100 |
Email invites sent per call (sendSurvey) | 100 | 100 |
Email Uploads per call (createEmailGroup) | 100 | 100 |
Free API calls | 100 | 500 |
Cost per call (after free calls) | $0.1 | $0.1 |
You authenticate to the QuestionPro API by providing your API key in the request. You can get your API key from your account:
Login to QuestionPro and navigate to Integration » Developer API
Click on 'Get API Key' button and the key will be generated.
In order to make the API calls you'll also need to provide the survey ID for the required survey.
api.setAccessKey("xxxxx");
api.setSurveyID(xxxxx);
public void setSurveyID(long val){surveyID=val;}
public void setAccessKey(String val){accessKey=val;}
public long getSurveyID(){return surveyID;}
public String getAccessKey(){return accessKey;}
Method: questionpro.survey.responseCount
This API call will return total survey response count based on the filtering criteria.
Name | Value | Required |
id | Survey ID | ✔ |
resultMode |
Assign following values to resultMode to get different responses
|
✔ |
startDate* | Start Date for response time range - Date Format is MM/DD/YYYY | ✕ |
endDate* | End Date for response time range - Date Format is MM/DD/YYYY | ✕ |
*Either both Start Date and End Date have to be entered else neither
http://api.questionpro.com/a/api/questionpro.survey.responseCount
public String getSurveyResponseCountUrl() {
return "http://api.questionpro.com/a/api/questionpro.survey.responseCount?accessKey=" +
getAccessKey();
}
public long getResponseCount() throws Exception {
String path = getSurveyResponseCountUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
String data = "{"id":"" + getSurveyID() + "","resultMode":"0",
"startDate":"01/14/2013"," +
""endDate":"01/15/2013"}";
StringEntity se = new StringEntity(data);
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
String json = resp.toString();
JSONObject obj = new JSONObject(json);
obj = obj.getJSONObject("response");
System.out.println(" Survey : " + obj.opt("name") +
" Status : " + obj.opt("status") +
" Overall Viewed : " + obj.optLong("overallViewedCount") +
" Overall Started : " + obj.optLong("overallStartedCount") +
" Overall Complete : " + obj.optLong("overallCompleteCount") +
" Started Count: " + obj.optLong("startedCount") +
" Complete Count : " + obj.optLong("completeCount"));
return obj.getLong("overallStartedCount");
}
{ "response" : { "completeCount" : 6,
"id" : 3896108,
"name" : "Sample Survey",
"overallCompleteCount" : 6,
"overallStartedCount" : 6,
"overallTerminatedCount" : 0,
"overallViewedCount" : 7,
"partialCount" : 6,
"startedCount" : 6,
"status" : "Active",
"terminatedCount" : 0
},
"status" : { "id" : 200,
"message" : "OK",
"method" : "questionpro.survey.responseCount",
"serverUTC" : 1403250725110,
"url" : "/a/api/questionpro.survey.responseCount"
}
}
Method: questionpro.survey.surveyResponses
This API call is used to retrieve survey responses for a survey based on the filtering criteria.
Name | Value | Required |
id | Survey ID | ✔ |
resultMode |
Assign following values to resultMode to get different responses
|
✔ |
startDate* | Start Date for response time range - Date Format is MM/DD/YYYY | ✕ |
endDate* | End Date for response time range - Date Format is MM/DD/YYYY | ✕ |
startingResponseCounter | This parameter is used to get responses in a particular range sequentially. If this parameter is not specified the first 100 responses will be returned, If '2' is specified, responses in the range 201-300 will be returned and so on. | ✕ |
*Either both Start Date and End Date have to be entered else neither
http://api.questionpro.com/a/api/questionpro.survey.surveyResponses
public String getSurveyResponseUrl() {
return "http://api.questionpro.com/a/api/questionpro.survey.surveyResponse?accessKey=" +
getAccessKey();
}
public String getResponses(int startingResponseCounter) throws Exception {
String path = getSurveyResponsesUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
String data = "{"id":"" + getSurveyID() + "","resultMode":"0","startDate":"01/01/2013","
+
""endDate":"07/24/2013","startingResponseCounter":""+ startingResponseCounter +""}";
StringEntity se = new StringEntity(data);
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return resp.toString();
}
{ "response" : { "id" : 3896108,
"name" : "Sample Survey",
"responses" : [ { "country" : "IN",
"duplicate" : false,
"externalReference" : "test_response",
"id" : 23749765,
"ipAddress" : "115.248.168.125",
"region" : "16",
"responseSet" : [ { "questionCode" : "Q1",
"questionDescription" : " ",
"questionID" : 36860852,
"questionText" : "How often do you conduct surveys?",
"values" : [ { "answerText" : "Weekly",
"id" : "181377002",
"value" : { "scale" : "1" }
} ]
} ],
"responseStatus" : "Yes",
"timeTaken" : 2,
"timestamp" : "20 Jun, 2014 11:50:05 AM MSD"
},
{ "country" : "IN",
"duplicate" : false,
"externalReference" : "test_response",
"id" : 23749766,
"ipAddress" : "115.248.168.125",
"region" : "16",
"responseSet" : [ { "questionCode" : "Q1",
"questionDescription" : " ",
"questionID" : 36860852,
"questionText" : "How often do you conduct surveys?",
"values" : [ { "answerText" : "Quarterly",
"id" : "181377004",
"value" : { "scale" : "3" }
} ]
} ],
"responseStatus" : "Yes",
"timeTaken" : 1,
"timestamp" : "20 Jun, 2014 11:50:09 AM MSD"
}
],
"status" : "Active",
"surveyStatistics" : { "completedCount" : 6,
"startedCount" : 6,
"viewedCount" : 0
}
},
"status" : { "id" : 200,
"message" : "OK",
"method" : "questionpro.survey.surveyResponses",
"serverUTC" : 1403258290868,
"url" : "/a/api/questionpro.survey.surveyResponses"
}
}
Method: questionpro.survey.sendSurveyMetaData
This API call will return information related to email groups and templates for the user. This information can be used along with sendSurvey API call
Name | Value | Required |
id | Survey ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.sendSurveyMetaData
public String getSendSurveyMetaDataUrl() {
return
"http://api.questionpro.com/a/api/questionpro.survey.sendSurveyMetaData?accessKey=" +
getAccessKey();
}
public JSONObject getSendSurveyMetaData() throws Exception {
String path = getSendSurveyMetaDataUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
//String data = "{"surveyID":"" + getSurveyID() + ""}";
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
JSONObject meta = new JSONObject( resp.toString());
JSONObject response = meta.getJSONObject("response");
JSONArray emailGroups = response.getJSONArray("emailGroups");
JSONArray templates = response.getJSONArray("templates");
for (int i=0; i < emailGroups.length();i++) {
JSONObject jsonEg = emailGroups.getJSONObject(i);
System.out.println("Email Group ID : " + jsonEg.getLong("emailGroupID") + " Name : " +
jsonEg.getString("emailGroupName"));
}
for (int i=0; i < templates.length();i++) {
JSONObject jsonSc = templates.getJSONObject(i);
System.out.println("Template ID : " + jsonSc.getLong("templateID") + " Subject : " +
jsonSc.getString("templateSubject"));
}
return meta;
}
{ "response" : { "emailGroups" : [ { "emailGroupID" : 664235,
"emailGroupName" : "Default List- 1"
},
{ "emailGroupID" : 664234,
"emailGroupName" : "QPTest"
}
],
"templates" : [ { "templateID" : 87278,
"templateSubject" : "Template0Survey Invitation template 2"
} ]
},
"status" : { "id" : 200,
"message" : "OK",
"method" : "questionpro.survey.sendSurveyMetaData",
"serverUTC" : 1378809379946,
"url" : "/a/api/questionpro.survey.sendSurveyMetaData"
}
}
Method: questionpro.survey.sendSurvey
This API is used to send survey invitations to individual respondents as well as email lists.
Name | Value | Required |
surveyID | Survey ID | ✔ |
mode |
|
✔ |
emailGroupID | ID for the email list to which you want to send invites. | Required with mode 1 and mode 3 |
templateID | Email template to be used. | Required with mode 1 and mode 2 |
emails | Email addresses of the respondents (JSONArray). | Required with mode 2 and mode 4 |
template | Custom email template (JSONArray with attributes 'body' & 'subject'). | Required with mode 3 and mode 4 |
http://api.questionpro.com/a/api/questionpro.survey.sendSurvey
public String getSendSurveyUrl() {
return "http://api.questionpro.com/a/api/questionpro.survey.sendSurvey?accessKey=" +
getAccessKey();
}
public JSONObject getSendSurvey1() throws Exception {
String path = getSendSurveyUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
data.put("emailGroupID", 1234);
data.put("templateID", 5678);
data.put("mode", 1);
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
public JSONObject getSendSurvey2() throws Exception {
String path = getSendSurveyUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
JSONArray emails = new JSONArray();
emails.put("[email protected]");
emails.put("[email protected]");
data.put("surveyID", getSurveyID());
data.put("emails", emails);
data.put("templateID", 5678);
data.put("mode", 2);
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
public JSONObject getSendSurvey3() throws Exception {
String path = getSendSurveyUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
JSONObject template = new JSONObject();
template.put("body", "Please take the survey :
{ "response" : { "result" : "Message successful." },
"status" : { "id" : 200,
"message" : "OK",
"method" : "questionpro.survey.sendSurvey",
"serverUTC" : 1378810004358,
"url" : "/a/api/questionpro.survey.sendSurvey"
}
}
Method: questionpro.survey.emailBatchStatistics
This API call can be used to get the send survey history for a specific survey.
Name | Value | Required |
surveyID | Survey ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.emailBatchStatistics
public String getEmailBatchStatisticsURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.emailBatchStatistics?accessKey="
+ getAccessKey();
}
public JSONObject getEmailBatchStatistics() throws Exception {
String path = deleteSurveyURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"emailBatches": [
{
"emailGroup": "Default List-1",
"viewed": 0,
"completed": 0,
"batchID": 1499762,
"participationRate": "0%",
"batchType": "Normal",
"participationPending": 2,
"timestamp": "02/08/2016 16:02:53",
"initialSent": 2,
"status": "Completed Successfully"
},
{
"emailGroup": "test",
"viewed": 0,
"completed": 0,
"batchID": 945908,
"participationRate": "0%",
"batchType": "Normal",
"participationPending": 3,
"timestamp": "18/04/2013 11:35:38",
"initialSent": 3,
"status": "Completed Successfully"
}
]
},
"status": {
"method": "questionpro.survey.emailBatchStatistics",
"serverUTC": 1470390987145,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.emailBatchStatistics"
}
}
Method: questionpro.survey.sendReminder
This API call is used to send reminders to previously sent email batches
Name | Value | Required |
surveyID | Survey ID | ✔ |
emailGroupID | ID for the email list to which you want to send reminders. | ✔ |
templateID | Email template to be used. | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.sendReminder
public String getSendReminderUrl() {
return "http://api.questionpro.com/a/api/questionpro.survey.sendReminder?accessKey=" +
getAccessKey();
}
public JSONObject getSendReminder() throws Exception {
String path = getSendReminderUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
data.put("emailGroupID", 1234);
data.put("templateID", 5678);
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{ "response" : { "result" : "Message successful." },
"status" : { "id" : 200,
"message" : "OK",
"method" : "questionpro.survey.sendSurvey",
"serverUTC" : 1378810004358,
"url" : "/a/api/questionpro.survey.sendSurvey"
}
}
Method: questionpro.survey.createUser
You can create user accounts using this API call. Please note that you will require a global access key to make this call.
Name | Value | Required |
emailAddress | Login email address for the new user |
http://api.questionpro.com/a/api/questionpro.survey.createUser
public String getSurveyResponseCountUrl() {
return "http://api.questionpro.com/a/api/questionpro.survey.createUser?accessKey=" +
getGlobalAccessKey();
}
public long getResponseCount() throws Exception {
String path = getSurveyResponseCountUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
String data = "{\"emailAddress\":\"[email protected]\"}";
StringEntity se = new StringEntity(data);
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return resp;
}
{
"response":{
"emailAddress":"[email protected]",
"password":"kwnde",
"success":1
},
"status":{
"method":"questionpro.survey.createUser",
"serverUTC":1412076126669,
"id":200,
"message":"OK",
"url":"/a/api/questionpro.survey.createUser"
}
}
Method: questionpro.survey.createEmailGroup
This API call can be used to create email lists for a specific survey.
Name | Value | Required |
surveyID | Survey ID | |
Emails |
Email addresses with custom variables (JSON Array)
|
http://api.questionpro.com/a/api/questionpro.survey.createEmailGroup
public String getCreateEmailGroupURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.createEmailGroup?accessKey="
+ getAccessKey();
}
public JSONObject createEmailGroup() throws Exception {
String path = getCreateEmailGroupURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
JSONArray emails = new JSONArray();
emails.put("[email protected],custom1,custom2");
emails.put("[email protected],custom1,custom2");
data.put("surveyID", getSurveyID());
data.put("emails", emails);
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response":{
"result":{
"emailGroupID":847771
}
},
"status":{
"method":"questionpro.survey.createEmailGroup",
"serverUTC":1439556596337,
"id":200,
"message":"OK",
"url":"/a/api/questionpro.survey.createEmailGroup"
}
}
Method: questionpro.survey.getAllAccounts
You can get all user accounts using this API call. Please note that you will require a global access key to make this call.
Name | Value | Required |
userID | Logged in user id | ✕ |
*User ID is optional as it is extracted from access key and this call requires no data to be passed in request
http://api.questionpro.com/a/api/questionpro.survey.getAllAccounts
public String getAllAccountsUrl() {
return "http://api.questionpro.com/a/api/questionpro.survey.getAllAccounts?accessKey=" +
getGlobalAccessKey();
}
public JSONObject getAllAccounts() throws Exception {
String path = getAllAccountsUrl();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return resp;
}
{
"response": {
"accounts": [
{
"firstName": "xyz",
"lastName": "pqr",
"lastLogin": "0 days(s) ago",
"emailAddress": "[email protected]",
"phone": "(IN)9876543210",
"accountType": "Uber Admin User",
"creationDate": "Nov 17, 2010",
"userID": 1234
},
{
"lastLogin": "1288 days(s) ago",
"emailAddress": "[email protected]",
"phone": "",
"accountType": "Recurring Billing Deactivated",
"creationDate": "Feb 21, 2011",
"userID": 2345
},
{
"lastLogin": "N/A",
"emailAddress": "[email protected]",
"phone": "",
"accountType": "Dashboard",
"creationDate": "May 12, 2015",
"userID": 3456
},
]
},
"status": {
"method": "questionpro.survey.getAllAccounts",
"apiKey": "xxx",
"serverUTC": 1461565670022,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.getAllAccounts"
}
}
Method: questionpro.survey.getAccount
This API call can be used to get a specific account based on userID.
Name | Value | Required |
userID | User ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.getAccount
public String getAccountURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.getAccount?accessKey="
+ getAccessKey();
}
public JSONObject getAccount() throws Exception {
String path = getAccountURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("userID", getUserID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"account": {
"firstName": "xyz",
"lastName": "pqr",
"lastLogin": "0 days(s) ago",
"emailAddress": "[email protected]",
"phone": "(IN)9876543210",
"creationDate": "Nov 17, 2010",
"userID": 1234
}
},
"status": {
"method": "questionpro.survey.getAccount",
"apiKey": "xxxx",
"serverUTC": 1461565902891,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.getAccount"
}
}
Method: questionpro.survey.getAllSurveys
This API call can be used to get all surveys belonging to a specific user account.
http://api.questionpro.com/a/api/questionpro.survey.getAllSurveys
public String getSurveysURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.getAllSurveys?accessKey="
+ getAccessKey();
}
public JSONObject getSurveys() throws Exception {
String path = getSurveysURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response":{
"surveys:":[
{
"surveyID":4794284,
"surveyName":"QP (V1.24) CNC Assessment 2016-2017",
"surveyURL":"https://www.questionpro.com/a/TakeSurvey?id=4794284"
},
{
"surveyID":4794283,
"surveyName":"(Copy) (V1.24 TEST)",
"surveyURL":"https://www.questionpro.com/a/TakeSurvey?id=4794283"
}
"status":{
"method":"questionpro.survey.getAllSurveys",
"serverUTC":1472021401080,
"id":200,
"message":"OK",
"url":"/a/api/questionpro.survey.getAllSurveys"
}
}
Method: questionpro.survey.getSurvey
This API call can be used to get a specific survey.
Name | Value | Required |
id | Survey ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.getSurvey
public String getSurveyURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.getSurvey?accessKey="
+ getAccessKey();
}
public JSONObject getSurvey() throws Exception {
String path = getSurveyURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("id", getSurveyID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response":{
"connectURL":"http://www.questionpro.com/t/AIBHLZVEJR",
"subtitle":"Aug 05 2016",
"languageContent":[
],
"thankYouMessage":"Thank you for completing this survey.",
"surveyLanguages":[
{
"isDefault":true,
"name":"English"
}
],
"id":4782051,
"hasScoringLogic":false,
"title":"CSat Survey",
"sections":[
{
"numTasks":0,
"exactMinAnswers":0,
"orientation":2,
"code":"Q1",
"maxAnswers":0,
"questions":[
{
"orderNumber":0,
"answers":[
{
"score":0,
"isDefault":false,
"excludeRandomize":0,
"id":252834875,
"text":"Weekly"
},
{
"score":0,
"isDefault":false,
"excludeRandomize":0,
"id":252834876,
"text":"Monthly"
},
{
"score":0,
"isDefault":false,
"excludeRandomize":0,
"id":252834877,
"text":"Quarterly"
},
{
"score":0,
"isDefault":false,
"excludeRandomize":0,
"id":252834878,
"text":"Annually"
}
],
"id":48612631,
"text":"How often do you conduct surveys?"
}
],
"dynamicExplodeText":"",
"sectionID":1,
"type":"U",
"minAnswers":0,
"required":false,
"hasPageBreak":false,
"random":false,
"randomSection":false,
"subtype":"A"
}
],
"surveyTheme":{
"titleBarBGGrad":"#233954",
"buttonHoverBG":"#9e9f9f",
"surveyBGGrad":"#4f4f4f",
"titleBarTextColor":"#ffffff",
"buttonTextColor":"#3b3b3b"
},
"numericTitle":0
},
"status":{
"method":"questionpro.survey.getSurvey",
"serverUTC":1470390437541,
"id":200,
"message":"OK",
"url":"/a/api/questionpro.survey.getSurvey"
}
}
Method: questionpro.survey.deleteSurvey
This API call can be used to delete a specific survey.
Name | Value | Required |
surveyID | Survey ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.deleteSurvey
public String deleteSurveyURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.deleteSurvey?accessKey="
+ getAccessKey();
}
public JSONObject deleteSurvey() throws Exception {
String path = deleteSurveyURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"surveyID": 6110,
"success": 1,
"message": "Survey deleted successfully"
},
"status": {
"method": "questionpro.survey.deleteSurvey",
"apiKey": "xxxx",
"serverUTC": 1461566204206,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.deleteSurvey"
}
}
Method: questionpro.survey.getEmailLists
This API call can be used to get all email lists for a given survey. It returns global as well as survey-specific list.
Name | Value | Required |
surveyID | Survey ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.getEmailLists
public String getEmailListsURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.getEmailLists?accessKey="
+ getAccessKey();
}
public JSONObject getEmailLists() throws Exception {
String path = getEmailListsURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"emailLists": [
{
"surveyID": 0,
"name": "my global list",
"emailGroupID": 1300,
"email": "[email protected], [email protected], [email protected]",
"statistics": {
"unsubscribed": "3",
"total": 3,
"active": "0",
"pendinVerification": 0,
"bounced": "0"
}
},
{
"surveyID": 5395,
"name": "Email-List-test",
"emailGroupID": 1354,
"email": "[email protected]",
"statistics": {
"unsubscribed": "0",
"total": 1,
"active": "1",
"pendinVerification": 0,
"bounced": "0"
}
},
{
"surveyID": 5395,
"name": "Default List-1",
"emailGroupID": 1355,
"email": "",
"statistics": {
"unsubscribed": "0",
"total": 0,
"active": "0",
"pendinVerification": 0,
"bounced": "0"
}
}
]
},
"status": {
"method": "questionpro.survey.getEmailLists",
"apiKey": "xxxx",
"serverUTC": 1461566830499,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.getEmailLists"
}
}
Method: questionpro.survey.getEmailList
This API call can be used to get specific email list with requested email group id.
Name | Value | Required |
emailGroupID | Email Group ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.getEmailList
public String getEmailListURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.getEmailList?accessKey="
+ getAccessKey();
}
public JSONObject getEmailList() throws Exception {
String path = getEmailListURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("emailGroupID", getEmailGroupID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"emailList": {
"surveyID": 5395,
"name": "Email-List-test",
"emailGroupID": 1354,
"email": "[email protected]",
"statistics": {
"unsubscribed": "0",
"total": 1,
"active": "1",
"pendinVerification": 0,
"bounced": "0"
}
}
},
"status": {
"method": "questionpro.survey.getEmailList",
"apiKey": "xxxx",
"serverUTC": 1461567017465,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.getEmailList"
}
}
Method: questionpro.survey.deleteEmailList
This API call can be used to delete specific email list with requested email group id.
Name | Value | Required |
emailGroupID | Email Group ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.deleteEmailList
public String deleteEmailListURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.deleteEmailList?accessKey="
+ getAccessKey();
}
public JSONObject deleteEmailList() throws Exception {
String path = deleteEmailListURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("emailGroupID", getEmailGroupID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"success": 1,
"message": "Email Group deleted successfully",
"emailGroupID": 1354
},
"status": {
"method": "questionpro.survey.deleteEmailList",
"apiKey": "xxxx",
"serverUTC": 1461567218720,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.deleteEmailList"
}
}
Method: questionpro.survey.getEmailTemplates
This API call can be used to get all email templates for a given survey.
Name | Value | Required |
surveyID | Survey ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.getEmailTemplates
public String getEmailTemplatesURL(){
return
"http://api.questionpro.com/a/api/questionpro.survey.getEmailTemplates?accessKey="
+ getAccessKey();
}
public JSONObject getEmailTemplates() throws Exception {
String path = getEmailTemplatesURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
"response": {
"emailTemplates": [
{
"surveyID": 5395,
"templateID": 123,
"title": "Test-Survey-Specific",
"contentSummary": "Hello,\n\nWe would appreciate your feedback"
}
]
},
"status": {
"method": "questionpro.survey.getEmailTemplates",
"apiKey": "xxxx",
"serverUTC": 1461567860254,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.getEmailTemplates"
}
}
Method: questionpro.survey.getEmailTemplate
This API call can be used to get a specific email template with requested template id.
Name | Value | Required |
templateID | Template ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.getEmailTemplate
public String getEmailTemplateURL(){
return "http://api.questionpro.com/a/api/questionpro.survey.getEmailTemplate?accessKey="
+ getAccessKey();
}
public JSONObject getEmailTemplate() throws Exception {
String path = getEmailTemplateURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("templateID", getTemplateID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"emailTemplate": {
"surveyID": 5395,
"templateID": 123,
"title": "Test-Survey-Specific",
"type": "2",
"contentSummary": "Hello,\n\nWe would appreciate your feedback"
}
},
"status": {
"method": "questionpro.survey.getEmailTemplate",
"apiKey": "xxxx",
"serverUTC": 1461567927522,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.getEmailTemplate"
}
}
Method: questionpro.survey.deleteEmailTemplate
This API call can be used to delete a specific email template with requested template id.
Name | Value | Required |
templateID | Template ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.deleteEmailTemplate
public String deleteEmailTemplateURL(){
return
"http://api.questionpro.com/a/api/questionpro.survey.deleteEmailTemplate?accessKey="
+ getAccessKey();
}
public JSONObject deleteEmailTemplate() throws Exception {
String path = deleteEmailTemplateURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("templateID", getTemplateID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"success": 1,
"templateID": 123,
"message": "Email Template deleted successfully"
},
"status": {
"method": "questionpro.survey.deleteEmailTemplate",
"apiKey": "xxxx",
"serverUTC": 1461568015962,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.deleteEmailTemplate"
}
}
}
Method: questionpro.survey.surveyResponse
This API call can be used to get a specific survey response for a given survey.
Name | Value | Required |
surveyID | Survey ID | ✔ |
responseID | Response ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.surveyResponse
public String surveyResponseURL(){
return
"http://api.questionpro.com/a/api/questionpro.survey.surveyResponse?accessKey="
+ getAccessKey();
}
public JSONObject surveyResponse() throws Exception {
String path = surveyResponseURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
data.put("responseID", getResponseID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"surveyResponse": {
"externalReference": "test_response",
"timeTaken": 23,
"ipAddress": "127.0.0.1",
"UTCTimestamp": 13,
"id": 29245,
"duplicate": false,
"responseStatus": "Yes",
"responseSet": [
{
"questionDescription": " ",
"questionID": 17607029,
"questionCode": "Q1",
"values": [
{
"answerText": "Weekly",
"id": "135906",
"value": {
"scale": "1",
"dynamic": "[Weekly]\r\nabc "
}
}
],
"questionText": "How often do you conduct surveys?"
}
],
"timestamp": "24 Feb, 2016 05:00:13 PM IST"
},
"name": "emojiSurvey1",
"id": 123,
"status": "Active"
},
"status": {
"method": "questionpro.survey.surveyResponse",
"apiKey": "xxxx",
"serverUTC": 1461568638389,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.surveyResponse"
}
}
Method: questionpro.survey.deleteResponse
This API call can be used to get a specific survey response for a given survey.
Name | Value | Required |
surveyID | Survey ID | ✔ |
responseID | Response ID | ✔ |
http://api.questionpro.com/a/api/questionpro.survey.deleteResponse
public String deleteResponseURL(){
return
"http://api.questionpro.com/a/api/questionpro.survey.deleteResponse?accessKey="
+ getAccessKey();
}
public JSONObject deleteResponse() throws Exception {
String path = deleteResponseURL();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
JSONObject data = new JSONObject();
data.put("surveyID", getSurveyID());
data.put("responseID", getResponseID());
StringEntity se = new StringEntity(data.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
Object resp = httpclient.execute(httpost, responseHandler);
return new JSONObject(resp.toString());
}
{
"response": {
"surveyID": 123,
"success": 1,
"message": "Response deleted successfully",
"responseID": 4567
},
"status": {
"method": "questionpro.survey.deleteResponse",
"apiKey": "xxxx",
"serverUTC": 1461568860575,
"id": 200,
"message": "OK",
"url": "/a/api/questionpro.survey.deleteResponse"
}
}