Get a Study layout
Returns the entire Study in authored order, including Study metadata. The response includes an ETag header for the Study version. Every public Question appears exactly once, either at the root or nested inside a Block, and each Question includes its full content, options, and Question-owned logic. Blocks include membership, nesting, and Block-owned display and skip logic; Pages are not supported for IN_PRODUCT_SURVEY Studies. The response is not paginated. Managed AI Follow-up children are not separate nodes.
curl --request GET \
--url https://api.sprig.com/v2/studies/{studyId}/layout \
--header 'Authorization: <api-key>'import requests
url = "https://api.sprig.com/v2/studies/{studyId}/layout"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.sprig.com/v2/studies/{studyId}/layout', 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.sprig.com/v2/studies/{studyId}/layout",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$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.sprig.com/v2/studies/{studyId}/layout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sprig.com/v2/studies/{studyId}/layout")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sprig.com/v2/studies/{studyId}/layout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "DRAFT",
"version": 2,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"studyUrl": "<string>",
"type": "SURVEY",
"responseSettings": {
"completion": {
"mode": "FIXED",
"responseLimit": 2
},
"requireIdentifiedRespondent": true,
"allowBackwardNavigation": true,
"retake": {
"invitationMode": "GENERATED",
"responseLimit": "PER_INVITATION",
"resume": {
"enabled": true,
"windowDays": 16
}
}
},
"shareUrl": "<string>",
"elements": [
{
"type": "QUESTION",
"question": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": {
"html": "<string>",
"variables": {}
},
"required": true,
"displayLogic": {
"source": {
"type": "QUESTION_RESPONSE",
"question": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
},
"operator": "EQUALS",
"value": "<string>"
},
"skipLogic": [
{
"when": {
"source": {
"type": "QUESTION_RESPONSE",
"question": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
},
"operator": "EQUALS",
"value": "<string>"
},
"destination": {
"type": "END"
}
}
],
"aiFollowUp": {
"userPrompt": "<string>"
},
"randomizePosition": true,
"type": "OPEN_TEXT",
"name": "<string>",
"description": {
"html": "<string>",
"variables": {}
},
"image": {
"url": "<string>",
"altText": "<string>",
"displaySize": "FIT",
"alignment": "LEFT",
"width": 123,
"height": 123,
"mediaType": "image/gif",
"originalFilename": "<string>",
"assetId": "<string>"
},
"responsePlaceholder": "<string>"
}
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"resource": {
"type": "<string>",
"id": "<string>"
}
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"resource": {
"type": "<string>",
"id": "<string>"
}
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"resource": {
"type": "<string>",
"id": "<string>"
}
}
]
}Authorizations
Use API-Key YOUR_API_KEY. The key selects the Production or Development environment.
Path Parameters
Response
The complete Study.
- Shareable survey layout
- In-product survey layout
The complete Study, including its metadata and authored layout. Questions include their content and Question-owned logic. Blocks include membership, nesting, and Block-owned logic. Managed AI Follow-up children are not separate nodes.
DRAFT, IN_PROGRESS, PAUSED, COMPLETED, ARCHIVED x >= 1Link to this Study in the Sprig dashboard for authors.
A shareable Survey Study.
SURVEY Show child attributes
Show child attributes
The respondent URL, or null until the Study can be shared.
The entire Study in authored order. Every public Question appears exactly once, at the root or nested inside a Block.
One ordered node in the Study layout: a full Question or a Block.
- Question
- Block
Show child attributes
Show child attributes
Was this page helpful?
curl --request GET \
--url https://api.sprig.com/v2/studies/{studyId}/layout \
--header 'Authorization: <api-key>'import requests
url = "https://api.sprig.com/v2/studies/{studyId}/layout"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.sprig.com/v2/studies/{studyId}/layout', 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.sprig.com/v2/studies/{studyId}/layout",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$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.sprig.com/v2/studies/{studyId}/layout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sprig.com/v2/studies/{studyId}/layout")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sprig.com/v2/studies/{studyId}/layout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "DRAFT",
"version": 2,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"studyUrl": "<string>",
"type": "SURVEY",
"responseSettings": {
"completion": {
"mode": "FIXED",
"responseLimit": 2
},
"requireIdentifiedRespondent": true,
"allowBackwardNavigation": true,
"retake": {
"invitationMode": "GENERATED",
"responseLimit": "PER_INVITATION",
"resume": {
"enabled": true,
"windowDays": 16
}
}
},
"shareUrl": "<string>",
"elements": [
{
"type": "QUESTION",
"question": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": {
"html": "<string>",
"variables": {}
},
"required": true,
"displayLogic": {
"source": {
"type": "QUESTION_RESPONSE",
"question": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
},
"operator": "EQUALS",
"value": "<string>"
},
"skipLogic": [
{
"when": {
"source": {
"type": "QUESTION_RESPONSE",
"question": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
},
"operator": "EQUALS",
"value": "<string>"
},
"destination": {
"type": "END"
}
}
],
"aiFollowUp": {
"userPrompt": "<string>"
},
"randomizePosition": true,
"type": "OPEN_TEXT",
"name": "<string>",
"description": {
"html": "<string>",
"variables": {}
},
"image": {
"url": "<string>",
"altText": "<string>",
"displaySize": "FIT",
"alignment": "LEFT",
"width": 123,
"height": 123,
"mediaType": "image/gif",
"originalFilename": "<string>",
"assetId": "<string>"
},
"responsePlaceholder": "<string>"
}
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"resource": {
"type": "<string>",
"id": "<string>"
}
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"resource": {
"type": "<string>",
"id": "<string>"
}
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"resource": {
"type": "<string>",
"id": "<string>"
}
}
]
}