Endpoints
All paths are relative to the base URL https://api.contentsquare.com. All endpoints require the surveys scope.
Path parameters
project_idinteger RequiredThe unique identifier of a Contentsquare project.
public_survey_idstringThe public survey ID, in the form
survey_<uuid>. Required for the endpoints that target a single survey.
List surveys
Section titled List surveysGET /v1/public/projects/{project_id}/surveys
Get a paginated list of surveys for the project.
Query parameters
limitintegerNumber of surveys to return. Default 20, min 1, max 100.
cursorstringPass
next_cursorfrom the previous response to get the next page.with_questionsbooleanInclude each survey's questions. Default
false.
Request example
curl --location 'https://api.contentsquare.com/v1/public/projects/789700/surveys?limit=20&with_questions=false' \--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response example (200)
{ "results": [ { "id": "survey_af479a77-abea-42bf-a73f-bc02f18503bf", "name": "Checkout feedback", "is_enabled": true, "created_time": "2026-03-12T09:41:07Z", "type": "popover", "language": "en", "url": "/v1/public/projects/789700/surveys/survey_af479a77-abea-42bf-a73f-bc02f18503bf", "responses_url": "/v1/public/projects/789700/surveys/survey_af479a77-abea-42bf-a73f-bc02f18503bf/responses", "sentiment_analysis_enabled": true, "questions": null } ], "next_cursor": "eyJ..."}Errors: 400 (invalid cursor), 401, 403, 422.
Get a survey
Section titled Get a surveyGET /v1/public/projects/{project_id}/surveys/{public_survey_id}
Get a single survey, including its questions.
Request example
curl --location 'https://api.contentsquare.com/v1/public/projects/789700/surveys/survey_af479a77-abea-42bf-a73f-bc02f18503bf' \--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response example (200)
{ "id": "survey_af479a77-abea-42bf-a73f-bc02f18503bf", "name": "Checkout feedback", "is_enabled": true, "created_time": "2026-03-12T09:41:07Z", "type": "popover", "language": "en", "url": "/v1/public/projects/789700/surveys/survey_af479a77-abea-42bf-a73f-bc02f18503bf", "responses_url": "/v1/public/projects/789700/surveys/survey_af479a77-abea-42bf-a73f-bc02f18503bf/responses", "sentiment_analysis_enabled": true, "questions": [ { "id": "question_af479a77-abea-42bf-a73f-bc02f18503bf_a1b2c3", "type": "rating-1-5", "text": "How easy was it to check out?", "is_required": true, "image_url": null, "choices": null, "labels": { "low_label": "Very difficult", "high_label": "Very easy" } }, { "id": "question_af479a77-abea-42bf-a73f-bc02f18503bf_d4e5f6", "type": "single-option", "text": "What brought you here today?", "is_required": false, "image_url": null, "choices": [ { "text": "Browsing", "allow_comment": false }, { "text": "Other", "allow_comment": true } ], "labels": null } ]}Errors: 400 (invalid survey ID), 401, 403, 404.
Survey object
idstringPublic survey ID.
namestringSurvey name.
is_enabledbooleanWhether the survey is enabled.
created_timestring (ISO 8601)Creation time (UTC).
typestringlink,full_screen,popover,button,inline,bubble, ormobile_popover.languagestringSurvey language.
urlstringPath of this survey resource.
responses_urlstringPath of the survey's responses.
sentiment_analysis_enabledbooleanWhether sentiment analysis is enabled.
questionsarray or nullQuestions.
nullon the list endpoint unlesswith_questions=true.
Question object
idstringQuestion ID (
question_<survey_uuid>_<short_id>).typestringreaction,reaction-binary,long-text,short-text,single-option,multiple-option,email,rating-1-5,rating-1-7,nps,statement, orthank-you.textstringQuestion text.
is_requiredbooleanWhether an answer is required.
image_urlstring or nullImage attached to the question.
choicesarray or nullFor
single-optionandmultiple-optionquestions:textandallow_commentfor each choice.labelsobject or nullFor scale questions:
low_labelandhigh_label.
List survey responses
Section titled List survey responsesGET /v1/public/projects/{project_id}/surveys/{public_survey_id}/responses
Get a paginated list of responses for a survey.
Query parameters
limitintegerNumber of responses to return. Default 20, min 1, max 100.
cursorstringPass
next_cursorfrom the previous response to get the next page.
Request example
curl --location 'https://api.contentsquare.com/v1/public/projects/789700/surveys/survey_af479a77-abea-42bf-a73f-bc02f18503bf/responses?limit=20' \--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Response example (200)
{ "results": [ { "id": "response_62e88f7c-7346-495a-a442-6567e175ab85", "answers": [ { "question_id": "question_af479a77-abea-42bf-a73f-bc02f18503bf_a1b2c3", "answer": "2", "comment": "Too many form fields.", "tags": [{ "name": "checkout" }], "sentiment": "negative" } ], "browser": "Chrome", "country": "FR", "created_time": "2026-10-20T14:05:11Z", "updated_time": "2026-10-20T14:06:02Z", "device": "desktop", "visitor_id": "XXXX", "is_complete": true, "os": "macOS", "recording_url": "https://app.contentsquare.com/...", "response_origin_url": "https://www.example.com/checkout", "user_attributes": [{ "name": "plan", "value": "premium" }], "window_size": { "width": 1440, "height": 900 } } ], "next_cursor": null}Errors: 400 (invalid survey ID or cursor), 401, 403, 404, 422.
Response object
idstringUnique identifier of the response.
answersarrayThe answers to the survey questions (see the answer object below).
browserstringRespondent's browser. Empty string if unknown.
osstringRespondent's operating system. Empty string if unknown.
countrystringRespondent's country, as an ISO 3166-1 alpha-2 code. Empty string if unknown.
devicestringdesktop,mobile, ortablet.visitor_idstringVisitor identifier.
is_completebooleanWhether the respondent completed the survey.
created_timestring (ISO 8601)Time the response was submitted.
updated_timestring (ISO 8601)Time the response was last updated.
recording_urlstring or nullLink to the Session Replay, if available.
response_origin_urlstringPage where the survey was answered.
user_attributesarrayUser attributes, each with a
nameand avalue(boolean, number, string, datetime, ornull).window_sizeobjectwidthandheightof the respondent's window, in pixels. Each can benull.
Answer object
question_idstringID of the answered question.
answerstringThe respondent's answer, as a string.
commentstring or nullOptional comment added by the respondent.
tagsarrayTags applied to the answer, each as an object with a
name.sentimentstring or nullpositive,negative, orneutral.nullif there is no sentiment or sentiment analysis is disabled.

