curl --request GET \
--url https://app.formbricks.com/api/v3/surveys/{surveyId} \
--cookie next-auth.session-token=import requests
url = "https://app.formbricks.com/api/v3/surveys/{surveyId}"
headers = {"cookie": "next-auth.session-token="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: 'next-auth.session-token='}};
fetch('https://app.formbricks.com/api/v3/surveys/{surveyId}', 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://app.formbricks.com/api/v3/surveys/{surveyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "next-auth.session-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://app.formbricks.com/api/v3/surveys/{surveyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "next-auth.session-token=")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.formbricks.com/api/v3/surveys/{surveyId}")
.header("cookie", "next-auth.session-token=")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.formbricks.com/api/v3/surveys/{surveyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["cookie"] = 'next-auth.session-token='
response = http.request(request)
puts response.read_body{
"data": {
"id": "clseedsurveycsat000000",
"workspaceId": "clseedworkspace000000000",
"createdAt": "2026-05-18T09:24:54.014Z",
"updatedAt": "2026-05-18T09:24:54.014Z",
"archivedAt": null,
"visibility": "workspace",
"owner": {
"name": "Alice Example"
},
"access": {
"via": "workspace",
"canManageVisibility": false
},
"name": "CSAT Survey",
"type": "link",
"status": "inProgress",
"metadata": {},
"defaultLanguage": "en-US",
"languages": [
{
"code": "en-US",
"default": true,
"enabled": true
},
{
"code": "de-DE",
"alias": "german",
"default": false,
"enabled": false
}
],
"showLanguageSwitch": false,
"autoSelectLanguage": null,
"welcomeCard": {
"enabled": false
},
"blocks": [
{
"id": "e0tfwzqk63op37y14z95qq3k",
"name": "Main Block",
"elements": [
{
"id": "nzte4cm8836hgjw63pesziht",
"type": "rating",
"range": 5,
"scale": "smiley",
"headline": {
"en-US": "How satisfied are you with our product?",
"de-DE": "Wie zufrieden sind Sie mit unserem Produkt?"
},
"required": true
}
]
}
],
"endings": [],
"hiddenFields": {
"enabled": false
},
"variables": [],
"customCss": null
}
}Retrieve a survey
Returns the public v3 survey management resource for one survey. By default, translatable
fields are returned as stable multilingual maps keyed by the language codes emitted in
languages[].code. Use lang to filter those maps to one or more requested language selectors.
curl --request GET \
--url https://app.formbricks.com/api/v3/surveys/{surveyId} \
--cookie next-auth.session-token=import requests
url = "https://app.formbricks.com/api/v3/surveys/{surveyId}"
headers = {"cookie": "next-auth.session-token="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: 'next-auth.session-token='}};
fetch('https://app.formbricks.com/api/v3/surveys/{surveyId}', 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://app.formbricks.com/api/v3/surveys/{surveyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "next-auth.session-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://app.formbricks.com/api/v3/surveys/{surveyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "next-auth.session-token=")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.formbricks.com/api/v3/surveys/{surveyId}")
.header("cookie", "next-auth.session-token=")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.formbricks.com/api/v3/surveys/{surveyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["cookie"] = 'next-auth.session-token='
response = http.request(request)
puts response.read_body{
"data": {
"id": "clseedsurveycsat000000",
"workspaceId": "clseedworkspace000000000",
"createdAt": "2026-05-18T09:24:54.014Z",
"updatedAt": "2026-05-18T09:24:54.014Z",
"archivedAt": null,
"visibility": "workspace",
"owner": {
"name": "Alice Example"
},
"access": {
"via": "workspace",
"canManageVisibility": false
},
"name": "CSAT Survey",
"type": "link",
"status": "inProgress",
"metadata": {},
"defaultLanguage": "en-US",
"languages": [
{
"code": "en-US",
"default": true,
"enabled": true
},
{
"code": "de-DE",
"alias": "german",
"default": false,
"enabled": false
}
],
"showLanguageSwitch": false,
"autoSelectLanguage": null,
"welcomeCard": {
"enabled": false
},
"blocks": [
{
"id": "e0tfwzqk63op37y14z95qq3k",
"name": "Main Block",
"elements": [
{
"id": "nzte4cm8836hgjw63pesziht",
"type": "rating",
"range": 5,
"scale": "smiley",
"headline": {
"en-US": "How satisfied are you with our product?",
"de-DE": "Wie zufrieden sind Sie mit unserem Produkt?"
},
"required": true
}
]
}
],
"endings": [],
"hiddenFields": {
"enabled": false
},
"variables": [],
"customCss": null
}
}Authorizations
NextAuth session JWT cookie. Development: often next-auth.session-token.
Production (HTTPS): often __Secure-next-auth.session-token. Send the cookie your browser receives after sign-in.
Path Parameters
Survey identifier.
Query Parameters
Comma-separated language selector filter for translatable fields, for example ?lang=de-DE,pt-PT.
The response shape stays stable: translatable fields are always maps, never strings, and response
keys match the emitted languages[].code values for this survey.
For compatibility with existing Formbricks surveys, GET accepts language tags such as de,
de-DE, zh-Hans, and zh-Hans-CN, accepts _ or - separators, is case-insensitive, and
accepts configured workspace aliases such as english. Bare language selectors are resolved
against the survey's configured languages and return 400 if ambiguous, for example if both
en-US and en-GB are configured.
Disabled-but-configured languages are readable in the management API so unfinished translations can
be completed.
["de-DE"]
["de-DE", "pt-PT"]
["de"]
["zh-Hans"]
["zh-Hans-CN"]
Response
Survey retrieved successfully
The three fields every SurveyListItem and SurveyResource carries, merged into both via allOf. All required, always present.
Show child attributes
Show child attributes
Was this page helpful?