curl --request POST \
--url https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish', 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.rallyuxr.com/api/public/v1/studies/{studyId}/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.rallyuxr.com/api/public/v1/studies/{studyId}/publish")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"studyId": "<string>",
"studyType": "SURVEY",
"recruitmentStrategy": "IN_RALLY",
"status": "DRAFT",
"studyPlan": {
"name": "<string>",
"externalName": "<string>",
"description": "<string>",
"externalDescription": "<string>",
"startDate": "2025-01-01",
"endDate": "2025-01-02",
"researchPlanUrl": "<string>",
"participationLimit": 10,
"consentFormId": "<string>",
"incentive": {
"incentiveType": "MONEY_OR_GIFT_CARD",
"incentiveBudgetId": "<string>",
"amount": 123,
"customIncentiveId": "<string>",
"defaultCustomIncentiveValue": "<string>",
"currency": "USD"
},
"includeScreener": true,
"brandingConfigId": "<string>",
"language": "en",
"scheduler": {
"interviewDurationMinutes": 60
}
},
"createdAt": "2023-11-07T05:31:56Z",
"createdFromTemplateId": "<string>",
"owners": [
{
"userId": "<string>",
"emailAccountId": "<string>",
"fullname": "<string>",
"email": "<string>"
}
],
"screener": {
"id": "<string>",
"workspaceId": "<string>",
"studyId": "<string>",
"type": "RALLY",
"showSchedulerToQualified": true,
"qualifyByDefault": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"questions": [
{
"category": "simple",
"type": "SHORT_FORM",
"name": "<string>",
"isRequired": true,
"id": "<string>",
"workspaceId": "<string>",
"description": "<string>",
"mappedToPropertyId": "<string>",
"questionTemplateId": "<string>"
}
],
"externalSurveyId": "<string>",
"surveyMonkeyCollectorId": "<string>",
"externalSurveySetupStatus": "IN_PROGRESS",
"externalSurveySetupErrorCode": "<string>",
"externalSurveySetupUpdatedAt": "2023-11-07T05:31:56Z",
"customLinkUrl": "<string>",
"customLinkTokensJson": "<string>"
}
}"Bad Request""Unauthorized""Forbidden""{Resource} not found""Study is not in draft status""Too Many Requests""Internal Server Error"Publish a draft study
Publish a draft study and all of its associated data (screener, questions, options), applying its pending draft changes and moving it out of DRAFT status so it goes live. This is the same publish action available in the Rally app.
curl --request POST \
--url https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish', 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.rallyuxr.com/api/public/v1/studies/{studyId}/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.rallyuxr.com/api/public/v1/studies/{studyId}/publish")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/publish")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"studyId": "<string>",
"studyType": "SURVEY",
"recruitmentStrategy": "IN_RALLY",
"status": "DRAFT",
"studyPlan": {
"name": "<string>",
"externalName": "<string>",
"description": "<string>",
"externalDescription": "<string>",
"startDate": "2025-01-01",
"endDate": "2025-01-02",
"researchPlanUrl": "<string>",
"participationLimit": 10,
"consentFormId": "<string>",
"incentive": {
"incentiveType": "MONEY_OR_GIFT_CARD",
"incentiveBudgetId": "<string>",
"amount": 123,
"customIncentiveId": "<string>",
"defaultCustomIncentiveValue": "<string>",
"currency": "USD"
},
"includeScreener": true,
"brandingConfigId": "<string>",
"language": "en",
"scheduler": {
"interviewDurationMinutes": 60
}
},
"createdAt": "2023-11-07T05:31:56Z",
"createdFromTemplateId": "<string>",
"owners": [
{
"userId": "<string>",
"emailAccountId": "<string>",
"fullname": "<string>",
"email": "<string>"
}
],
"screener": {
"id": "<string>",
"workspaceId": "<string>",
"studyId": "<string>",
"type": "RALLY",
"showSchedulerToQualified": true,
"qualifyByDefault": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"questions": [
{
"category": "simple",
"type": "SHORT_FORM",
"name": "<string>",
"isRequired": true,
"id": "<string>",
"workspaceId": "<string>",
"description": "<string>",
"mappedToPropertyId": "<string>",
"questionTemplateId": "<string>"
}
],
"externalSurveyId": "<string>",
"surveyMonkeyCollectorId": "<string>",
"externalSurveySetupStatus": "IN_PROGRESS",
"externalSurveySetupErrorCode": "<string>",
"externalSurveySetupUpdatedAt": "2023-11-07T05:31:56Z",
"customLinkUrl": "<string>",
"customLinkTokensJson": "<string>"
}
}"Bad Request""Unauthorized""Forbidden""{Resource} not found""Study is not in draft status""Too Many Requests""Internal Server Error"Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
The published study
Study object including its screener
The type of study
SURVEY, INTERVIEWS, UNMODERATED_TEST, GROUP_INTERVIEW The recruitment strategy for the study
IN_RALLY, EXTERNAL The status of the study
DRAFT, ACTIVE, PAUSED, CLOSED Study plan object
Show child attributes
Show child attributes
The ID of the template this study was created from, or null if not created from a template
Show child attributes
Show child attributes
The study's screener with all of its questions. Null when the study has no screener or the caller cannot read screeners. Not included in list responses.
Show child attributes
Show child attributes