Skip to main content
POST
Create survey

Authorizations

Authorization
string
header
required

OAuth2 access token obtained via the authorization flow. Include in the Authorization header as: Bearer {access_token}

Body

application/json

Send exactly one of questions (write your own poll) or template (build it from a template id returned by GET /v1/templates).

Send exactly one of questions (write your own poll) or template (build it from a template id returned by GET /v1/templates).

name
string

Survey name (1-255 characters, trimmed)

Required string length: 1 - 255
projectId

Project GUID (string) or numeric ID to associate with the survey, or null to leave unassigned. Mutually exclusive with projects.

projects
(string | number)[]

Project GUIDs (or numeric IDs) to associate the survey with. Mutually exclusive with projectId.

Maximum array length: 50
tags
object[]

Tags to attach. Each item has either id (existing tag) or name (find-or-create).

Maximum array length: 10
targeting
string[]

Demographic targeting traits

reporting
string[]

Reporting breakdown traits

country
string

Two-letter country code (e.g. US)

sampleSize
string

Number of respondents. Standard surveys: "15", "30", "50", "75", "100", "200", "300", "500". Screen recording surveys: "5", "10", "15", "20", "25", "30", "50", "75" (max 75).

surveyIntent
string

Original intent of the survey as interpreted by AI (max 255 characters)

Maximum string length: 255
isMiniPoll
boolean

Whether to create this survey as a daily mini-poll

externalId
string

Optional opaque correlation key for your own records. Omit when unset. Case-sensitive and byte-exact — send the identical string every time. Many surveys may share the same id. We do not interpret this value.

Required string length: 1 - 255
template
object

Create the survey from a template instead of writing questions. A template is one ready-made question with a fixed price per response and fixed limits (question type, option count and kinds, sample sizes, countries, audience). Call GET /v1/templates/{id} first to read its question, blanks, option slots and constraints. The server picks the question type from the template (head_to_head for 2 options or fewer and ranked for 3 or more, where a template offers both). Omitted survey fields come from the template: sampleSize its default size, country its default country, name its title, and targeting its preset audience (send the full list to change it, keeping the preset). Its reporting traits always apply, so reporting cannot be sent. A request outside the limits is rejected with a 422 listing every violation; nothing is written. Create only: edit the draft afterwards with questions.

questions
object[]

List of questions for the survey. Required unless template is sent.

Minimum array length: 1

Response

Default Response

success
boolean
data
object

Full survey data including questions, options, and metadata

cost
object

Cost information for the survey

completionEstimate
object

Estimated completion-time bucket for the current audience