Create a screener question
Add a screener question to a project. Supports up to 40 questions per project. Available types: radio, checkbox, singleLineTextbox, multiLineTextbox, and sliderScale.
curl --request POST \
--url https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-api-secret: <x-api-secret>' \
--data '
{
"text": "<string>",
"questionType": "radio",
"answers": [
{
"text": "<string>",
"goToQuestionUid": "<string>",
"isOther": true
}
]
}
'import requests
url = "https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions"
payload = {
"text": "<string>",
"questionType": "radio",
"answers": [
{
"text": "<string>",
"goToQuestionUid": "<string>",
"isOther": True
}
]
}
headers = {
"x-api-key": "<x-api-key>",
"x-api-secret": "<x-api-secret>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-api-secret': '<x-api-secret>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: '<string>',
questionType: 'radio',
answers: [{text: '<string>', goToQuestionUid: '<string>', isOther: true}]
})
};
fetch('https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>',
'questionType' => 'radio',
'answers' => [
[
'text' => '<string>',
'goToQuestionUid' => '<string>',
'isOther' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>",
"x-api-secret: <x-api-secret>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"questionType\": \"radio\",\n \"answers\": [\n {\n \"text\": \"<string>\",\n \"goToQuestionUid\": \"<string>\",\n \"isOther\": true\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("x-api-secret", "<x-api-secret>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions")
.header("x-api-key", "<x-api-key>")
.header("x-api-secret", "<x-api-secret>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"questionType\": \"radio\",\n \"answers\": [\n {\n \"text\": \"<string>\",\n \"goToQuestionUid\": \"<string>\",\n \"isOther\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["x-api-secret"] = '<x-api-secret>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"questionType\": \"radio\",\n \"answers\": [\n {\n \"text\": \"<string>\",\n \"goToQuestionUid\": \"<string>\",\n \"isOther\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "<string>",
"text": "<string>",
"minValue": 123,
"maxValue": 123,
"step": 123,
"id": "<string>",
"updatedAt": "<string>",
"uid": "<string>",
"answers": [
{
"createdAt": "<string>",
"uid": "<string>",
"answerValue": 123,
"id": "<string>",
"updatedAt": "<string>",
"text": "<string>",
"goToQuestionUid": "<string>",
"isOther": true
}
],
"isRequired": true,
"skipLogic": true,
"includeOtherOption": true,
"isEnd": true,
"logic": {
"answerUid": "<string>",
"goToQuestionUid": "<string>",
"skipLogicType": {},
"multipleAnswers": [
{
"answer": "<string>",
"logicType": {}
}
],
"multipleAnswersBoolType": {}
},
"order": 123,
"rankRule": {
"topN": 123
},
"randomizeOrder": true,
"matrixRows": [
{
"uid": "<string>",
"text": "<string>",
"qualifyingAnswerUids": [
"<string>"
]
}
],
"warnings": [
"<string>"
]
}Supported question types
| Type | Description | Requires answers |
|---|---|---|
radio | Single-choice selection | Yes |
checkbox | Multi-choice selection | Yes |
singleLineTextbox | Short text input | No |
multiLineTextbox | Long text input | No |
sliderScale | Slider with min/max | No |
Path Parameters
Body
- Radio Question
- Checkbox Question
- Textbox Question
- Slider Scale Question
- File Upload Question
radio Hide child attributes
Hide child attributes
[
QUALIFY: 1
DISQUALIFY: 2
]
1, 2 Required unless isOther, then text will be set to 'Other'
Skip logic for radio questions. Uid of question to skip to.
Is 'Other' answer with comment field
Response
radio, multiLineTextbox, checkbox, singleLineTextbox, numericBox, sliderScale, fileUpload, rank, matrix Hide child attributes
Hide child attributes
CHECKBOX: { id: 3, answerValues: [ { id: 1, text: 'May Select' }, { id: 2, text: 'Must Select' }, { id: 3, text: 'Disqualify' }, ], }, RADIO: { id: 1, answerValues: [ { id: 1, text: 'Qualify' }, { id: 2, text: 'Disqualify' }, ], },
Required unless isOther, then text will be set to 'Other'
Skip logic for radio questions. Uid of question to skip to.
Is 'Other' answer with comment field
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Cutoff position (1-based). Preferred options must rank within the top N.
Bounded by the per-question option cap; the launch-time schema additionally
enforces topN <= answers.length (which can't be checked here because the
rule is validated independently of the answers array).
all, any all, any Was this page helpful?
curl --request POST \
--url https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-api-secret: <x-api-secret>' \
--data '
{
"text": "<string>",
"questionType": "radio",
"answers": [
{
"text": "<string>",
"goToQuestionUid": "<string>",
"isOther": true
}
]
}
'import requests
url = "https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions"
payload = {
"text": "<string>",
"questionType": "radio",
"answers": [
{
"text": "<string>",
"goToQuestionUid": "<string>",
"isOther": True
}
]
}
headers = {
"x-api-key": "<x-api-key>",
"x-api-secret": "<x-api-secret>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-api-secret': '<x-api-secret>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: '<string>',
questionType: 'radio',
answers: [{text: '<string>', goToQuestionUid: '<string>', isOther: true}]
})
};
fetch('https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>',
'questionType' => 'radio',
'answers' => [
[
'text' => '<string>',
'goToQuestionUid' => '<string>',
'isOther' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>",
"x-api-secret: <x-api-secret>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"questionType\": \"radio\",\n \"answers\": [\n {\n \"text\": \"<string>\",\n \"goToQuestionUid\": \"<string>\",\n \"isOther\": true\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("x-api-secret", "<x-api-secret>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions")
.header("x-api-key", "<x-api-key>")
.header("x-api-secret", "<x-api-secret>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"questionType\": \"radio\",\n \"answers\": [\n {\n \"text\": \"<string>\",\n \"goToQuestionUid\": \"<string>\",\n \"isOther\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.respondent.io/v1/projects/{projectId}/screener-questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["x-api-secret"] = '<x-api-secret>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"questionType\": \"radio\",\n \"answers\": [\n {\n \"text\": \"<string>\",\n \"goToQuestionUid\": \"<string>\",\n \"isOther\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "<string>",
"text": "<string>",
"minValue": 123,
"maxValue": 123,
"step": 123,
"id": "<string>",
"updatedAt": "<string>",
"uid": "<string>",
"answers": [
{
"createdAt": "<string>",
"uid": "<string>",
"answerValue": 123,
"id": "<string>",
"updatedAt": "<string>",
"text": "<string>",
"goToQuestionUid": "<string>",
"isOther": true
}
],
"isRequired": true,
"skipLogic": true,
"includeOtherOption": true,
"isEnd": true,
"logic": {
"answerUid": "<string>",
"goToQuestionUid": "<string>",
"skipLogicType": {},
"multipleAnswers": [
{
"answer": "<string>",
"logicType": {}
}
],
"multipleAnswersBoolType": {}
},
"order": 123,
"rankRule": {
"topN": 123
},
"randomizeOrder": true,
"matrixRows": [
{
"uid": "<string>",
"text": "<string>",
"qualifyingAnswerUids": [
"<string>"
]
}
],
"warnings": [
"<string>"
]
}