Your organisation's API key, supplied by Dizplai. Send it on every request. It isn't a secret, so it can ship in your app: what a fan does is protected by the fan's token.
Path Parameters
poll_id
string<uuid>
required
The poll's ID, from a list of experiences or polls.
A poll's ID, a UUID.
Example:
"0192fa7b-8d41-7bbc-9b58-02311fc6ef8e"
Response
The poll. results.state says what to show now, and results_visibility when fans may see results. While the poll is open, read it every 10 seconds. After a vote, show the vote's snapshot first: a read straight after the vote may not include it yet.
A poll: one question, its options, and the results when fans may see them. Show the question with one choice for each option, and send the chosen option's id as the fan's vote.
id
string<uuid>
required
A poll's ID, a UUID.
Example:
"0192fa7b-8d41-7bbc-9b58-02311fc6ef8e"
type
enum<string>
required
Tells polls apart from other experiences in a list.
Available options:
poll
status
string
required
Whether fans can take part now. scheduled: coming up, and goes live at starts_at. live: taking votes or messages. closed: taking part has stopped; it can reopen. An experience your producers take down or delete drops out of lists, and getting it answers 404. More statuses may be added: treat one you don't know as closed to taking part.
starts_at
string<date-time> | null
required
When it's due to open. Null if your producers open it by hand.
ends_at
string<date-time> | null
required
When it's due to close. Null if no closing time is set.
metadata
object
required
Tags for finding and grouping things, such as the match or show they're about. Filter lists by them with metadata[key]=value. Up to 50 keys of up to 40 characters, values up to 500. One key is reserved, event_id, set by your producers; every other key is yours, and never interpreted.
Show child attributes
locale
string
required
The language the experience's text is written in, such as en-GB.
Maximum string length: 35
Pattern: ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$
Example:
"en-GB"
created_at
string<date-time>
required
When the poll was created.
updated_at
string<date-time>
required
Changes when anything a fan can see changes, including visible results, but not when only withheld results change.
results_visibility
string
required
When fans may see results. live: always. after_vote: once they've voted, or once voting has stopped; the results are in every read, so your app hides them until then. after_close: once voting has stopped; until then results are withheld. hidden: never; results are always withheld, for on air or your own team only. Results that mustn't be seen early use after_close or hidden. More values may be added: whatever the value, results.state says what to show now.
results
Withheld · object
required
What to show for the poll's results, by state. withheld: fans may not see them yet, as results_visibility says, and nothing else is sent. live: the current counts. final: voting has stopped and these are the confirmed totals, which can differ from the last live numbers, and go back to live if the poll opens again. Counts are never null: 0 means no votes. More states may be added: treat a state you don't know as withheld: show no counts.
Withheld
Counted
Another state
Show child attributes
requires_sign_in
boolean
required
True if only signed-in fans may take part: show a guest your sign-in prompt instead. A guest's vote or message here answers 403 (sign_in_required). Voice notes and photos are always for signed-in fans.
question
string
required
The question fans answer.
Required string length: 1 - 300
options
object[]
required
Every option, 2 to 10, in the poll's order. Once the poll has gone live, its number of options is fixed: your producers can correct an option's label, such as a typo, but can't add or remove options.
Required array length: 2 - 10 elements
Show child attributes
subtitle
string
Supporting text under the question.
Maximum string length: 300
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Dizplai API","colors":{"primary":"#A00066","light":"#FF10A8","dark":"#DC008C"},"logo":{"light":"https://mintcdn.com/dizplai-77024896/lmZzH95OOSORiYIT/logo/light.png?fit=max\u0026auto=format\u0026n=lmZzH95OOSORiYIT\u0026q=85\u0026s=7ba40c5f8a08a90459fbaced5737c13c","dark":"https://mintcdn.com/dizplai-77024896/lmZzH95OOSORiYIT/logo/dark.png?fit=max\u0026auto=format\u0026n=lmZzH95OOSORiYIT\u0026q=85\u0026s=8286d2098664f6af36a26a60667c4e0a"},"favicon":{"light":"https://mintcdn.com/dizplai-77024896/lmZzH95OOSORiYIT/favicon/light.png?fit=max\u0026auto=format\u0026n=lmZzH95OOSORiYIT\u0026q=85\u0026s=8f0db8c7cd1f3902780d7961ec3d1f13","dark":"https://mintcdn.com/dizplai-77024896/lmZzH95OOSORiYIT/favicon/dark.png?fit=max\u0026auto=format\u0026n=lmZzH95OOSORiYIT\u0026q=85\u0026s=5a704a691408bfbcc241ceb17472db24"},"appearance":{"default":"dark"},"background":{"decoration":"gradient","color":{"light":"#FAF4FF","dark":"#11061B"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/dizplai"}},"fonts":{"heading":{"family":"Outfit"},"body":{"family":"Outfit"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dizplai-77024896","hasAudioNarration":false,"actualSubdomain":"dizplai-77024896","customDomains":["developer.dizplai.com"],"gitSource":{"type":"github","owner":"dizplai","repo":"dizplai-platform","deployBranch":"api-docs-site","contentDirectory":"api-docs","isPrivate":true,"mountPath":"","label":"","_id":"6adb4bbb93b56c4f04aae929"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af588fa55c1ebcca521ce1b","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API reference","count":15},{"language":"default","tag":"Experiences API","count":12},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"Experiences","count":5},{"language":"default","tag":"Fan Voices","count":5},{"language":"default","tag":"Polls","count":4},{"language":"default","tag":"Using the API","count":3},{"language":"default","tag":"Introduction","count":2},{"language":"default","tag":"Collections","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/polls/get-a-poll","slug":"/api-reference/polls/get-a-poll","pageMetadata":{"title":"Get a poll","description":"Gets a poll with its question, options and results, to draw it and keep it up to date.","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /polls/{poll_id}","href":"/api-reference/polls/get-a-poll","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Gets a poll with its question, options and results, to draw it and keep it up to date.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get a poll","description":"Gets a poll with its question, options and results, to draw it and keep it up to date.","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /polls/{poll_id}","href":"/api-reference/polls/get-a-poll","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Polls"],"operationId":"getPoll","summary":"Get a poll","description":"Gets a poll with its question, options and results, to draw it and keep it up to date.","responses":{"200":"aab26076-23bf-4cbd-9c2e-3ae1643d4805","401":"7ac91c04-6b38-47b5-b561-99387ee2fb4a","403":"e7552a20-4081-47b6-9183-24dce963d6cf","404":"cd46c6bc-e219-4f1e-aee2-c9657358efad","429":"7f81e26f-753f-4dc8-95dd-e86d782aa29c","503":"ff68ec44-241e-4af0-a0b2-51550c8e090a"},"method":"get","type":"path","servers":["8f572995-de18-42e6-9b79-a8b6680b8360"],"security":["cedc2567-5c5e-4b8e-8b1a-ed404edd7bf8"],"path":"/polls/{poll_id}","baseUrlOptions":["https://api.dizplai.com/v1"],"title":"Get a poll","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"279adf46-066c-42ee-aea0-23c49e9414e8":{"name":"poll_id","in":"path","required":true,"description":"The poll's ID, from a list of experiences or polls.","schema":{"type":"string","description":"The poll's ID, from a list of experiences or polls.\nA poll's ID, a UUID.","format":"uuid","examples":["0192fa7b-8d41-7bbc-9b58-02311fc6ef8e"],"isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"responses":{"aab26076-23bf-4cbd-9c2e-3ae1643d4805":{"description":"The poll. results.state says what to show now, and results_visibility when fans may see results. While the poll is open, read it every 10 seconds. After a vote, show the vote's snapshot first: a read straight after the vote may not include it yet.","headers":{"x-request-id":{"description":"The request's ID. Quote it to support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"title":"Poll","type":"object","description":"A poll: one question, its options, and the results when fans may see them. Show the question with one choice for each option, and send the chosen option's id as the fan's vote.","required":["id","type","status","starts_at","ends_at","metadata","locale","created_at","updated_at","results_visibility","results","requires_sign_in","question","options"],"properties":{"id":{"type":"string","description":"A poll's ID, a UUID.","format":"uuid","examples":["0192fa7b-8d41-7bbc-9b58-02311fc6ef8e"],"isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","enum":["poll"],"description":"Tells polls apart from other experiences in a list.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Whether fans can take part now. scheduled: coming up, and goes live at starts_at. live: taking votes or messages. closed: taking part has stopped; it can reopen. An experience your producers take down or delete drops out of lists, and getting it answers 404. More statuses may be added: treat one you don't know as closed to taking part.","x-extensible-enum":["scheduled","live","closed"],"isRequired":true,"uniqueKey":"status","typeLabel":"string"},"starts_at":{"oneOf":[{"type":"string","format":"date-time","description":"When it's due to open. Null if your producers open it by hand.","isRequired":true,"uniqueKey":"starts_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When it's due to open. Null if your producers open it by hand.","isRequired":true,"uniqueKey":"starts_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"starts_at","typeLabel":"string\u003cdate-time> | null"},"ends_at":{"oneOf":[{"type":"string","format":"date-time","description":"When it's due to close. Null if no closing time is set.","isRequired":true,"uniqueKey":"ends_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When it's due to close. Null if no closing time is set.","isRequired":true,"uniqueKey":"ends_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"ends_at","typeLabel":"string\u003cdate-time> | null"},"metadata":{"type":"object","maxProperties":50,"propertyNames":{"maxLength":40},"additionalProperties":{"type":"string","maxLength":500,"uniqueKey":"metadata.additionalProperties","typeLabel":"string"},"description":"Tags for finding and grouping things, such as the match or show they're about. Filter lists by them with `metadata[key]=value`. Up to 50 keys of up to 40 characters, values up to 500. One key is reserved, event_id, set by your producers; every other key is yours, and never interpreted.","properties":{"event_id":{"type":"string","maxLength":64,"description":"An ID for the match or show this is about, set by your producers. Reserved.","uniqueKey":"metadata.event_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"locale":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$","examples":["en-GB"],"description":"The language the experience's text is written in, such as en-GB.","x-extensible-enum":["en-GB"],"isRequired":true,"uniqueKey":"locale","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"When the poll was created.","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"Changes when anything a fan can see changes, including visible results, but not when only withheld results change.","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"results_visibility":{"type":"string","x-extensible-enum":["live","after_vote","after_close","hidden"],"description":"When fans may see results. live: always. after_vote: once they've voted, or once voting has stopped; the results are in every read, so your app hides them until then. after_close: once voting has stopped; until then results are withheld. hidden: never; results are always withheld, for on air or your own team only. Results that mustn't be seen early use after_close or hidden. More values may be added: whatever the value, results.state says what to show now.","isRequired":true,"uniqueKey":"results_visibility","typeLabel":"string"},"results":{"oneOf":[{"type":"object","title":"Withheld","description":"What to show for the poll's results, by state. withheld: fans may not see them yet, as results_visibility says, and nothing else is sent. live: the current counts. final: voting has stopped and these are the confirmed totals, which can differ from the last live numbers, and go back to live if the poll opens again. Counts are never null: 0 means no votes. More states may be added: treat a state you don't know as withheld: show no counts.","required":["state"],"properties":{"state":{"type":"string","description":"What to show now. Treat a state you don't know as withheld: show no counts.","enum":["withheld"],"x-extensible-enum":["withheld","live","final"],"isRequired":true,"uniqueKey":"results.oneOf.0.state","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"results.oneOf.0","typeLabel":"Withheld · object"},{"type":"object","title":"Counted","description":"What to show for the poll's results, by state. withheld: fans may not see them yet, as results_visibility says, and nothing else is sent. live: the current counts. final: voting has stopped and these are the confirmed totals, which can differ from the last live numbers, and go back to live if the poll opens again. Counts are never null: 0 means no votes. More states may be added: treat a state you don't know as withheld: show no counts.","required":["state","total_votes","options"],"properties":{"state":{"type":"string","description":"What to show now. Treat a state you don't know as withheld: show no counts.","enum":["live","final"],"x-extensible-enum":["withheld","live","final"],"isRequired":true,"uniqueKey":"results.oneOf.1.state","typeLabel":"enum\u003cstring>"},"total_votes":{"type":"integer","minimum":0,"description":"Fans who voted. Never null: 0 means no votes.","isRequired":true,"uniqueKey":"results.oneOf.1.total_votes","typeLabel":"integer"},"options":{"type":"array","description":"Every option, in the poll's order. Match option_id to the poll's options[].id for its label.","items":{"type":"object","required":["option_id","votes","percent"],"properties":{"option_id":{"type":"string","description":"An option's ID, what a fan's vote sends. Created with the option, opaque, and never reused, even if the option is removed before the poll goes live. Correcting an option's label keeps its ID.","format":"uuid","examples":["01a1f97a-b538-778f-bad7-0c1c35ff701c"],"isRequired":true,"uniqueKey":"results.oneOf.1.options.items.[INDEX].option_id","typeLabel":"string\u003cuuid>"},"votes":{"type":"integer","minimum":0,"description":"Votes counted. Never null: 0 means no votes.","isRequired":true,"uniqueKey":"results.oneOf.1.options.items.[INDEX].votes","typeLabel":"integer"},"percent":{"type":"number","minimum":0,"maximum":100,"description":"Of total_votes, 0 to 100, rounded to one decimal place, so they may not add up to exactly 100.","isRequired":true,"uniqueKey":"results.oneOf.1.options.items.[INDEX].percent","typeLabel":"number"}},"uniqueKey":"results.oneOf.1.options.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.oneOf.1.options","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"results.oneOf.1","typeLabel":"Counted · object"},{"type":"object","title":"Another state","description":"What to show for the poll's results, by state. withheld: fans may not see them yet, as results_visibility says, and nothing else is sent. live: the current counts. final: voting has stopped and these are the confirmed totals, which can differ from the last live numbers, and go back to live if the poll opens again. Counts are never null: 0 means no votes. More states may be added: treat a state you don't know as withheld: show no counts.","required":["state"],"properties":{"state":{"type":"string","description":"What to show now. Treat a state you don't know as withheld: show no counts.","x-extensible-enum":["withheld","live","final"],"isRequired":true,"uniqueKey":"results.oneOf.2.state","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.oneOf.2","typeLabel":"Another state · object"}],"isRequired":true,"uniqueKey":"results","typeLabel":"Withheld · object | Counted · object | Another state · object"},"requires_sign_in":{"type":"boolean","description":"True if only signed-in fans may take part: show a guest your sign-in prompt instead. A guest's vote or message here answers 403 (sign_in_required). Voice notes and photos are always for signed-in fans.","isRequired":true,"uniqueKey":"requires_sign_in","typeLabel":"boolean"},"question":{"type":"string","minLength":1,"maxLength":300,"description":"The question fans answer.","isRequired":true,"uniqueKey":"question","typeLabel":"string"},"options":{"type":"array","minItems":2,"maxItems":10,"description":"Every option, 2 to 10, in the poll's order. Once the poll has gone live, its number of options is fixed: your producers can correct an option's label, such as a typo, but can't add or remove options.","items":{"type":"object","required":["id","label"],"properties":{"id":{"type":"string","description":"An option's ID, what a fan's vote sends. Created with the option, opaque, and never reused, even if the option is removed before the poll goes live. Correcting an option's label keeps its ID.","format":"uuid","examples":["01a1f97a-b538-778f-bad7-0c1c35ff701c"],"isRequired":true,"uniqueKey":"options.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"label":{"type":"string","description":"The answer, as fans see it.","minLength":1,"maxLength":200,"isRequired":true,"uniqueKey":"options.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"options.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"options","typeLabel":"object[]"},"subtitle":{"type":"string","maxLength":300,"description":"Supporting text under the question.","uniqueKey":"subtitle","typeLabel":"string"}},"uniqueKey":"","typeLabel":"Poll · object"},"examples":{"live":{"title":"live","summary":"Live","value":{"id":"0192fa7b-8d41-7bbc-9b58-02311fc6ef8e","type":"poll","status":"live","starts_at":null,"ends_at":null,"metadata":{"event_id":"ev_2041"},"locale":"en-GB","created_at":"2026-11-20T15:02:11Z","updated_at":"2026-11-21T20:41:07Z","results_visibility":"after_vote","requires_sign_in":false,"question":"Who was your player of the match?","options":[{"id":"01a1f97a-b538-778f-bad7-0c1c35ff701c","label":"Jordan Mensah"},{"id":"01a1f97a-b5a7-7b5b-9458-203a658c1e8d","label":"Kai Brennan"},{"id":"01a1f97a-b5cc-7fcf-989c-56ebe53808c5","label":"Amara Osei"}],"results":{"state":"live","total_votes":4210,"options":[{"option_id":"01a1f97a-b538-778f-bad7-0c1c35ff701c","votes":2105,"percent":50},{"option_id":"01a1f97a-b5a7-7b5b-9458-203a658c1e8d","votes":1263,"percent":30},{"option_id":"01a1f97a-b5cc-7fcf-989c-56ebe53808c5","votes":842,"percent":20}]}}},"withheld":{"title":"withheld","summary":"Results withheld until votes stop","value":{"id":"0192fa7b-8d41-7bbc-9b58-02311fc6ef8e","type":"poll","status":"live","starts_at":null,"ends_at":null,"metadata":{"event_id":"ev_2041"},"locale":"en-GB","created_at":"2026-11-20T15:02:11Z","updated_at":"2026-11-21T20:41:07Z","results_visibility":"after_close","requires_sign_in":false,"question":"Who was your player of the match?","options":[{"id":"01a1f97a-b538-778f-bad7-0c1c35ff701c","label":"Jordan Mensah"},{"id":"01a1f97a-b5a7-7b5b-9458-203a658c1e8d","label":"Kai Brennan"},{"id":"01a1f97a-b5cc-7fcf-989c-56ebe53808c5","label":"Amara Osei"}],"results":{"state":"withheld"}}},"final":{"title":"final","summary":"Closed, with its final results","value":{"id":"0192fa7b-8d41-7bbc-9b58-02311fc6ef8e","type":"poll","status":"closed","starts_at":null,"ends_at":"2026-11-21T21:40:00Z","metadata":{"event_id":"ev_2041"},"locale":"en-GB","created_at":"2026-11-20T15:02:11Z","updated_at":"2026-11-21T21:40:03Z","results_visibility":"after_vote","requires_sign_in":false,"question":"Who was your player of the match?","options":[{"id":"01a1f97a-b538-778f-bad7-0c1c35ff701c","label":"Jordan Mensah"},{"id":"01a1f97a-b5a7-7b5b-9458-203a658c1e8d","label":"Kai Brennan"},{"id":"01a1f97a-b5cc-7fcf-989c-56ebe53808c5","label":"Amara Osei"}],"results":{"state":"final","total_votes":5000,"options":[{"option_id":"01a1f97a-b538-778f-bad7-0c1c35ff701c","votes":2412,"percent":48.2},{"option_id":"01a1f97a-b5a7-7b5b-9458-203a658c1e8d","votes":1588,"percent":31.8},{"option_id":"01a1f97a-b5cc-7fcf-989c-56ebe53808c5","votes":1000,"percent":20}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"7ac91c04-6b38-47b5-b561-99387ee2fb4a":{"description":"A missing or invalid x-api-key (invalid_api_key). Don't retry: check the key.","headers":{"x-request-id":{"description":"The request's ID. Quote it to support.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","code","title","status","request_id"],"description":"What went wrong, in the same shape for every error: an RFC 9457 problem with a stable code. Act on code, which never changes meaning within a version, and on the HTTP status for a code you don't know. Quote request_id to support.","properties":{"type":{"type":"string","format":"uri-reference","description":"One URL per code: https://api.dizplai.com/problems/ followed by the code with hyphens, such as https://api.dizplai.com/problems/unknown-option for unknown_option.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","x-extensible-enum":["invalid_request","unknown_option","not_open","media_not_accepted","invalid_upload","invalid_api_key","invalid_fan_token","forbidden","fan_blocked","sign_in_required","message_limit_reached","not_found","idempotency_conflict","rate_limited","unavailable"],"description":"More codes may be added: for one you don't know, act on the HTTP status.\n\n| code | Status | Retry? | Meaning |\n|---|---|---|---|\n| invalid_request | 400 | No | The body or a parameter is invalid, or a required header such as Idempotency-Key is missing. |\n| unknown_option | 400 | No; read the poll again | An option ID the poll doesn't have. |\n| not_open | 400 | No; read the experience again | The experience isn't taking votes or messages: it isn't live yet, or votes have stopped. |\n| media_not_accepted | 400 | No | The Fan Voice doesn't take this kind of message, or the file's type or size is outside the limits. |\n| invalid_upload | 400 | No; upload again | The upload_id is unknown, already used or another fan's, or the file was never uploaded or its type or size differs from what you asked for. |\n| invalid_api_key | 401 | No | A missing or invalid x-api-key. |\n| invalid_fan_token | 401 | Once, with a fresh token | A missing, invalid or expired fan token, or one from another organisation's login. It carries WWW-Authenticate. |\n| forbidden | 403 | No | Your API key isn't allowed to make this request. |\n| fan_blocked | 403 | No | The fan is blocked from this Fan Voice. |\n| sign_in_required | 403 | No; ask the fan to sign in | A guest on an experience that needs a signed-in fan, or a guest's voice note or photo. |\n| message_limit_reached | 403 | No | The fan has used up this Fan Voice's messages of this kind. |\n| not_found | 404 | No | Not found, or not yours. |\n| idempotency_conflict | 409 | No | An Idempotency-Key reused with a different body while it's kept: 24 hours, or 5 minutes for an upload. |\n| rate_limited | 429 | After Retry-After | Too many requests. |\n| unavailable | 503 | After Retry-After | Votes or messages can't be taken right now. |\n","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"title":{"type":"string","description":"A short title for the code, such as Not open. It doesn't change.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"request_id":{"type":"string","description":"Matches the x-request-id response header.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"What went wrong, in plain English. It can change, so don't act on it.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, with invalid_request.","items":{"type":"object","required":["pointer","message"],"properties":{"pointer":{"type":"string","description":"A JSON Pointer to the field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"message":{"type":"string","description":"What's wrong with that field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_api_key":{"title":"invalid_api_key","summary":"invalid_api_key","value":{"type":"https://api.dizplai.com/problems/invalid-api-key","code":"invalid_api_key","title":"Invalid API key","status":401,"detail":"The x-api-key isn't recognised.","request_id":"01JBX8P2R4T6V8X0Z2B4D6F8H0"}}},"exampleType":"examples"}},"exampleType":"examples"},"e7552a20-4081-47b6-9183-24dce963d6cf":{"description":"Not allowed for this caller or origin (forbidden), such as a browser Origin your organisation hasn't registered, or a platform key sent from a browser. Retrying won't help: check the key and your registered origins.","headers":{"x-request-id":{"description":"The request's ID. Quote it to support.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","code","title","status","request_id"],"description":"What went wrong, in the same shape for every error: an RFC 9457 problem with a stable code. Act on code, which never changes meaning within a version, and on the HTTP status for a code you don't know. Quote request_id to support.","properties":{"type":{"type":"string","format":"uri-reference","description":"One URL per code: https://api.dizplai.com/problems/ followed by the code with hyphens, such as https://api.dizplai.com/problems/unknown-option for unknown_option.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","x-extensible-enum":["invalid_request","unknown_option","not_open","media_not_accepted","invalid_upload","invalid_api_key","invalid_fan_token","forbidden","fan_blocked","sign_in_required","message_limit_reached","not_found","idempotency_conflict","rate_limited","unavailable"],"description":"More codes may be added: for one you don't know, act on the HTTP status.\n\n| code | Status | Retry? | Meaning |\n|---|---|---|---|\n| invalid_request | 400 | No | The body or a parameter is invalid, or a required header such as Idempotency-Key is missing. |\n| unknown_option | 400 | No; read the poll again | An option ID the poll doesn't have. |\n| not_open | 400 | No; read the experience again | The experience isn't taking votes or messages: it isn't live yet, or votes have stopped. |\n| media_not_accepted | 400 | No | The Fan Voice doesn't take this kind of message, or the file's type or size is outside the limits. |\n| invalid_upload | 400 | No; upload again | The upload_id is unknown, already used or another fan's, or the file was never uploaded or its type or size differs from what you asked for. |\n| invalid_api_key | 401 | No | A missing or invalid x-api-key. |\n| invalid_fan_token | 401 | Once, with a fresh token | A missing, invalid or expired fan token, or one from another organisation's login. It carries WWW-Authenticate. |\n| forbidden | 403 | No | Your API key isn't allowed to make this request. |\n| fan_blocked | 403 | No | The fan is blocked from this Fan Voice. |\n| sign_in_required | 403 | No; ask the fan to sign in | A guest on an experience that needs a signed-in fan, or a guest's voice note or photo. |\n| message_limit_reached | 403 | No | The fan has used up this Fan Voice's messages of this kind. |\n| not_found | 404 | No | Not found, or not yours. |\n| idempotency_conflict | 409 | No | An Idempotency-Key reused with a different body while it's kept: 24 hours, or 5 minutes for an upload. |\n| rate_limited | 429 | After Retry-After | Too many requests. |\n| unavailable | 503 | After Retry-After | Votes or messages can't be taken right now. |\n","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"title":{"type":"string","description":"A short title for the code, such as Not open. It doesn't change.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"request_id":{"type":"string","description":"Matches the x-request-id response header.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"What went wrong, in plain English. It can change, so don't act on it.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, with invalid_request.","items":{"type":"object","required":["pointer","message"],"properties":{"pointer":{"type":"string","description":"A JSON Pointer to the field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"message":{"type":"string","description":"What's wrong with that field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"forbidden":{"title":"forbidden","summary":"forbidden","value":{"type":"https://api.dizplai.com/problems/forbidden","code":"forbidden","title":"Forbidden","status":403,"detail":"This origin isn't registered for this organisation.","request_id":"01JBX8P2R4T6V8X0Z2B4D6F8H0"}}},"exampleType":"examples"}},"exampleType":"examples"},"cd46c6bc-e219-4f1e-aee2-c9657358efad":{"description":"The poll doesn't exist, isn't yours, or was taken down or deleted (not_found).","headers":{"x-request-id":{"description":"The request's ID. Quote it to support.","schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","code","title","status","request_id"],"description":"What went wrong, in the same shape for every error: an RFC 9457 problem with a stable code. Act on code, which never changes meaning within a version, and on the HTTP status for a code you don't know. Quote request_id to support.","properties":{"type":{"type":"string","format":"uri-reference","description":"One URL per code: https://api.dizplai.com/problems/ followed by the code with hyphens, such as https://api.dizplai.com/problems/unknown-option for unknown_option.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","x-extensible-enum":["invalid_request","unknown_option","not_open","media_not_accepted","invalid_upload","invalid_api_key","invalid_fan_token","forbidden","fan_blocked","sign_in_required","message_limit_reached","not_found","idempotency_conflict","rate_limited","unavailable"],"description":"More codes may be added: for one you don't know, act on the HTTP status.\n\n| code | Status | Retry? | Meaning |\n|---|---|---|---|\n| invalid_request | 400 | No | The body or a parameter is invalid, or a required header such as Idempotency-Key is missing. |\n| unknown_option | 400 | No; read the poll again | An option ID the poll doesn't have. |\n| not_open | 400 | No; read the experience again | The experience isn't taking votes or messages: it isn't live yet, or votes have stopped. |\n| media_not_accepted | 400 | No | The Fan Voice doesn't take this kind of message, or the file's type or size is outside the limits. |\n| invalid_upload | 400 | No; upload again | The upload_id is unknown, already used or another fan's, or the file was never uploaded or its type or size differs from what you asked for. |\n| invalid_api_key | 401 | No | A missing or invalid x-api-key. |\n| invalid_fan_token | 401 | Once, with a fresh token | A missing, invalid or expired fan token, or one from another organisation's login. It carries WWW-Authenticate. |\n| forbidden | 403 | No | Your API key isn't allowed to make this request. |\n| fan_blocked | 403 | No | The fan is blocked from this Fan Voice. |\n| sign_in_required | 403 | No; ask the fan to sign in | A guest on an experience that needs a signed-in fan, or a guest's voice note or photo. |\n| message_limit_reached | 403 | No | The fan has used up this Fan Voice's messages of this kind. |\n| not_found | 404 | No | Not found, or not yours. |\n| idempotency_conflict | 409 | No | An Idempotency-Key reused with a different body while it's kept: 24 hours, or 5 minutes for an upload. |\n| rate_limited | 429 | After Retry-After | Too many requests. |\n| unavailable | 503 | After Retry-After | Votes or messages can't be taken right now. |\n","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"title":{"type":"string","description":"A short title for the code, such as Not open. It doesn't change.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"request_id":{"type":"string","description":"Matches the x-request-id response header.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"What went wrong, in plain English. It can change, so don't act on it.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, with invalid_request.","items":{"type":"object","required":["pointer","message"],"properties":{"pointer":{"type":"string","description":"A JSON Pointer to the field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"message":{"type":"string","description":"What's wrong with that field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"not_found":{"title":"not_found","summary":"not_found","value":{"type":"https://api.dizplai.com/problems/not-found","code":"not_found","title":"Not found","status":404,"detail":"No such poll.","request_id":"01JBX8P2R4T6V8X0Z2B4D6F8H0"}}},"exampleType":"examples"}},"exampleType":"examples"},"7f81e26f-753f-4dc8-95dd-e86d782aa29c":{"description":"Too many requests (rate_limited). Wait the number of seconds in Retry-After, then retry.","headers":{"x-request-id":{"description":"The request's ID. Quote it to support.","schema":{"type":"string"}},"Retry-After":{"description":"How long to wait before retrying, as a whole number of seconds. Sent with every 429 and 503.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","code","title","status","request_id"],"description":"What went wrong, in the same shape for every error: an RFC 9457 problem with a stable code. Act on code, which never changes meaning within a version, and on the HTTP status for a code you don't know. Quote request_id to support.","properties":{"type":{"type":"string","format":"uri-reference","description":"One URL per code: https://api.dizplai.com/problems/ followed by the code with hyphens, such as https://api.dizplai.com/problems/unknown-option for unknown_option.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","x-extensible-enum":["invalid_request","unknown_option","not_open","media_not_accepted","invalid_upload","invalid_api_key","invalid_fan_token","forbidden","fan_blocked","sign_in_required","message_limit_reached","not_found","idempotency_conflict","rate_limited","unavailable"],"description":"More codes may be added: for one you don't know, act on the HTTP status.\n\n| code | Status | Retry? | Meaning |\n|---|---|---|---|\n| invalid_request | 400 | No | The body or a parameter is invalid, or a required header such as Idempotency-Key is missing. |\n| unknown_option | 400 | No; read the poll again | An option ID the poll doesn't have. |\n| not_open | 400 | No; read the experience again | The experience isn't taking votes or messages: it isn't live yet, or votes have stopped. |\n| media_not_accepted | 400 | No | The Fan Voice doesn't take this kind of message, or the file's type or size is outside the limits. |\n| invalid_upload | 400 | No; upload again | The upload_id is unknown, already used or another fan's, or the file was never uploaded or its type or size differs from what you asked for. |\n| invalid_api_key | 401 | No | A missing or invalid x-api-key. |\n| invalid_fan_token | 401 | Once, with a fresh token | A missing, invalid or expired fan token, or one from another organisation's login. It carries WWW-Authenticate. |\n| forbidden | 403 | No | Your API key isn't allowed to make this request. |\n| fan_blocked | 403 | No | The fan is blocked from this Fan Voice. |\n| sign_in_required | 403 | No; ask the fan to sign in | A guest on an experience that needs a signed-in fan, or a guest's voice note or photo. |\n| message_limit_reached | 403 | No | The fan has used up this Fan Voice's messages of this kind. |\n| not_found | 404 | No | Not found, or not yours. |\n| idempotency_conflict | 409 | No | An Idempotency-Key reused with a different body while it's kept: 24 hours, or 5 minutes for an upload. |\n| rate_limited | 429 | After Retry-After | Too many requests. |\n| unavailable | 503 | After Retry-After | Votes or messages can't be taken right now. |\n","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"title":{"type":"string","description":"A short title for the code, such as Not open. It doesn't change.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"request_id":{"type":"string","description":"Matches the x-request-id response header.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"What went wrong, in plain English. It can change, so don't act on it.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, with invalid_request.","items":{"type":"object","required":["pointer","message"],"properties":{"pointer":{"type":"string","description":"A JSON Pointer to the field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"message":{"type":"string","description":"What's wrong with that field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rate_limited":{"title":"rate_limited","summary":"rate_limited","value":{"type":"https://api.dizplai.com/problems/rate-limited","code":"rate_limited","title":"Rate limited","status":429,"detail":"Too many requests. Retry after 2 seconds.","request_id":"01JBX8P2R4T6V8X0Z2B4D6F8H0"}}},"exampleType":"examples"}},"exampleType":"examples"},"ff68ec44-241e-4af0-a0b2-51550c8e090a":{"description":"This can't be read right now (unavailable). Wait the number of seconds in Retry-After, then retry, and keep showing what you last read.","headers":{"x-request-id":{"description":"The request's ID. Quote it to support.","schema":{"type":"string"}},"Retry-After":{"description":"How long to wait before retrying, as a whole number of seconds. Sent with every 429 and 503.","schema":{"type":"integer","minimum":0}}},"content":{"application/problem+json":{"schema":{"type":"object","required":["type","code","title","status","request_id"],"description":"What went wrong, in the same shape for every error: an RFC 9457 problem with a stable code. Act on code, which never changes meaning within a version, and on the HTTP status for a code you don't know. Quote request_id to support.","properties":{"type":{"type":"string","format":"uri-reference","description":"One URL per code: https://api.dizplai.com/problems/ followed by the code with hyphens, such as https://api.dizplai.com/problems/unknown-option for unknown_option.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"code":{"type":"string","x-extensible-enum":["invalid_request","unknown_option","not_open","media_not_accepted","invalid_upload","invalid_api_key","invalid_fan_token","forbidden","fan_blocked","sign_in_required","message_limit_reached","not_found","idempotency_conflict","rate_limited","unavailable"],"description":"More codes may be added: for one you don't know, act on the HTTP status.\n\n| code | Status | Retry? | Meaning |\n|---|---|---|---|\n| invalid_request | 400 | No | The body or a parameter is invalid, or a required header such as Idempotency-Key is missing. |\n| unknown_option | 400 | No; read the poll again | An option ID the poll doesn't have. |\n| not_open | 400 | No; read the experience again | The experience isn't taking votes or messages: it isn't live yet, or votes have stopped. |\n| media_not_accepted | 400 | No | The Fan Voice doesn't take this kind of message, or the file's type or size is outside the limits. |\n| invalid_upload | 400 | No; upload again | The upload_id is unknown, already used or another fan's, or the file was never uploaded or its type or size differs from what you asked for. |\n| invalid_api_key | 401 | No | A missing or invalid x-api-key. |\n| invalid_fan_token | 401 | Once, with a fresh token | A missing, invalid or expired fan token, or one from another organisation's login. It carries WWW-Authenticate. |\n| forbidden | 403 | No | Your API key isn't allowed to make this request. |\n| fan_blocked | 403 | No | The fan is blocked from this Fan Voice. |\n| sign_in_required | 403 | No; ask the fan to sign in | A guest on an experience that needs a signed-in fan, or a guest's voice note or photo. |\n| message_limit_reached | 403 | No | The fan has used up this Fan Voice's messages of this kind. |\n| not_found | 404 | No | Not found, or not yours. |\n| idempotency_conflict | 409 | No | An Idempotency-Key reused with a different body while it's kept: 24 hours, or 5 minutes for an upload. |\n| rate_limited | 429 | After Retry-After | Too many requests. |\n| unavailable | 503 | After Retry-After | Votes or messages can't be taken right now. |\n","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"title":{"type":"string","description":"A short title for the code, such as Not open. It doesn't change.","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","minimum":400,"maximum":599,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"request_id":{"type":"string","description":"Matches the x-request-id response header.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"detail":{"type":"string","description":"What went wrong, in plain English. It can change, so don't act on it.","uniqueKey":"detail","typeLabel":"string"},"errors":{"type":"array","description":"Field-level validation errors, with invalid_request.","items":{"type":"object","required":["pointer","message"],"properties":{"pointer":{"type":"string","description":"A JSON Pointer to the field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"message":{"type":"string","description":"What's wrong with that field.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"unavailable":{"title":"unavailable","summary":"unavailable","value":{"type":"https://api.dizplai.com/problems/unavailable","code":"unavailable","title":"Unavailable","status":503,"detail":"This can't be read right now. Retry after 5 seconds.","request_id":"01JBX8P2R4T6V8X0Z2B4D6F8H0"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"cedc2567-5c5e-4b8e-8b1a-ed404edd7bf8":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your organisation's API key, supplied by Dizplai. Send it on every request. It isn't a secret, so it can ship in your app: what a fan does is protected by the fan's token.","scopes":[],"schemeName":"apiKey"}}},"servers":{"8f572995-de18-42e6-9b79-a8b6680b8360":{"url":"https://api.dizplai.com/v1","description":"The Dizplai API."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your organisation's API key, supplied by Dizplai. Send it on every request. It isn't a secret, so it can ship in your app: what a fan does is protected by the fan's token.","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","description":"Your organisation's API key, supplied by Dizplai. Send it on every request. It isn't a secret, so it can ship in your app: what a fan does is protected by the fan's token.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"}]},"originalFileLocation":"experiences/api-reference/experiences.openapi.yaml"},"subdomain":"dizplai-77024896","siteName":"Dizplai API","title":"Get a poll - Dizplai API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T11:05:01.828Z","originalFileLocation":"api-reference/polls/get-a-poll.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Gets a poll with its question, options and results, to draw it and keep it up to date.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dizplai API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get a poll - Dizplai API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Gets a poll with its question, options and results, to draw it and keep it up to date.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dizplai API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.dizplai.com/api-reference/polls/get-a-poll\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dizplai-77024896.mintlify.site/_mintlify/api/og/v2?division=Polls\u0026amp;title=Get+a+poll\u0026amp;description=Gets+a+poll+with+its+question%2C+options+and+results%2C+to+draw+it+and+keep+it+up+to+date.\u0026amp;theme=4cfd1fb4fbf3ee8fe3fa75b7\u0026amp;signature=badae65d63921bfeb3a777e15a058cb751998f3eafc327a2893b9b3e785851d9\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get a poll - Dizplai API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Gets a poll with its question, options and results, to draw it and keep it up to date.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dizplai-77024896.mintlify.site/_mintlify/api/og/v2?division=Polls\u0026amp;title=Get+a+poll\u0026amp;description=Gets+a+poll+with+its+question%2C+options+and+results%2C+to+draw+it+and+keep+it+up+to+date.\u0026amp;theme=4cfd1fb4fbf3ee8fe3fa75b7\u0026amp;signature=badae65d63921bfeb3a777e15a058cb751998f3eafc327a2893b9b3e785851d9\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/dizplai-77024896/3nLUV7FzqdT27bAO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dizplai API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#A00066\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.dizplai.com/api-reference/polls/get-a-poll\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/polls/get-a-poll.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.dizplai.com/#organization\",\"name\":\"Dizplai API\",\"url\":\"https://developer.dizplai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dizplai-77024896/lmZzH95OOSORiYIT/logo/light.png?fit=max\u0026auto=format\u0026n=lmZzH95OOSORiYIT\u0026q=85\u0026s=7ba40c5f8a08a90459fbaced5737c13c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.dizplai.com#website\",\"name\":\"Dizplai API\",\"url\":\"https://developer.dizplai.com\",\"publisher\":{\"@id\":\"https://developer.dizplai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll#webpage\",\"url\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll\",\"name\":\"Get a poll\",\"description\":\"Gets a poll with its question, options and results, to draw it and keep it up to date.\",\"dateModified\":\"2026-11-10T11:05:01.828Z\",\"isPartOf\":{\"@id\":\"https://developer.dizplai.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Experiences API\",\"item\":\"https://developer.dizplai.com/api-reference/experiences/list-experiences\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Polls\",\"item\":\"https://developer.dizplai.com/api-reference/polls/list-polls\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get a poll\",\"item\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll#apireference\",\"headline\":\"Get a poll\",\"name\":\"Get a poll\",\"description\":\"Gets a poll with its question, options and results, to draw it and keep it up to date.\",\"url\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll\",\"mainEntityOfPage\":{\"@id\":\"https://developer.dizplai.com/api-reference/polls/get-a-poll#webpage\"},\"dateModified\":\"2026-11-10T11:05:01.828Z\",\"publisher\":{\"@id\":\"https://developer.dizplai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.dizplai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dizplai API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Dizplai API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/polls/get-a-poll.md","siteName":"Dizplai API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","groups":[{"group":"Using the API","pages":[{"title":"Authentication","href":"/authentication"},{"title":"Errors and retries","href":"/errors"},{"title":"Versions and changes","href":"/versioning"}]},{"group":"Experiences API","pages":[{"group":"Experiences","pages":[{"title":"List experiences","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /experiences","href":"/api-reference/experiences/list-experiences"}]},{"group":"Collections","pages":[{"title":"List collections","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /collections","href":"/api-reference/collections/list-collections"},{"title":"Get a collection","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /collections/{collection_id}","href":"/api-reference/collections/get-a-collection"}]},{"group":"Polls","pages":[{"title":"List polls","description":"Lists polls only, for a screen that shows nothing else. To list polls and Fan Voices together, use List experiences.","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /polls","href":"/api-reference/polls/list-polls"},{"title":"Get a poll","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /polls/{poll_id}","href":"/api-reference/polls/get-a-poll"},{"title":"Cast a vote","description":"Casts a fan's vote for one of a poll's options. A fan has one vote in each poll, whichever collection they found it in, and only their first vote counts. Send a new Idempotency-Key with each vote, so a retry is never counted twice.","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml post /polls/{poll_id}/votes","href":"/api-reference/polls/cast-a-vote"},{"title":"Get the fan's vote","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /polls/{poll_id}/votes/me","href":"/api-reference/polls/get-the-fans-vote"}]},{"group":"Fan Voices","pages":[{"title":"List Fan Voices","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /fan-voices","href":"/api-reference/fan-voices/list-fan-voices"},{"title":"Get a Fan Voice","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /fan-voices/{fan_voice_id}","href":"/api-reference/fan-voices/get-a-fan-voice"},{"title":"Create an upload","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml post /fan-voices/{fan_voice_id}/uploads","href":"/api-reference/fan-voices/create-an-upload"},{"title":"Send a message","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml post /fan-voices/{fan_voice_id}/messages","href":"/api-reference/fan-voices/send-a-message"},{"title":"List the fan's messages","deprecated":null,"version":null,"openapi":"/experiences/api-reference/experiences.openapi.yaml get /fan-voices/{fan_voice_id}/messages/me","href":"/api-reference/fan-voices/list-the-fans-messages"}]}]}]}]},"basePath":"","title":"Get a poll - Dizplai API","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DdEMm2kG.js","utils-BMo572L7.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C-4m9KAx.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DPLK2Oq9.js","snippetPresets-BKjfJMC9.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-DTsgtCEj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C8vmhyQM.js","shallow-r9w8LQGS.js","getApiPlaygroundDisplay-DjPI64HQ.js","CodeSnippet-C8Bvhl16.js","CodeSnippets-BtWUwcMy.js","Page-BIYvYBgk.js","getPastedJson-Dcm_3Pgl.js","icon-BXwrTpjc.js","MethodPill-CcjfVmmy.js","DuplicateIcon-BuKIbXAQ.js","createIcon-DaL9yXsO.js","DynamicMarkdown-Co5nikxh.js","SectionHeading-P4UNTsMZ.js","axios-vUo_bRtp.js","Markdown-CEfymfIH.js","clsx-Dq9TQuNi.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-D2J8knkn.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BgZ2ThuU.js"]}