Get a single post by ID, including per-platform publish results.
The post’s workspace must belong to your org. publish_results is a list
of outcomes — one per platform this post was sent to — with the external
publish_id you’ll need to fetch live stats. Poll this endpoint until
every entry has a terminal status (success or failed) to know
publishing finished.
Errors:
401 authentication_required: API key or token is missing, invalid, or revoked.
403 permission_denied: Your plan does not include API access, or this workspace is not in your org.
404 resource_not_found: No post with that ID exists, or it is not in this workspace.
429 rate_limit_exceeded: You sent too many requests this minute.
Bearer an mk_live_ API key. A key is ORG-SCOPED: it grants full access to every resource in that organization, with no per-endpoint scoping (see the uid pseudo-permission on each operation). Manage keys at https://app.mymarky.ai.
Opt into a dated API version. Omit to stay on the floor (2026-04-08) forever — unpinned clients never break. Pin to a newer date (e.g. 2026-11-03) to receive the newest response shapes. Unknown values fall back to the floor. See https://docs.mymarky.ai for the versioning model.
Link to view this post in the Marky app (openable/shareable — show it to the user). This is where the post lives in Marky; link is the outbound URL published with the post.
What actually reached the platforms, from publish_results: 'delivered' (every platform succeeded), 'partial' (some succeeded, some failed), 'failed' (every platform failed), 'pending' (still in progress). Null when no publish has been attempted. Prefer this over status to tell the user whether a post went out.
Link to the workspace's scheduled-posts list in the Marky app — where the user sees this post waiting in the lineup. Present once the post is SCHEDULED; null otherwise.
Post status. One of: NEW (draft awaiting your team's review, incl. freshly generated), DRAFT (approved by a reviewer on your team), REJECTED (declined by a reviewer), SCHEDULED (queued for a future time), PUBLISHED (already posted). DRAFT/REJECTED are your team's review verdicts — Marky does not gate publishing on them. Same values the list_posts status filter accepts.
The same attached media as media_urls, in the same order, but with each item's description and transcript. Use this when analysing what content performs: the creative is usually the reason a post did well, and a URL alone tells you nothing about what was in it.
Clickable destination URL for platforms that support link posts: the Facebook link attachment, the Google Business CTA button, and the Pinterest pin destination. Other platforms ignore it — put links in the caption there. Must be http(s).
The same moment in the workspace's timezone, ready to show a person, e.g. "Wed Sep 23, 6:00 PM MSK". Quote it as-is instead of converting the UTC value.
Where the post was created: web, mobile, api (REST with an API key), mcp (an MCP client), max (the built-in assistant), onboarding (the first batch for a new workspace), duplicate, recurrence (the next occurrence of a recurring post), backup_fill (a backup copied into an empty queue slot), or internal. Null for posts created before 2026-10-30.
Caller-defined string key/value pairs set at create/update time — your own analytics dimensions (e.g. media_type, format, style, hook, topic). Marky returns them verbatim and never interprets them. Keys starting with marky_ are Marky's own (e.g. the copy date below); any you send are dropped.
The saved signature (e.g. a compliance disclaimer) appended to the caption when this post was created, or null. It is applied once: editing or rescheduling the post never appends it again.
The day this caption is about, read from the caption when it was written: an upcoming holiday of the workspace's country, one of the workspace's events, or an explicit date like 'September 25'. Never 'today'/'tomorrow'. Queueing never places the post after this day. Null when the caption names no date.
When to publish on copy_date: the workspace's first posting-schedule slot that day, else 10:00 local. Offer it as the post's date; schedule with at to use it.
The same moment in the workspace's timezone, ready to show a person, e.g. "Wed Sep 23, 6:00 PM MSK". Quote it as-is instead of converting the UTC value.
Per-platform publish outcomes — one entry per platform this post was sent to. Poll this until every entry has a terminal status (success or failed) to know publishing is complete.
Daily-queue placement. Present only when the post is in a recurring daily queue (status SCHEDULED with no adhoc_publish_time). Null for drafts, adhoc-scheduled, and published posts.
Returned by queue, schedule and publish: which platforms this post will actually publish to, and which connected accounts won't get it and why. Null on reads.
If set, this post repeats: a standard 5-field cron string (e.g. '0 9 * * 1' = every Monday 9am UTC). When it publishes, Marky auto-creates the next occurrence at the next cron time. Null = a one-off post.
Non-blocking notes about this post's captions, e.g. a call-to-action with no link or phone ('cta_without_contact'), or a caption in a different language from the workspace ('language_mismatch'). Empty when there is nothing to fix. Fix them with update_post before the post publishes; they never block anything.
Id of the undo record this write created. Pass it to revert_revisions to put the record back exactly as it was before this call. Set only on the response to a write; null when you read the record.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Marky API","colors":{"primary":"#6366f1","light":"#818cf8","dark":"#4f46e5"},"logo":{"light":"https://mintcdn.com/marky-2d226b8c/Z6-NzY89vZC-JBeX/logo/logo.png?fit=max\u0026auto=format\u0026n=Z6-NzY89vZC-JBeX\u0026q=85\u0026s=a7ccd17d02af75ecb6ba720fd9abdef3","dark":"https://mintcdn.com/marky-2d226b8c/Z6-NzY89vZC-JBeX/logo/logo.png?fit=max\u0026auto=format\u0026n=Z6-NzY89vZC-JBeX\u0026q=85\u0026s=a7ccd17d02af75ecb6ba720fd9abdef3"},"favicon":"https://mintcdn.com/marky-2d226b8c/Z6-NzY89vZC-JBeX/favicon.png?fit=max\u0026auto=format\u0026n=Z6-NzY89vZC-JBeX\u0026q=85\u0026s=947c745723cff1b66415bec8af31fcda","api":{"playground":{"display":"interactive"},"examples":{"prefill":false}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"marky-2d226b8c","hasAudioNarration":false,"actualSubdomain":"marky-2d226b8c","customDomains":["docs.mymarky.ai"],"gitSource":{"type":"github","owner":"marky-team","repo":"fast-backend","deployBranch":"main","contentDirectory":"guides","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea2c0e98fdbb3061a05f93","collectionId":"b3a30ff4-60d8-4ffc-a856-9cbaf971bca7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea2c0e98fdbb3061a05f93"},"entitlements":{},"buildId":"6aea2c0e98fdbb3061a05f93","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API Reference","count":48},{"language":"default","tag":"Guides","count":17},{"language":"default","tag":"Getting Started","count":11},{"language":"default","tag":"Integrations","count":8},{"language":"default","tag":"Posts","count":7},{"language":"default","tag":"Files","count":6},{"language":"default","tag":"Workspaces","count":5},{"language":"default","tag":"Folders","count":5},{"language":"default","tag":"Topics","count":5},{"language":"default","tag":"Webhooks","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":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":"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":"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":"llms-txt-v2","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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/get-post","slug":"/api-reference/get-post","pageMetadata":{"title":"Get post","openapi":"public-openapi.json get /api/businesses/{business_id}/posts/{post_id}","description":"Get a single post by ID, including per-platform publish results.\n\nThe post's workspace must belong to your org. `publish_results` is a list\nof outcomes — one per platform this post was sent to — with the external\n`publish_id` you'll need to fetch live stats. Poll this endpoint until\nevery entry has a terminal status (`success` or `failed`) to know\npublishing finished.\n\nErrors:\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 403 permission_denied: Your plan does not include API access, or this workspace is not in your org.\n 404 resource_not_found: No post with that ID exists, or it is not in this workspace.\n 429 rate_limit_exceeded: You sent too many requests this minute.","href":"/api-reference/get-post"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Get a single post by ID, including per-platform publish results.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The post’s workspace must belong to your org. \", _jsx(_components.code, {\n children: \"publish_results\"\n }), \" is a list\\nof outcomes — one per platform this post was sent to — with the external\\n\", _jsx(_components.code, {\n children: \"publish_id\"\n }), \" you’ll need to fetch live stats. Poll this endpoint until\\nevery entry has a terminal status (\", _jsx(_components.code, {\n children: \"success\"\n }), \" or \", _jsx(_components.code, {\n children: \"failed\"\n }), \") to know\\npublishing finished.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Errors:\\n401 authentication_required: API key or token is missing, invalid, or revoked.\\n403 permission_denied: Your plan does not include API access, or this workspace is not in your org.\\n404 resource_not_found: No post with that ID exists, or it is not in this workspace.\\n429 rate_limit_exceeded: You sent too many requests this minute.\"\n })]\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 post","openapi":"public-openapi.json get /api/businesses/{business_id}/posts/{post_id}","description":"Get a single post by ID, including per-platform publish results.\n\nThe post's workspace must belong to your org. `publish_results` is a list\nof outcomes — one per platform this post was sent to — with the external\n`publish_id` you'll need to fetch live stats. Poll this endpoint until\nevery entry has a terminal status (`success` or `failed`) to know\npublishing finished.\n\nErrors:\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 403 permission_denied: Your plan does not include API access, or this workspace is not in your org.\n 404 resource_not_found: No post with that ID exists, or it is not in this workspace.\n 429 rate_limit_exceeded: You sent too many requests this minute.","href":"/api-reference/get-post"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["posts"],"summary":"Get post","description":"Get a single post by ID, including per-platform publish results.\n\nThe post's workspace must belong to your org. `publish_results` is a list\nof outcomes — one per platform this post was sent to — with the external\n`publish_id` you'll need to fetch live stats. Poll this endpoint until\nevery entry has a terminal status (`success` or `failed`) to know\npublishing finished.\n\nErrors:\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 403 permission_denied: Your plan does not include API access, or this workspace is not in your org.\n 404 resource_not_found: No post with that ID exists, or it is not in this workspace.\n 429 rate_limit_exceeded: You sent too many requests this minute.","operationId":"get_post","security":["79b41e5e-ef00-4a94-acca-fc9ed1a5fccb"],"parameters":["1b30ac53-43ff-4523-b70b-de2f19637a69","5550a8f4-507c-4d4e-8800-8400d4bb6abd","4a01c354-75ad-4932-b582-a878cede076e"],"responses":{"200":"f499fef4-863d-443b-93cd-c738aee82b1c","400":"cf680d7e-0e63-4f96-b21a-16e4909cd7ef","401":"ed8336c9-d0a7-4de3-a279-5beeea73b686","403":"21e84ba6-458b-4ffc-8562-efdad2f2e758","404":"0938533a-f9b4-4575-ad75-815bf5bdb924","422":"608a7ade-6358-49c0-8873-990764f8db52","429":"0252b592-7d28-40c4-83d4-3d0086d30831","500":"3bdb2f84-1f56-4517-8c7f-8757fee3d971"},"method":"get","type":"path","servers":["09d2689e-ff2e-4792-a0cf-48865ead84da"],"path":"/api/businesses/{business_id}/posts/{post_id}","baseUrlOptions":["https://api.mymarky.ai"],"title":"Get post","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"1b30ac53-43ff-4523-b70b-de2f19637a69":{"name":"business_id","in":"path","required":true,"schema":{"type":"string","description":"The workspace ID (a UUID from list_workspaces). Named business_id for backward compatibility; workspaces were called businesses.","title":"Business Id","isRequired":true,"uniqueKey":"","typeLabel":"string"},"description":"The workspace ID (a UUID from list_workspaces). Named business_id for backward compatibility; workspaces were called businesses."},"5550a8f4-507c-4d4e-8800-8400d4bb6abd":{"name":"post_id","in":"path","required":true,"schema":{"type":"string","description":"A UUID identifier.","format":"uuid","title":"Post Id","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"A UUID identifier."},"4a01c354-75ad-4932-b582-a878cede076e":{"name":"Marky-Version","in":"header","required":false,"schema":{"type":"string","enum":["2026-04-08","2026-07-17","2026-08-02","2026-08-04","2026-08-06","2026-10-30","2026-10-31","2026-11-03"],"example":"2026-11-03","isRequired":false,"description":"Opt into a dated API version. Omit to stay on the floor (2026-04-08) forever — unpinned clients never break. Pin to a newer date (e.g. 2026-11-03) to receive the newest response shapes. Unknown values fall back to the floor. See https://docs.mymarky.ai for the versioning model.","uniqueKey":"","typeLabel":"enum\u003cstring>"},"description":"Opt into a dated API version. Omit to stay on the floor (2026-04-08) forever — unpinned clients never break. Pin to a newer date (e.g. 2026-11-03) to receive the newest response shapes. Unknown values fall back to the floor. See https://docs.mymarky.ai for the versioning model."}},"responses":{"f499fef4-863d-443b-93cd-c738aee82b1c":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"id":{"type":"string","title":"Id","description":"Post ID","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"business_id":{"type":"string","title":"Business Id","description":"Workspace this post belongs to","isRequired":true,"uniqueKey":"business_id","typeLabel":"string"},"created_at":{"type":"string","title":"Created At","description":"When the post was created","isRequired":true,"uniqueKey":"created_at","typeLabel":"string"},"url":{"type":"string","title":"Url","description":"Link to view this post in the Marky app (openable/shareable — show it to the user). This is where the post lives in Marky; `link` is the outbound URL published with the post.","readOnly":true,"isRequired":true,"uniqueKey":"url","typeLabel":"string"},"delivery":{"oneOf":[{"type":"string","title":"Delivery","description":"What actually reached the platforms, from publish_results: 'delivered' (every platform succeeded), 'partial' (some succeeded, some failed), 'failed' (every platform failed), 'pending' (still in progress). Null when no publish has been attempted. Prefer this over `status` to tell the user whether a post went out.","enum":["pending","delivered","partial","failed"],"isRequired":true,"uniqueKey":"delivery.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Delivery","description":"What actually reached the platforms, from publish_results: 'delivered' (every platform succeeded), 'partial' (some succeeded, some failed), 'failed' (every platform failed), 'pending' (still in progress). Null when no publish has been attempted. Prefer this over `status` to tell the user whether a post went out.","isRequired":true,"uniqueKey":"delivery.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"delivery","typeLabel":"enum\u003cstring> | null"},"scheduled_posts_url":{"oneOf":[{"type":"string","title":"Scheduled Posts Url","description":"Link to the workspace's scheduled-posts list in the Marky app — where the user sees this post waiting in the lineup. Present once the post is SCHEDULED; null otherwise.","isRequired":true,"uniqueKey":"scheduled_posts_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Scheduled Posts Url","description":"Link to the workspace's scheduled-posts list in the Marky app — where the user sees this post waiting in the lineup. Present once the post is SCHEDULED; null otherwise.","isRequired":true,"uniqueKey":"scheduled_posts_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"scheduled_posts_url","typeLabel":"string | null"},"caption":{"oneOf":[{"type":"string","title":"Caption","description":"Post caption text","uniqueKey":"caption.oneOf.0","typeLabel":"string"},{"type":"null","title":"Caption","description":"Post caption text","uniqueKey":"caption.oneOf.1","typeLabel":"null"}],"uniqueKey":"caption","typeLabel":"string | null"},"status":{"oneOf":[{"type":"string","title":"Status","description":"Post status. One of: NEW (draft awaiting your team's review, incl. freshly generated), DRAFT (approved by a reviewer on your team), REJECTED (declined by a reviewer), SCHEDULED (queued for a future time), PUBLISHED (already posted). DRAFT/REJECTED are your team's review verdicts — Marky does not gate publishing on them. Same values the `list_posts` status filter accepts.","uniqueKey":"status.oneOf.0","typeLabel":"string"},{"type":"null","title":"Status","description":"Post status. One of: NEW (draft awaiting your team's review, incl. freshly generated), DRAFT (approved by a reviewer on your team), REJECTED (declined by a reviewer), SCHEDULED (queued for a future time), PUBLISHED (already posted). DRAFT/REJECTED are your team's review verdicts — Marky does not gate publishing on them. Same values the `list_posts` status filter accepts.","uniqueKey":"status.oneOf.1","typeLabel":"null"}],"uniqueKey":"status","typeLabel":"string | null"},"media_urls":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"media_urls.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Media Urls","description":"Attached media URLs","uniqueKey":"media_urls.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Media Urls","description":"Attached media URLs","uniqueKey":"media_urls.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_urls","typeLabel":"string[] | null"},"media_details":{"oneOf":[{"type":"array","items":{"properties":{"id":{"type":"string","title":"Id","description":"Media ID in the workspace's library","isRequired":true,"uniqueKey":"media_details.oneOf.0.items.[INDEX].id","typeLabel":"string"},"url":{"oneOf":[{"type":"string","title":"Url","description":"Public URL of the media","uniqueKey":"media_details.oneOf.0.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","description":"Public URL of the media","uniqueKey":"media_details.oneOf.0.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_details.oneOf.0.items.[INDEX].url","typeLabel":"string | null"},"type":{"oneOf":[{"type":"string","title":"Type","description":"'image', 'video', or 'audio'","uniqueKey":"media_details.oneOf.0.items.[INDEX].type.oneOf.0","typeLabel":"string"},{"type":"null","title":"Type","description":"'image', 'video', or 'audio'","uniqueKey":"media_details.oneOf.0.items.[INDEX].type.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_details.oneOf.0.items.[INDEX].type","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"What the media shows, generated by a vision model — including any headline or offer text rendered into the graphic, which on a designed post is usually the whole message. Null if not described yet.","uniqueKey":"media_details.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"What the media shows, generated by a vision model — including any headline or offer text rendered into the graphic, which on a designed post is usually the whole message. Null if not described yet.","uniqueKey":"media_details.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_details.oneOf.0.items.[INDEX].description","typeLabel":"string | null"},"transcript":{"oneOf":[{"type":"string","title":"Transcript","description":"Spoken words in the video or audio, if any.","uniqueKey":"media_details.oneOf.0.items.[INDEX].transcript.oneOf.0","typeLabel":"string"},{"type":"null","title":"Transcript","description":"Spoken words in the video or audio, if any.","uniqueKey":"media_details.oneOf.0.items.[INDEX].transcript.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_details.oneOf.0.items.[INDEX].transcript","typeLabel":"string | null"},"duration":{"oneOf":[{"type":"number","title":"Duration","description":"Length in seconds, for video and audio.","uniqueKey":"media_details.oneOf.0.items.[INDEX].duration.oneOf.0","typeLabel":"number"},{"type":"null","title":"Duration","description":"Length in seconds, for video and audio.","uniqueKey":"media_details.oneOf.0.items.[INDEX].duration.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_details.oneOf.0.items.[INDEX].duration","typeLabel":"number | null"}},"type":"object","required":["id"],"title":"PostMedia","description":"One piece of media attached to a post, described rather than just addressed.","uniqueKey":"media_details.oneOf.0.items.[INDEX]","typeLabel":"PostMedia · object"},"title":"Media Details","description":"The same attached media as `media_urls`, in the same order, but with each item's description and transcript. Use this when analysing what content performs: the creative is usually the reason a post did well, and a URL alone tells you nothing about what was in it.","uniqueKey":"media_details.oneOf.0","typeLabel":"PostMedia · object[]"},{"type":"null","title":"Media Details","description":"The same attached media as `media_urls`, in the same order, but with each item's description and transcript. Use this when analysing what content performs: the creative is usually the reason a post did well, and a URL alone tells you nothing about what was in it.","uniqueKey":"media_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"media_details","typeLabel":"PostMedia · object[] | null"},"design_id":{"oneOf":[{"type":"string","title":"Design Id","description":"The design attached to this post, if any. Media is derived from this design; edit it with revise_post_design or create_design + a new link.","uniqueKey":"design_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Design Id","description":"The design attached to this post, if any. Media is derived from this design; edit it with revise_post_design or create_design + a new link.","uniqueKey":"design_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"design_id","typeLabel":"string | null"},"cover_media_id":{"oneOf":[{"type":"string","title":"Cover Media Id","description":"Media id of the cover image shown before this post's video plays. Marky generates one from the first frame when you don't send one.","uniqueKey":"cover_media_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Cover Media Id","description":"Media id of the cover image shown before this post's video plays. Marky generates one from the first frame when you don't send one.","uniqueKey":"cover_media_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"cover_media_id","typeLabel":"string | null"},"video_cover_timestamp_ms":{"oneOf":[{"type":"integer","title":"Video Cover Timestamp Ms","description":"The frame (milliseconds from the start) TikTok uses as its cover. Null when nobody has chosen a cover for this post.","uniqueKey":"video_cover_timestamp_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Video Cover Timestamp Ms","description":"The frame (milliseconds from the start) TikTok uses as its cover. Null when nobody has chosen a cover for this post.","uniqueKey":"video_cover_timestamp_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"video_cover_timestamp_ms","typeLabel":"integer | null"},"link":{"oneOf":[{"type":"string","title":"Link","description":"Clickable destination URL for platforms that support link posts: the Facebook link attachment, the Google Business CTA button, and the Pinterest pin destination. Other platforms ignore it — put links in the caption there. Must be http(s).","uniqueKey":"link.oneOf.0","typeLabel":"string"},{"type":"null","title":"Link","description":"Clickable destination URL for platforms that support link posts: the Facebook link attachment, the Google Business CTA button, and the Pinterest pin destination. Other platforms ignore it — put links in the caption there. Must be http(s).","uniqueKey":"link.oneOf.1","typeLabel":"null"}],"uniqueKey":"link","typeLabel":"string | null"},"restrict_publish_to":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"restrict_publish_to.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Restrict Publish To","description":"Platforms this post is restricted to. Null means ALL connected platforms.","uniqueKey":"restrict_publish_to.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Restrict Publish To","description":"Platforms this post is restricted to. Null means ALL connected platforms.","uniqueKey":"restrict_publish_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"restrict_publish_to","typeLabel":"string[] | null"},"restrict_publish_to_integration_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"restrict_publish_to_integration_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Restrict Publish To Integration Ids","description":"Exact connected accounts (integration ids) this post is restricted to. Null means targeting is platform-level (see restrict_publish_to).","uniqueKey":"restrict_publish_to_integration_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Restrict Publish To Integration Ids","description":"Exact connected accounts (integration ids) this post is restricted to. Null means targeting is platform-level (see restrict_publish_to).","uniqueKey":"restrict_publish_to_integration_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"restrict_publish_to_integration_ids","typeLabel":"string[] | null"},"scheduled_publish_time":{"oneOf":[{"type":"string","title":"Scheduled Publish Time","description":"The exact time this post is scheduled to publish (set via `schedule`). Null for drafts, queued posts, and already-published posts.","uniqueKey":"scheduled_publish_time.oneOf.0","typeLabel":"string"},{"type":"null","title":"Scheduled Publish Time","description":"The exact time this post is scheduled to publish (set via `schedule`). Null for drafts, queued posts, and already-published posts.","uniqueKey":"scheduled_publish_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"scheduled_publish_time","typeLabel":"string | null"},"scheduled_publish_time_local":{"oneOf":[{"type":"string","title":"Scheduled Publish Time Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"scheduled_publish_time_local.oneOf.0","typeLabel":"string"},{"type":"null","title":"Scheduled Publish Time Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"scheduled_publish_time_local.oneOf.1","typeLabel":"null"}],"uniqueKey":"scheduled_publish_time_local","typeLabel":"string | null"},"timezone":{"oneOf":[{"type":"string","title":"Timezone","description":"IANA timezone the `*_local` times are in: the workspace's calendar timezone, or \"UTC\" when the workspace hasn't set one (see `timezone_source`).","uniqueKey":"timezone.oneOf.0","typeLabel":"string"},{"type":"null","title":"Timezone","description":"IANA timezone the `*_local` times are in: the workspace's calendar timezone, or \"UTC\" when the workspace hasn't set one (see `timezone_source`).","uniqueKey":"timezone.oneOf.1","typeLabel":"null"}],"uniqueKey":"timezone","typeLabel":"string | null"},"timezone_source":{"oneOf":[{"type":"string","title":"Timezone Source","description":"Where `timezone` came from: `business` (the workspace's own setting) or `unset_utc` (no timezone saved yet, so times are shown in UTC).","enum":["business","unset_utc"],"uniqueKey":"timezone_source.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Timezone Source","description":"Where `timezone` came from: `business` (the workspace's own setting) or `unset_utc` (no timezone saved yet, so times are shown in UTC).","uniqueKey":"timezone_source.oneOf.1","typeLabel":"null"}],"uniqueKey":"timezone_source","typeLabel":"enum\u003cstring> | null"},"published_at":{"oneOf":[{"type":"string","title":"Published At","description":"When the post was actually published (past timestamp). Null until it publishes.","uniqueKey":"published_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Published At","description":"When the post was actually published (past timestamp). Null until it publishes.","uniqueKey":"published_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"published_at","typeLabel":"string | null"},"creation_method":{"oneOf":[{"type":"string","title":"CreationMethod","description":"Where the post was created: web, mobile, api (REST with an API key), mcp (an MCP client), max (the built-in assistant), onboarding (the first batch for a new workspace), duplicate, recurrence (the next occurrence of a recurring post), backup_fill (a backup copied into an empty queue slot), or internal. Null for posts created before 2026-10-30.","enum":["web","mobile","api","mcp","max","onboarding","duplicate","recurrence","backup_fill","internal"],"uniqueKey":"creation_method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Where the post was created: web, mobile, api (REST with an API key), mcp (an MCP client), max (the built-in assistant), onboarding (the first batch for a new workspace), duplicate, recurrence (the next occurrence of a recurring post), backup_fill (a backup copied into an empty queue slot), or internal. Null for posts created before 2026-10-30.","uniqueKey":"creation_method.oneOf.1","typeLabel":"null"}],"uniqueKey":"creation_method","typeLabel":"enum\u003cstring> | null"},"metadata":{"oneOf":[{"type":"object","title":"Metadata","description":"Caller-defined string key/value pairs set at create/update time — your own analytics dimensions (e.g. media_type, format, style, hook, topic). Marky returns them verbatim and never interprets them. Keys starting with `marky_` are Marky's own (e.g. the copy date below); any you send are dropped.","additionalProperties":{"type":"string","uniqueKey":"metadata.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"metadata.oneOf.0","typeLabel":"Metadata · object"},{"type":"null","title":"Metadata","description":"Caller-defined string key/value pairs set at create/update time — your own analytics dimensions (e.g. media_type, format, style, hook, topic). Marky returns them verbatim and never interprets them. Keys starting with `marky_` are Marky's own (e.g. the copy date below); any you send are dropped.","uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata","typeLabel":"Metadata · object | null"},"signature_id":{"oneOf":[{"type":"string","title":"Signature Id","description":"The saved signature (e.g. a compliance disclaimer) appended to the caption when this post was created, or null. It is applied once: editing or rescheduling the post never appends it again.","uniqueKey":"signature_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Signature Id","description":"The saved signature (e.g. a compliance disclaimer) appended to the caption when this post was created, or null. It is applied once: editing or rescheduling the post never appends it again.","uniqueKey":"signature_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"signature_id","typeLabel":"string | null"},"copy_date":{"oneOf":[{"type":"string","title":"Copy Date","description":"The day this caption is about, read from the caption when it was written: an upcoming holiday of the workspace's country, one of the workspace's events, or an explicit date like 'September 25'. Never 'today'/'tomorrow'. Queueing never places the post after this day. Null when the caption names no date.","format":"date","uniqueKey":"copy_date.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","title":"Copy Date","description":"The day this caption is about, read from the caption when it was written: an upcoming holiday of the workspace's country, one of the workspace's events, or an explicit date like 'September 25'. Never 'today'/'tomorrow'. Queueing never places the post after this day. Null when the caption names no date.","uniqueKey":"copy_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"copy_date","typeLabel":"string\u003cdate> | null"},"copy_moment":{"oneOf":[{"type":"string","title":"Copy Moment","description":"The moment the caption names, e.g. 'National Day'. Null for a plain date.","uniqueKey":"copy_moment.oneOf.0","typeLabel":"string"},{"type":"null","title":"Copy Moment","description":"The moment the caption names, e.g. 'National Day'. Null for a plain date.","uniqueKey":"copy_moment.oneOf.1","typeLabel":"null"}],"uniqueKey":"copy_moment","typeLabel":"string | null"},"suggested_publish_time":{"oneOf":[{"type":"string","title":"Suggested Publish Time","description":"When to publish on `copy_date`: the workspace's first posting-schedule slot that day, else 10:00 local. Offer it as the post's date; schedule with `at` to use it.","uniqueKey":"suggested_publish_time.oneOf.0","typeLabel":"string"},{"type":"null","title":"Suggested Publish Time","description":"When to publish on `copy_date`: the workspace's first posting-schedule slot that day, else 10:00 local. Offer it as the post's date; schedule with `at` to use it.","uniqueKey":"suggested_publish_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"suggested_publish_time","typeLabel":"string | null"},"suggested_publish_time_local":{"oneOf":[{"type":"string","title":"Suggested Publish Time Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"suggested_publish_time_local.oneOf.0","typeLabel":"string"},{"type":"null","title":"Suggested Publish Time Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"suggested_publish_time_local.oneOf.1","typeLabel":"null"}],"uniqueKey":"suggested_publish_time_local","typeLabel":"string | null"},"platform_overrides":{"oneOf":[{"type":"array","items":{"properties":{"platform":{"type":"string","title":"Platform","description":"Platform this override applies to (e.g. instagram, linkedIn, twitter). Case-insensitive.","x-extensible-enum":["facebook","instagram","twitter","linkedIn","linkedInProfile","tiktok","pinterest","googleBusiness","instagramStory","youtube","goHighLevel"],"isRequired":true,"uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].platform","typeLabel":"string"},"caption":{"oneOf":[{"type":"string","title":"Caption","description":"Caption this platform gets instead of the post's caption. Tailor length, hashtag count, and link placement to the platform.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].caption.oneOf.0","typeLabel":"string"},{"type":"null","title":"Caption","description":"Caption this platform gets instead of the post's caption. Tailor length, hashtag count, and link placement to the platform.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].caption.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].caption","typeLabel":"string | null"},"media_urls":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].media_urls.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Media Urls","description":"Media this platform gets instead of the post's media_urls.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].media_urls.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Media Urls","description":"Media this platform gets instead of the post's media_urls.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].media_urls.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].media_urls","typeLabel":"string[] | null"},"title":{"oneOf":[{"type":"string","title":"Title","description":"Title, on platforms that have one (Pinterest pin title, YouTube video title).","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].title.oneOf.0","typeLabel":"string"},{"type":"null","title":"Title","description":"Title, on platforms that have one (Pinterest pin title, YouTube video title).","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].title.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].title","typeLabel":"string | null"},"link":{"oneOf":[{"type":"string","title":"Link","description":"Destination link, on platforms that support one (e.g. Pinterest, Google Business).","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].link.oneOf.0","typeLabel":"string"},{"type":"null","title":"Link","description":"Destination link, on platforms that support one (e.g. Pinterest, Google Business).","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].link.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].link","typeLabel":"string | null"},"first_comment":{"oneOf":[{"type":"string","title":"First Comment","description":"Comment posted right after publishing. Applied on Facebook and YouTube, and on Instagram feed posts when the workspace's Instagram account was connected with comment permission. Otherwise it is ignored and the response carries a warning: `first_comment_needs_reconnect` (reconnect Instagram) or `first_comment_unsupported_platform`.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].first_comment.oneOf.0","typeLabel":"string"},{"type":"null","title":"First Comment","description":"Comment posted right after publishing. Applied on Facebook and YouTube, and on Instagram feed posts when the workspace's Instagram account was connected with comment permission. Otherwise it is ignored and the response carries a warning: `first_comment_needs_reconnect` (reconnect Instagram) or `first_comment_unsupported_platform`.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].first_comment.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform_overrides.oneOf.0.items.[INDEX].first_comment","typeLabel":"string | null"}},"additionalProperties":false,"type":"object","required":["platform"],"title":"PlatformOverrideModel","description":"Per-platform variant of a post's content.\n\nAt publish time each platform uses its override field when set and falls\nback to the post's own field when not. Overrides for platforms the post\ndoesn't publish to are inert.","uniqueKey":"platform_overrides.oneOf.0.items.[INDEX]","typeLabel":"PlatformOverrideModel · object"},"title":"Platform Overrides","description":"Per-platform content overrides on this post, if any. Each platform publishes its override fields where set, the post's own fields otherwise.","uniqueKey":"platform_overrides.oneOf.0","typeLabel":"PlatformOverrideModel · object[]"},{"type":"null","title":"Platform Overrides","description":"Per-platform content overrides on this post, if any. Each platform publishes its override fields where set, the post's own fields otherwise.","uniqueKey":"platform_overrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform_overrides","typeLabel":"PlatformOverrideModel · object[] | null"},"publish_results":{"items":{"properties":{"platform":{"type":"string","title":"Platform","description":"Platform identifier (facebook, instagram, etc.)","isRequired":true,"uniqueKey":"publish_results.items.[INDEX].platform","typeLabel":"string"},"status":{"type":"string","title":"Status","description":"Publish status on this platform: success, failed, in_progress, etc.","isRequired":true,"uniqueKey":"publish_results.items.[INDEX].status","typeLabel":"string"},"publish_id":{"oneOf":[{"type":"string","title":"Publish Id","description":"External post ID on the platform — use with `GET /businesses/{business_id}/integrations/{integration_id}/posts/{external_post_id}/stats`","uniqueKey":"publish_results.items.[INDEX].publish_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Publish Id","description":"External post ID on the platform — use with `GET /businesses/{business_id}/integrations/{integration_id}/posts/{external_post_id}/stats`","uniqueKey":"publish_results.items.[INDEX].publish_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].publish_id","typeLabel":"string | null"},"post_url":{"oneOf":[{"type":"string","title":"Post Url","description":"Public URL of the published post on the platform","uniqueKey":"publish_results.items.[INDEX].post_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Post Url","description":"Public URL of the published post on the platform","uniqueKey":"publish_results.items.[INDEX].post_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].post_url","typeLabel":"string | null"},"error_type":{"oneOf":[{"type":"string","title":"Error Type","description":"Error type if status is failed (e.g. REFRESH_TOKEN_EXPIRED, TIMEOUT)","uniqueKey":"publish_results.items.[INDEX].error_type.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error Type","description":"Error type if status is failed (e.g. REFRESH_TOKEN_EXPIRED, TIMEOUT)","uniqueKey":"publish_results.items.[INDEX].error_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].error_type","typeLabel":"string | null"},"error_message":{"oneOf":[{"type":"string","title":"Error Message","description":"The platform's own error message if status is failed, as the platform worded it","uniqueKey":"publish_results.items.[INDEX].error_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error Message","description":"The platform's own error message if status is failed, as the platform worded it","uniqueKey":"publish_results.items.[INDEX].error_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].error_message","typeLabel":"string | null"},"customer_message":{"oneOf":[{"type":"string","title":"Customer Message","description":"If status is failed: what went wrong, in plain words for the person who made the post. Null when there is no plain-words version; show error_message instead.","uniqueKey":"publish_results.items.[INDEX].customer_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Customer Message","description":"If status is failed: what went wrong, in plain words for the person who made the post. Null when there is no plain-words version; show error_message instead.","uniqueKey":"publish_results.items.[INDEX].customer_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].customer_message","typeLabel":"string | null"},"customer_fix":{"oneOf":[{"type":"string","title":"Customer Fix","description":"If status is failed: what to do so the post publishes. Present whenever customer_message is.","uniqueKey":"publish_results.items.[INDEX].customer_fix.oneOf.0","typeLabel":"string"},{"type":"null","title":"Customer Fix","description":"If status is failed: what to do so the post publishes. Present whenever customer_message is.","uniqueKey":"publish_results.items.[INDEX].customer_fix.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].customer_fix","typeLabel":"string | null"},"integration_id":{"oneOf":[{"type":"string","title":"Integration Id","description":"The exact connected account this result belongs to. Distinguishes accounts when a workspace has several on one platform.","uniqueKey":"publish_results.items.[INDEX].integration_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Integration Id","description":"The exact connected account this result belongs to. Distinguishes accounts when a workspace has several on one platform.","uniqueKey":"publish_results.items.[INDEX].integration_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].integration_id","typeLabel":"string | null"},"updated_at":{"oneOf":[{"type":"string","title":"Updated At","description":"When this result was last updated","uniqueKey":"publish_results.items.[INDEX].updated_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Updated At","description":"When this result was last updated","uniqueKey":"publish_results.items.[INDEX].updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_results.items.[INDEX].updated_at","typeLabel":"string | null"}},"type":"object","required":["platform","status"],"title":"PublishResultResponse","uniqueKey":"publish_results.items.[INDEX]","typeLabel":"PublishResultResponse · object"},"type":"array","title":"Publish Results","description":"Per-platform publish outcomes — one entry per platform this post was sent to. Poll this until every entry has a terminal status (`success` or `failed`) to know publishing is complete.","uniqueKey":"publish_results","typeLabel":"PublishResultResponse · object[]"},"queue":{"oneOf":[{"type":"object","title":"QueueInfo","description":"Daily-queue placement. Present only when the post is in a recurring daily queue (status SCHEDULED with no `adhoc_publish_time`). Null for drafts, adhoc-scheduled, and published posts.","required":["queue_id","position"],"properties":{"queue_id":{"type":"string","title":"Queue Id","description":"ID of the daily queue this post belongs to.","isRequired":true,"uniqueKey":"queue.oneOf.0.queue_id","typeLabel":"string"},"position":{"type":"integer","format":"int32","title":"Position","description":"1-based rank among the queued posts (1 = next to publish).","isRequired":true,"uniqueKey":"queue.oneOf.0.position","typeLabel":"integer\u003cint32>"},"estimated_publish_time":{"oneOf":[{"type":"string","title":"Estimated Publish Time","description":"Best estimate of when this post will publish, projected from the queue's recurring timeslots. Ignores jitter and skipped slots, so treat it as approximate. Null if it can't be computed.","uniqueKey":"queue.oneOf.0.estimated_publish_time.oneOf.0","typeLabel":"string"},{"type":"null","title":"Estimated Publish Time","description":"Best estimate of when this post will publish, projected from the queue's recurring timeslots. Ignores jitter and skipped slots, so treat it as approximate. Null if it can't be computed.","uniqueKey":"queue.oneOf.0.estimated_publish_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"queue.oneOf.0.estimated_publish_time","typeLabel":"string | null"},"estimated_publish_time_local":{"oneOf":[{"type":"string","title":"Estimated Publish Time Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"queue.oneOf.0.estimated_publish_time_local.oneOf.0","typeLabel":"string"},{"type":"null","title":"Estimated Publish Time Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"queue.oneOf.0.estimated_publish_time_local.oneOf.1","typeLabel":"null"}],"uniqueKey":"queue.oneOf.0.estimated_publish_time_local","typeLabel":"string | null"},"queue_runs_dry_at":{"oneOf":[{"type":"string","title":"Queue Runs Dry At","description":"Estimated publish time of the LAST post in this queue: when it runs dry. Same estimate rules as estimated_publish_time.","uniqueKey":"queue.oneOf.0.queue_runs_dry_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Queue Runs Dry At","description":"Estimated publish time of the LAST post in this queue: when it runs dry. Same estimate rules as estimated_publish_time.","uniqueKey":"queue.oneOf.0.queue_runs_dry_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"queue.oneOf.0.queue_runs_dry_at","typeLabel":"string | null"},"queue_runs_dry_at_local":{"oneOf":[{"type":"string","title":"Queue Runs Dry At Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"queue.oneOf.0.queue_runs_dry_at_local.oneOf.0","typeLabel":"string"},{"type":"null","title":"Queue Runs Dry At Local","description":"The same moment in the workspace's timezone, ready to show a person, e.g. \"Wed Sep 23, 6:00 PM MSK\". Quote it as-is instead of converting the UTC value.","uniqueKey":"queue.oneOf.0.queue_runs_dry_at_local.oneOf.1","typeLabel":"null"}],"uniqueKey":"queue.oneOf.0.queue_runs_dry_at_local","typeLabel":"string | null"},"warnings":{"items":{"properties":{"field":{"type":"string","title":"Field","description":"The field this warning is about, e.g. 'strategy', 'caption' or 'platform_overrides[0].caption'.","isRequired":true,"uniqueKey":"queue.oneOf.0.warnings.items.[INDEX].field","typeLabel":"string"},"level":{"type":"string","enum":["approaching_limit","over_limit","advisory"],"title":"Level","description":"'approaching_limit' = past the soft limit, act soon. 'over_limit' = past the hard limit, act now. 'advisory' = worth fixing before this publishes, but it may be intended.","isRequired":true,"uniqueKey":"queue.oneOf.0.warnings.items.[INDEX].level","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Plain-language explanation of what is wrong and how to fix it.","isRequired":true,"uniqueKey":"queue.oneOf.0.warnings.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Stable machine-readable code, e.g. 'cta_without_contact'. Branch on this, never on the message. Null on the older size-budget warnings.","uniqueKey":"queue.oneOf.0.warnings.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Stable machine-readable code, e.g. 'cta_without_contact'. Branch on this, never on the message. Null on the older size-budget warnings.","uniqueKey":"queue.oneOf.0.warnings.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"queue.oneOf.0.warnings.items.[INDEX].code","typeLabel":"string | null"}},"type":"object","required":["field","level","message"],"title":"FieldWarning","description":"One \"this is fine, but fix it soon\" note about a field the caller just read.\n\nA warning never blocks the write — see BusinessResponse.warnings for why.\nThis is the ONE non-blocking warnings shape (README F6): workspace size\nbudgets and post caption lint both use it, and so will later checks, so a\ncaller that loops over `warnings` keeps working as codes are added.","uniqueKey":"queue.oneOf.0.warnings.items.[INDEX]","typeLabel":"FieldWarning · object"},"type":"array","title":"Warnings","description":"Advisory notes about WHEN this post goes out; they never block. DATE_BOUND_COPY: the caption says 'today', a weekday, 'this week'... and the post lands on a different day. FAR_FUTURE: it lands more than 90 days out. Quote them to the user.","uniqueKey":"queue.oneOf.0.warnings","typeLabel":"FieldWarning · object[]"}},"uniqueKey":"queue.oneOf.0","typeLabel":"QueueInfo · object"},{"type":"null","description":"Daily-queue placement. Present only when the post is in a recurring daily queue (status SCHEDULED with no `adhoc_publish_time`). Null for drafts, adhoc-scheduled, and published posts.","uniqueKey":"queue.oneOf.1","typeLabel":"null"}],"uniqueKey":"queue","typeLabel":"QueueInfo · object | null"},"publish_readiness":{"oneOf":[{"type":"object","title":"PublishReadiness","description":"Returned by queue, schedule and publish: which platforms this post will actually publish to, and which connected accounts won't get it and why. Null on reads.","required":["will_publish_to"],"properties":{"will_publish_to":{"items":{"type":"string","uniqueKey":"publish_readiness.oneOf.0.will_publish_to.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Will Publish To","description":"Platforms that will receive the post. Empty means nothing connected can publish it.","isRequired":true,"uniqueKey":"publish_readiness.oneOf.0.will_publish_to","typeLabel":"string[]"},"blocked":{"items":{"properties":{"platform":{"type":"string","title":"Platform","description":"Platform identifier (facebook, instagram, etc.)","isRequired":true,"uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].platform","typeLabel":"string"},"integration_id":{"type":"string","title":"Integration Id","description":"The account that won't receive the post.","isRequired":true,"uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].integration_id","typeLabel":"string"},"reason":{"type":"string","title":"Reason","description":"Stable reason code, e.g. INTEGRATION_DELETED (disconnected or needs a reconnect), PAGE_NOT_FOUND (no Page selected), MEDIA_FORMAT_ERROR (this platform needs a photo or video).","isRequired":true,"uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].reason","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Plain-language explanation and fix.","isRequired":true,"uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].message","typeLabel":"string"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Where the user reconnects this account, when reconnecting is the fix. Null otherwise.","uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Where the user reconnects this account, when reconnecting is the fix. Null otherwise.","uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX].reconnect_url","typeLabel":"string | null"}},"type":"object","required":["platform","integration_id","reason","message"],"title":"BlockedPlatform","description":"One connected account that will NOT receive this post, and why.","uniqueKey":"publish_readiness.oneOf.0.blocked.items.[INDEX]","typeLabel":"BlockedPlatform · object"},"type":"array","title":"Blocked","description":"Accounts the post was aimed at that won't receive it, each with the reason and fix.","uniqueKey":"publish_readiness.oneOf.0.blocked","typeLabel":"BlockedPlatform · object[]"},"not_connected":{"items":{"type":"string","uniqueKey":"publish_readiness.oneOf.0.not_connected.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Not Connected","description":"Platforms the post was aimed at (via restrict_publish_to) that have no account connected. The post will NOT go to these. Connect the account, then schedule or update the post again.","uniqueKey":"publish_readiness.oneOf.0.not_connected","typeLabel":"string[]"}},"uniqueKey":"publish_readiness.oneOf.0","typeLabel":"PublishReadiness · object"},{"type":"null","description":"Returned by queue, schedule and publish: which platforms this post will actually publish to, and which connected accounts won't get it and why. Null on reads.","uniqueKey":"publish_readiness.oneOf.1","typeLabel":"null"}],"uniqueKey":"publish_readiness","typeLabel":"PublishReadiness · object | null"},"repeating_cron":{"oneOf":[{"type":"string","title":"Repeating Cron","description":"If set, this post repeats: a standard 5-field cron string (e.g. '0 9 * * 1' = every Monday 9am UTC). When it publishes, Marky auto-creates the next occurrence at the next cron time. Null = a one-off post.","uniqueKey":"repeating_cron.oneOf.0","typeLabel":"string"},{"type":"null","title":"Repeating Cron","description":"If set, this post repeats: a standard 5-field cron string (e.g. '0 9 * * 1' = every Monday 9am UTC). When it publishes, Marky auto-creates the next occurrence at the next cron time. Null = a one-off post.","uniqueKey":"repeating_cron.oneOf.1","typeLabel":"null"}],"uniqueKey":"repeating_cron","typeLabel":"string | null"},"warnings":{"items":{"properties":{"field":{"type":"string","title":"Field","description":"The field this warning is about, e.g. 'strategy', 'caption' or 'platform_overrides[0].caption'.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].field","typeLabel":"string"},"level":{"type":"string","enum":["approaching_limit","over_limit","advisory"],"title":"Level","description":"'approaching_limit' = past the soft limit, act soon. 'over_limit' = past the hard limit, act now. 'advisory' = worth fixing before this publishes, but it may be intended.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].level","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Plain-language explanation of what is wrong and how to fix it.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Stable machine-readable code, e.g. 'cta_without_contact'. Branch on this, never on the message. Null on the older size-budget warnings.","uniqueKey":"warnings.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Stable machine-readable code, e.g. 'cta_without_contact'. Branch on this, never on the message. Null on the older size-budget warnings.","uniqueKey":"warnings.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"warnings.items.[INDEX].code","typeLabel":"string | null"}},"type":"object","required":["field","level","message"],"title":"FieldWarning","description":"One \"this is fine, but fix it soon\" note about a field the caller just read.\n\nA warning never blocks the write — see BusinessResponse.warnings for why.\nThis is the ONE non-blocking warnings shape (README F6): workspace size\nbudgets and post caption lint both use it, and so will later checks, so a\ncaller that loops over `warnings` keeps working as codes are added.","uniqueKey":"warnings.items.[INDEX]","typeLabel":"FieldWarning · object"},"type":"array","title":"Warnings","description":"Non-blocking notes about this post's captions, e.g. a call-to-action with no link or phone ('cta_without_contact'), or a caption in a different language from the workspace ('language_mismatch'). Empty when there is nothing to fix. Fix them with update_post before the post publishes; they never block anything.","uniqueKey":"warnings","typeLabel":"FieldWarning · object[]"},"updated_at":{"oneOf":[{"type":"string","title":"Updated At","description":"Last update time","uniqueKey":"updated_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Updated At","description":"Last update time","uniqueKey":"updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_at","typeLabel":"string | null"},"revision_id":{"oneOf":[{"type":"string","title":"Revision Id","description":"Id of the undo record this write created. Pass it to revert_revisions to put the record back exactly as it was before this call. Set only on the response to a write; null when you read the record.","uniqueKey":"revision_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Revision Id","description":"Id of the undo record this write created. Pass it to revert_revisions to put the record back exactly as it was before this call. Set only on the response to a write; null when you read the record.","uniqueKey":"revision_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"revision_id","typeLabel":"string | null"}},"type":"object","required":["id","business_id","created_at","url","delivery","scheduled_posts_url"],"title":"PostResponse","uniqueKey":"","typeLabel":"PostResponse · object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","business_id":"\u003cstring>","created_at":"\u003cstring>","url":"\u003cstring>","delivery":"pending","scheduled_posts_url":"\u003cstring>","caption":"\u003cstring>","status":"\u003cstring>","media_urls":["\u003cstring>"],"media_details":[{"id":"\u003cstring>","url":"\u003cstring>","type":"\u003cstring>","description":"\u003cstring>","transcript":"\u003cstring>","duration":123}],"design_id":"\u003cstring>","cover_media_id":"\u003cstring>","video_cover_timestamp_ms":123,"link":"\u003cstring>","restrict_publish_to":["\u003cstring>"],"restrict_publish_to_integration_ids":["\u003cstring>"],"scheduled_publish_time":"\u003cstring>","scheduled_publish_time_local":"\u003cstring>","timezone":"\u003cstring>","timezone_source":"business","published_at":"\u003cstring>","creation_method":"web","metadata":{},"signature_id":"\u003cstring>","copy_date":"2023-12-25","copy_moment":"\u003cstring>","suggested_publish_time":"\u003cstring>","suggested_publish_time_local":"\u003cstring>","platform_overrides":[{"platform":"\u003cstring>","caption":"\u003cstring>","media_urls":["\u003cstring>"],"title":"\u003cstring>","link":"\u003cstring>","first_comment":"\u003cstring>"}],"publish_results":[{"platform":"\u003cstring>","status":"\u003cstring>","publish_id":"\u003cstring>","post_url":"\u003cstring>","error_type":"\u003cstring>","error_message":"\u003cstring>","customer_message":"\u003cstring>","customer_fix":"\u003cstring>","integration_id":"\u003cstring>","updated_at":"\u003cstring>"}],"queue":{"queue_id":"\u003cstring>","position":123,"estimated_publish_time":"\u003cstring>","estimated_publish_time_local":"\u003cstring>","queue_runs_dry_at":"\u003cstring>","queue_runs_dry_at_local":"\u003cstring>","warnings":[{"field":"\u003cstring>","level":"approaching_limit","message":"\u003cstring>","code":"\u003cstring>"}]},"publish_readiness":{"will_publish_to":["\u003cstring>"],"blocked":[{"platform":"\u003cstring>","integration_id":"\u003cstring>","reason":"\u003cstring>","message":"\u003cstring>","reconnect_url":"\u003cstring>"}],"not_connected":["\u003cstring>"]},"repeating_cron":"\u003cstring>","warnings":[{"field":"\u003cstring>","level":"approaching_limit","message":"\u003cstring>","code":"\u003cstring>"}],"updated_at":"\u003cstring>","revision_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"},"cf680d7e-0e63-4f96-b21a-16e4909cd7ef":{"description":"Bad request — the input was malformed or otherwise invalid.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"},"ed8336c9-d0a7-4de3-a279-5beeea73b686":{"description":"Authentication failed — the API key is missing or invalid.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"},"21e84ba6-458b-4ffc-8562-efdad2f2e758":{"description":"Forbidden — the key is valid but may not access this resource.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"},"0938533a-f9b4-4575-ad75-815bf5bdb924":{"description":"Not found — no resource matches the id in the path.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"},"608a7ade-6358-49c0-8873-990764f8db52":{"description":"Validation error — one or more fields failed validation.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"},"0252b592-7d28-40c4-83d4-3d0086d30831":{"description":"Rate limited — retry after the window resets (see Retry-After).","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying (RFC 9110 delta-seconds).","schema":{"type":"string"}}},"exampleType":"generated"},"3bdb2f84-1f56-4517-8c7f-8757fee3d971":{"description":"Server error — something failed on our side; retry or quote X-Request-Id.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details. Returned as application/problem+json to clients pinned to 2026-07-17 or later. Match on the stable `code`, never on text.","properties":{"type":{"type":"string","format":"uri","description":"URI for the problem type; dereferences to the docs entry for `code`.","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short human-readable summary of the problem type (the broad error category).","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code, repeated in the body.","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Explanation specific to this occurrence. Display/logging only — do not parse.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"The full set of stable `error.code` values the API can return.\n\nTwo groups: (1) GENERIC codes the global handler derives from the HTTP status\nor message keyword for plain raises (see api_errors._error_code + the handlers),\nand (2) the typed BUSINESS codes (mirror of ErrorType) for raises the frontend\nmust tell apart from other same-status errors.\n\nThis enum exists so OpenAPI emits an `enum` for error.code — a canonical list in\nthe docs and a typed union for codegen — instead of a bare string. It does NOT\nvalidate runtime responses (those are plain dicts built in _build_error_response),\nso a code missing here only means incomplete docs, never a 500. The\ntest_error_code_enum_covers_* tests keep it in sync with ErrorType + _error_code\nso it can't silently drift.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"instance":{"type":"string","description":"The request path that produced this problem.","uniqueKey":"instance","typeLabel":"string"},"request_id":{"type":"string","description":"Id of this request (also the X-Request-Id header). Quote it to support.","uniqueKey":"request_id","typeLabel":"string"},"param":{"type":"string","description":"The offending request field, when the problem is field-specific.","uniqueKey":"param","typeLabel":"string"}},"required":["type","title","status","detail","code"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","code":"\u003cstring>","instance":"\u003cstring>","request_id":"\u003cstring>","param":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"description":"The body of every non-2xx response. Branch on `error.code`.","properties":{"error":{"properties":{"type":{"type":"string","title":"Type","description":"Broad error category derived from the HTTP status (invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error).","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","title":"ErrorCode","description":"Stable, machine-readable error code. Match on THIS, never on the message. Codes never change even when the message is reworded.","x-extensible-enum":["authentication_required","permission_denied","resource_not_found","rate_limit_exceeded","validation_error","internal_error","invalid_value","invalid_id","already_exists","invalid_request","WORKSPACE_NOT_SUPPORTED","MAX_THREAD_IN_OTHER_WORKSPACE","FEATURE_REMOVED","INSUFFICIENT_CREDITS","BUSINESS_CREDIT_LIMIT_EXCEEDED","NO_ENABLED_TOPICS","GENERATION_CAP_REACHED","CHECKOUT_BLOCKED","INVALID_API_KEY","SOCIAL_TOKEN_EXPIRED","FB_ACCOUNT_BLOCKED","PAYMENT_REQUIRED","NO_CONNECTED_SOCIALS","PLATFORM_RULE_VIOLATION","NOT_ENOUGH_POSTS_FOR_TOPICS","WORKSPACE_LIMIT_EXCEEDED","RECIPIENT_WORKSPACE_LIMIT_EXCEEDED","ADVANCED_WHITELABEL_QUOTA_FROZEN","RESELLER_WHITELABEL_AT_CAPACITY","RESELLER_WHITELABEL_NOT_PURCHASED","CHANNEL_LIMIT_EXCEEDED","FILE_TOO_LARGE","INVALID_FILE_TYPE","SUBSCRIPTION_ALREADY_ACTIVE","UPSTREAM_PROVIDER_ERROR","WEBSITE_UNREACHABLE","PLATFORM_MEDIA_UNSUPPORTED","SOCIAL_CONNECT_FAILED","SOCIAL_CONNECT_LINK_EXPIRED","SOCIAL_APP_PAUSED","NO_PHOTO_SOURCE","TEMPLATE_FORMAT_MISMATCH","TEMPLATE_NOT_FOUND","INVALID_CSV_ROW","IMAGE_GENERATION_FAILED","IMAGE_REFERENCE_INVALID","PDF_HAS_NO_TEXT","POST_RENDER_FAILED","POST_DESIGN_SELECTION_FAILED","POST_CONTENT_GENERATION_FAILED","POST_IDEATION_FAILED","POST_MEDIA_FAILED","POST_AI_MEDIA_FAILED","POST_AI_MEDIA_BLOCKED","POST_RENDER_UNAVAILABLE","IDEMPOTENCY_KEY_CONFLICT","NO_STRIPE_CUSTOMER","X_AGENCY_NOT_ENABLED","NO_ACTIVE_SUBSCRIPTION","POST_HAS_NO_VIDEO","POST_ALREADY_PUBLISHED","CAPTION_HAS_PLACEHOLDER","COPY_DATE_BEFORE_NEXT_SLOT","SCHEDULE_HAS_NO_TIMESLOTS","SIGNUP_BLOCKED","MEDIA_RECENTLY_USED","NAME_MATCHES_OTHER_WORKSPACE","REVIEW_NOT_FOUND","SOCIAL_NEEDS_RECONNECT","COMMENT_NOT_OWN","COMMENT_CANNOT_BE_HIDDEN","REVIEW_ALREADY_REPLIED","REVIEW_DETAILS_MISMATCH","PREVIEW_REQUIRED","PREVIEW_STALE","NOT_ENOUGH_LIBRARY_PHOTOS","UNKNOWN_MEDIA_ID","REEL_DAILY_LIMIT_REACHED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable explanation. For display/logging only — do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Link to the docs entry for this error code.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"oneOf":[{"type":"string","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","title":"Param","description":"The offending request field, when the error is field-specific.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"The id of this request (also returned as the X-Request-Id header). Quote it to support so they can find the exact request in our logs.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"},"reconnect_url":{"oneOf":[{"type":"string","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reconnect Url","description":"Present on social token-expired errors (SOCIAL_TOKEN_EXPIRED / REFRESH_TOKEN_EXPIRED): the page where the user reconnects the affected account, so an agent can surface the fix without a second call.","uniqueKey":"error.reconnect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reconnect_url","typeLabel":"string | null"},"is_reconnect_fixable":{"oneOf":[{"type":"boolean","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Reconnect Fixable","description":"True on social token-expired errors — the failure is fixed by reconnecting the account (paired with reconnect_url).","uniqueKey":"error.is_reconnect_fixable.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.is_reconnect_fixable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorDetail","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","request_id":"\u003cstring>","reconnect_url":"\u003cstring>","is_reconnect_fixable":true}}}},"exampleType":"generated"}},"headers":{"RateLimit-Limit":{"description":"Requests allowed in the current window (IETF/Zalando name; preferred).","schema":{"type":"string"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"string"}},"RateLimit-Reset":{"description":"UNIX epoch (seconds) when the current window resets.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Back-compat alias of RateLimit-Limit.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Back-compat alias of RateLimit-Remaining.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Back-compat alias of RateLimit-Reset.","schema":{"type":"string"}},"X-Request-Id":{"description":"Unique id for THIS request (req_…). Quote it to support.","schema":{"type":"string"}},"X-Flow-ID":{"description":"Correlation id for the whole logical flow; echoes the request's X-Flow-ID if sent.","schema":{"type":"string"}},"Marky-Version":{"description":"The dated API version this response was served as.","schema":{"type":"string"}}},"exampleType":"generated"}},"security":{"79b41e5e-ef00-4a94-acca-fc9ed1a5fccb":{"HTTPBearer":{"type":"http","scheme":"bearer","description":"Bearer an mk_live_ API key. A key is ORG-SCOPED: it grants full access to every resource in that organization, with no per-endpoint scoping (see the `uid` pseudo-permission on each operation). Manage keys at https://app.mymarky.ai.","scopes":["uid"],"schemeName":"HTTPBearer"}}},"servers":{"09d2689e-ff2e-4792-a0cf-48865ead84da":{"url":"https://api.mymarky.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Bearer an mk_live_ API key. A key is ORG-SCOPED: it grants full access to every resource in that organization, with no per-endpoint scoping (see the `uid` pseudo-permission on each operation). Manage keys at https://app.mymarky.ai.","scopes":["uid"],"schemeName":"HTTPBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer an mk_live_ API key. A key is ORG-SCOPED: it grants full access to every resource in that organization, with no per-endpoint scoping (see the `uid` pseudo-permission on each operation). Manage keys at https://app.mymarky.ai.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"HTTPBearer","name":"Authorization"}],"title":"HTTPBearer"}]},"originalFileLocation":"public-openapi.json"},"subdomain":"marky-2d226b8c","siteName":"Marky API","title":"Get post - Marky API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-31T22:53:44.674Z","originalFileLocation":"api-reference/get-post.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=\"system\"}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=\"Get a single post by ID, including per-platform publish results. The post\u0026#x27;s workspace must belong to your org. publish_results is a list of outcomes — one per platform this post was sent to — with the external publish_id you\u0026#x27;ll need to fetch live stats. Poll this endpoint until every entry has a terminal status (success or failed) to know publishing finished. Errors: 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access, or this workspace is not in your org. 404 resource_not_found: No post with that ID exists, or it is not in this workspace. 429 rate_limit_exceeded: You sent too many requests this minute.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Marky 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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get post - Marky API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Get a single post by ID, including per-platform publish results. The post\u0026#x27;s workspace must belong to your org. publish_results is a list of outcomes — one per platform this post was sent to — with the external publish_id you\u0026#x27;ll need to fetch live stats. Poll this endpoint until every entry has a terminal status (success or failed) to know publishing finished. Errors: 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access, or this workspace is not in your org. 404 resource_not_found: No post with that ID exists, or it is not in this workspace. 429 rate_limit_exceeded: You sent too many requests this minute.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Marky API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mymarky.ai/api-reference/get-post\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://marky-2d226b8c.mintlify.app/_mintlify/api/og/v2?division=Posts\u0026amp;title=Get+post\u0026amp;description=Get+a+single+post+by+ID%2C+including+per-platform+publish+results.%0A%0AThe+post%27s+workspace+must+belong+to+your+org.+%60publish_results%60+is+a+list%0Aof+outcomes+%E2%80%94+one+pe\u0026amp;theme=feb25d55a2046f66c0b700e9\u0026amp;signature=889f1cfb744c357ab30e33eccbe726767edb3a4d745ba2f383fce1d7f46ff1ff\">\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 post - Marky API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Get a single post by ID, including per-platform publish results. The post\u0026#x27;s workspace must belong to your org. publish_results is a list of outcomes — one per platform this post was sent to — with the external publish_id you\u0026#x27;ll need to fetch live stats. Poll this endpoint until every entry has a terminal status (success or failed) to know publishing finished. Errors: 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access, or this workspace is not in your org. 404 resource_not_found: No post with that ID exists, or it is not in this workspace. 429 rate_limit_exceeded: You sent too many requests this minute.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://marky-2d226b8c.mintlify.app/_mintlify/api/og/v2?division=Posts\u0026amp;title=Get+post\u0026amp;description=Get+a+single+post+by+ID%2C+including+per-platform+publish+results.%0A%0AThe+post%27s+workspace+must+belong+to+your+org.+%60publish_results%60+is+a+list%0Aof+outcomes+%E2%80%94+one+pe\u0026amp;theme=feb25d55a2046f66c0b700e9\u0026amp;signature=889f1cfb744c357ab30e33eccbe726767edb3a4d745ba2f383fce1d7f46ff1ff\">\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/marky-2d226b8c/2YHtFYr3jDlNjCE5/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Marky API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366f1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mymarky.ai/api-reference/get-post\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/get-post.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mymarky.ai/#organization\",\"name\":\"Marky API\",\"url\":\"https://docs.mymarky.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/marky-2d226b8c/Z6-NzY89vZC-JBeX/logo/logo.png?fit=max\u0026auto=format\u0026n=Z6-NzY89vZC-JBeX\u0026q=85\u0026s=a7ccd17d02af75ecb6ba720fd9abdef3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mymarky.ai#website\",\"name\":\"Marky API\",\"url\":\"https://docs.mymarky.ai\",\"publisher\":{\"@id\":\"https://docs.mymarky.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mymarky.ai/api-reference/get-post#webpage\",\"url\":\"https://docs.mymarky.ai/api-reference/get-post\",\"name\":\"Get post\",\"description\":\"Get a single post by ID, including per-platform publish results. The post's workspace must belong to your org. publish_results is a list of outcomes — one per platform this post was sent to — with the external publish_id you'll need to fetch live stats. Poll this endpoint until every entry has a terminal status (success or failed) to know publishing finished. Errors: 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access, or this workspace is not in your org. 404 resource_not_found: No post with that ID exists, or it is not in this workspace. 429 rate_limit_exceeded: You sent too many requests this minute.\",\"dateModified\":\"2026-10-31T22:53:44.674Z\",\"isPartOf\":{\"@id\":\"https://docs.mymarky.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mymarky.ai/api-reference/get-post#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mymarky.ai/api-reference/get-post#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Posts\",\"item\":\"https://docs.mymarky.ai/api-reference/video-posts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get post\",\"item\":\"https://docs.mymarky.ai/api-reference/get-post\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mymarky.ai/api-reference/get-post#apireference\",\"headline\":\"Get post\",\"name\":\"Get post\",\"description\":\"Get a single post by ID, including per-platform publish results. The post's workspace must belong to your org. publish_results is a list of outcomes — one per platform this post was sent to — with the external publish_id you'll need to fetch live stats. Poll this endpoint until every entry has a terminal status (success or failed) to know publishing finished. Errors: 401 authentication_required: API key or token is missing, invalid, or revoked. 403 permission_denied: Your plan does not include API access, or this workspace is not in your org. 404 resource_not_found: No post with that ID exists, or it is not in this workspace. 429 rate_limit_exceeded: You sent too many requests this minute.\",\"url\":\"https://docs.mymarky.ai/api-reference/get-post\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mymarky.ai/api-reference/get-post#webpage\"},\"dateModified\":\"2026-10-31T22:53:44.674Z\",\"publisher\":{\"@id\":\"https://docs.mymarky.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mymarky.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Marky API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Marky API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Generation","pages":[{"title":"Generate posts","openapi":"public-openapi.json post /api/businesses/{business_id}/posts/generate","href":"/api-reference/generate-posts"},{"title":"Get job status","openapi":"public-openapi.json get /api/businesses/{business_id}/jobs/{job_id}","href":"/api-reference/get-job-status"}]},{"group":"Posts","pages":[{"title":"Video Posts","href":"/api-reference/video-posts"},{"title":"Create post","openapi":"public-openapi.json post /api/businesses/{business_id}/posts","href":"/api-reference/create-post"},{"title":"List posts","openapi":"public-openapi.json get /api/businesses/{business_id}/posts","description":"List posts for a workspace, newest first. Use cursor for pagination.\n\nPass `view=summary` for a lightweight payload (caption preview + media\nfingerprint, no publish_results/overrides/queue) when auditing or de-duping a\nbig history — a full-view page of 100 posts can be too large for an agent's\ntool budget.\n\nErrors:\n 400 invalid_value: The business_id is not a valid UUID.\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 403 permission_denied: Your plan does not include API access, or this workspace is not in your org.\n 404 resource_not_found: No workspace with that ID exists.\n 429 rate_limit_exceeded: You sent too many requests this minute.","href":"/api-reference/list-posts"},{"title":"Get post","openapi":"public-openapi.json get /api/businesses/{business_id}/posts/{post_id}","href":"/api-reference/get-post"},{"title":"Update post","openapi":"public-openapi.json patch /api/businesses/{business_id}/posts/{post_id}","description":"Update a post's caption, review status, target platforms, media, or platform overrides.\n\n`status` moves the post through YOUR TEAM's review workflow: set NEW to tell\nyour team the post is ready for their review (it appears on the app's review\npage), DRAFT to record a reviewer's approval, REJECTED to record a decline.\nMarky does not gate publishing on these — they are your team's workflow\nstate. Status can only change on posts currently in NEW, DRAFT, or REJECTED:\nscheduling has its own endpoint, and published posts are immutable.\n\n`platform_overrides` replaces the post's whole override set: send the full\nlist to keep, `[]` to clear, or omit the field to leave overrides untouched.\n\nErrors:\n 400 invalid_request: The post is already published, no fields were given to update, or status was sent for a post that is SCHEDULED, PUBLISHED, GENERATING, or FAILED.\n 400 PLATFORM_RULE_VIOLATION: The post is SCHEDULED and this edit would make a platform in publish_to refuse it. Nothing is changed; `violations` lists each broken rule.\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 403 permission_denied: Your plan does not include API access, or this workspace is not in your org.\n 404 resource_not_found: No post with that ID exists, or it is not in this workspace.\n 429 rate_limit_exceeded: You sent too many requests this minute.","href":"/api-reference/update-post"},{"title":"Schedule post","openapi":"public-openapi.json post /api/businesses/{business_id}/posts/{post_id}/schedule","href":"/api-reference/schedule-post"},{"title":"Publish post now","openapi":"public-openapi.json post /api/businesses/{business_id}/posts/{post_id}/publish","href":"/api-reference/publish-post"}]},{"group":"Team review","pages":[{"title":"List post comments","openapi":"public-openapi.json get /api/businesses/{business_id}/posts/{post_id}/comments","href":"/api-reference/list-post-comments"},{"title":"Add post comment","openapi":"public-openapi.json post /api/businesses/{business_id}/posts/{post_id}/comments","href":"/api-reference/create-post-comment"},{"title":"Resolve post comment","openapi":"public-openapi.json patch /api/businesses/{business_id}/posts/{post_id}/comments/{comment_id}","href":"/api-reference/resolve-post-comment"}]},{"group":"Stats","pages":[{"title":"Stats Coverage by Platform","href":"/api-reference/stats-coverage"},{"title":"Get post stats","openapi":"public-openapi.json get /api/businesses/{business_id}/posts/{post_id}/stats","href":"/api-reference/get-post-stats"},{"title":"Get integration stats","openapi":"public-openapi.json get /api/businesses/{business_id}/integrations/{integration_id}/stats","href":"/api-reference/get-integration-stats"},{"title":"Get external post stats","openapi":"public-openapi.json get /api/businesses/{business_id}/integrations/{integration_id}/posts/{external_post_id}/stats","href":"/api-reference/get-integration-post-stats"}]},{"group":"Integrations","pages":[{"title":"List integrations","openapi":"public-openapi.json get /api/businesses/{business_id}/integrations","href":"/api-reference/list-integrations"},{"title":"List posts on a platform","openapi":"public-openapi.json get /api/businesses/{business_id}/integrations/{integration_id}/posts","href":"/api-reference/list-integration-posts"}]},{"group":"Workspaces","pages":[{"title":"Create workspace","openapi":"public-openapi.json post /api/workspaces","href":"/api-reference/create-business"},{"title":"List workspaces","openapi":"public-openapi.json get /api/workspaces","href":"/api-reference/list-businesses"},{"title":"Get workspace","openapi":"public-openapi.json get /api/workspaces/{workspace_id}","href":"/api-reference/get-business"},{"title":"Update workspace","openapi":"public-openapi.json patch /api/workspaces/{workspace_id}","href":"/api-reference/update-business"},{"title":"Delete workspace","openapi":"public-openapi.json delete /api/workspaces/{workspace_id}","href":"/api-reference/delete-business"}]},{"group":"Topics","pages":[{"title":"create topic","openapi":"public-openapi.json post /api/businesses/{business_id}/topics","href":"/api-reference/create-topic"},{"title":"list topics","openapi":"public-openapi.json get /api/businesses/{business_id}/topics","href":"/api-reference/list-topics"},{"title":"get topic","openapi":"public-openapi.json get /api/businesses/{business_id}/topics/{topic_id}","href":"/api-reference/get-topic"},{"title":"update topic","openapi":"public-openapi.json patch /api/businesses/{business_id}/topics/{topic_id}","href":"/api-reference/update-topic"},{"title":"delete topic","openapi":"public-openapi.json delete /api/businesses/{business_id}/topics/{topic_id}","href":"/api-reference/delete-topic"}]},{"group":"Media","pages":[{"title":"Upload media","openapi":"public-openapi.json post /api/businesses/{business_id}/media","href":"/api-reference/upload-media"},{"title":"List media","openapi":"public-openapi.json get /api/businesses/{business_id}/library","href":"/api-reference/list-media"},{"title":"Get media","openapi":"public-openapi.json get /api/businesses/{business_id}/library/{media_id}","href":"/api-reference/get-media"},{"title":"Delete media","openapi":"public-openapi.json delete /api/businesses/{business_id}/library/{media_id}","href":"/api-reference/delete-media"}]},{"group":"Folders","pages":[{"title":"Create folder","openapi":"public-openapi.json post /api/businesses/{business_id}/folders","href":"/api-reference/create-folder"},{"title":"List folders","openapi":"public-openapi.json get /api/businesses/{business_id}/folders","href":"/api-reference/list-folders"},{"title":"Get folder","openapi":"public-openapi.json get /api/businesses/{business_id}/folders/{folder_id}","href":"/api-reference/get-folder"},{"title":"Update folder","openapi":"public-openapi.json patch /api/businesses/{business_id}/folders/{folder_id}","href":"/api-reference/update-folder"},{"title":"Delete folder","openapi":"public-openapi.json delete /api/businesses/{business_id}/folders/{folder_id}","href":"/api-reference/delete-folder"}]},{"group":"Files","pages":[{"title":"Create file","openapi":"public-openapi.json post /api/businesses/{business_id}/library/files","href":"/api-reference/create-file"},{"title":"List files","openapi":"public-openapi.json get /api/businesses/{business_id}/files","href":"/api-reference/list-files"},{"title":"Get file","openapi":"public-openapi.json get /api/businesses/{business_id}/files/{file_id}","href":"/api-reference/get-file"},{"title":"Update file","openapi":"public-openapi.json put /api/businesses/{business_id}/files/{file_id}","href":"/api-reference/update-file"},{"title":"Delete file","openapi":"public-openapi.json delete /api/businesses/{business_id}/files/{file_id}","href":"/api-reference/delete-file"},{"title":"Attach media to file","openapi":"public-openapi.json post /api/businesses/{business_id}/files/{file_id}/media","href":"/api-reference/attach-media"}]},{"group":"Webhooks","pages":[{"title":"Register webhook","openapi":"public-openapi.json post /api/webhooks","href":"/api-reference/create-webhook"},{"title":"List webhooks","openapi":"public-openapi.json get /api/webhooks","href":"/api-reference/list-webhooks"},{"title":"Delete webhook","openapi":"public-openapi.json delete /api/webhooks/{webhook_id}","href":"/api-reference/delete-webhook"},{"title":"List webhook deliveries","openapi":"public-openapi.json get /api/webhooks/{webhook_id}/deliveries","href":"/api-reference/list-webhook-deliveries"}]},{"group":"Feedback","pages":[{"title":"Submit feedback","openapi":"public-openapi.json post /api/feedback","href":"/api-reference/submit-feedback"}]}]}]},"basePath":"","title":"Get post - Marky API","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}