Surveys
Duplicate a survey
POST
/surveys/{id}/duplicateNeedscontent.editCopies the survey as a new draft named "Copy of …" and translations.
Authorization
secretKeyheader
AuthorizationBearer <sk_…>A secret API key from Settings → API keys. It acts with its creator's role.
Path Parameters
id*integerThe survey's id.
Range
1 <= valueRequest Body
application/json- body
isActive?booleanDefault
falseResponse Body
Created
application/json- response
survey*A survey with its working draft. What visitors see is the version in publication.
Shell
curl -X POST 'https://app.cueston.com/api/surveys/1/duplicate' \
-H 'Content-Type: application/json' \
-d '{}'Example Response
JSON
{
"survey": {
"id": 42,
"name": "Onboarding tour",
"urlPattern": "https://app.acme.com/*",
"isActive": true,
"display": "slideout",
"position": "bottom-right",
"questions": [
{
"id": "string",
"type": "nps",
"prompt": "string",
"required": false,
"options": [
"string"
],
"scaleLabels": {
"low": "string",
"high": "string"
},
"placeholder": "string",
"followUp": {
"whenScoreBelow": -9007199254740991,
"questionId": "string"
}
}
],
"thankYou": "string",
"localizations": {
"property1": {
"thankYou": "string",
"questions": {
"property1": {
"prompt": "string",
"options": [
"string"
],
"scaleLabels": {
"low": "string",
"high": "string"
},
"placeholder": "string"
},
"property2": {
"prompt": "string",
"options": [
"string"
],
"scaleLabels": {
"low": "string",
"high": "string"
},
"placeholder": "string"
}
}
},
"property2": {
"thankYou": "string",
"questions": {
"property1": {
"prompt": "string",
"options": [
"string"
],
"scaleLabels": {
"low": "string",
"high": "string"
},
"placeholder": "string"
},
"property2": {
"prompt": "string",
"options": [
"string"
],
"scaleLabels": {
"low": "string",
"high": "string"
},
"placeholder": "string"
}
}
}
},
"styling": {
"accentColor": "string",
"backgroundColor": "string",
"textColor": "string",
"borderRadius": 0
},
"delayMs": 0,
"frequencyType": "once",
"frequencyDays": 1,
"audienceRules": {
"enabled": false,
"matchType": "all",
"rules": [
{
"id": "string",
"attribute": "string",
"operator": "equals",
"value": "string",
"key": "string"
}
]
},
"priority": 0,
"createdAt": "2026-10-26T09:30:00Z",
"updatedAt": "2026-10-26T09:30:00Z",
"publication": {
"production": {
"versionId": 7,
"version": 3,
"publishedAt": "2026-10-26T09:30:00Z"
},
"staging": {
"versionId": 7,
"version": 3,
"publishedAt": "2026-10-26T09:30:00Z"
}
},
"hasUnpublishedChanges": true
}
}Delete a surveyDELETE
Deletes the survey with its versions and translations, and stops serving it everywhere. This can't be undone.
Publish a surveyPOST
Publishes the working draft as a new version (or re-serves the latest version when nothing changed). Production needs `content.publish` and fails with `approval_required` when the workspace requires review — then request a review (`POST /surveys/{id}/publish-requests`). Staging needs `content.edit`.