Fetch account/page analytics for a single connected integration.
Returns the normalized AccountStats model (followers, impressions,
reach, profile_views, plus a timeseries metrics array) for the
integration’s platform — Facebook, Instagram, LinkedIn, Twitter/X,
TikTok, Pinterest, or YouTube. The integration_id is an id from
list_connected_social_accounts.
Some accounts have no account-level analytics to give — a LinkedIn personal
profile, or a platform whose reads we have turned off on cost grounds.
Those return 200 with a populated unavailable_reason and null metrics,
NOT an error. Null there means “not available”, not zero.
Errors:
400 invalid_value: The integration_id is not a valid UUID.
400 invalid_request: A date, period, or metric value was rejected.
401 authentication_required: API key or token is missing, invalid, or revoked.
401 SOCIAL_TOKEN_EXPIRED: The connected account’s token expired and could not be refreshed — the response’s reconnect_url points to where to reconnect.
403 permission_denied: Your plan does not include API access.
404 resource_not_found: No integration with that ID exists, or it is not in your org.
429 rate_limit_exceeded: You sent too many requests this minute.
502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.
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.
Non-null when the platform does not support account-level analytics for this account type (e.g. LinkedIn personal profiles). When set, the numeric fields being null means 'not supported by provider', not 'zero' or 'no data'.
default:Account-level metrics vary by platform and are often sparse. For per-post impressions, reach, clicks and views, call GET /businesses/{business_id}/integrations/{integration_id}/posts (MCP: list_integration_posts) — it returns rich per-post stats even when these account-level fields are null.
{"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-integration-stats","slug":"/api-reference/get-integration-stats","pageMetadata":{"title":"Get integration stats","openapi":"public-openapi.json get /api/businesses/{business_id}/integrations/{integration_id}/stats","description":"Fetch account/page analytics for a single connected integration.\n\nReturns the normalized `AccountStats` model (followers, impressions,\nreach, profile_views, plus a timeseries `metrics` array) for the\nintegration's platform — Facebook, Instagram, LinkedIn, Twitter/X,\nTikTok, Pinterest, or YouTube. The integration_id is an `id` from\nlist_connected_social_accounts.\n\nSome accounts have no account-level analytics to give — a LinkedIn personal\nprofile, or a platform whose reads we have turned off on cost grounds.\nThose return 200 with a populated `unavailable_reason` and null metrics,\nNOT an error. Null there means \"not available\", not zero.\n\nErrors:\n 400 invalid_value: The integration_id is not a valid UUID.\n 400 invalid_request: A date, period, or metric value was rejected.\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 401 SOCIAL_TOKEN_EXPIRED: The connected account's token expired and could not be refreshed — the response's reconnect_url points to where to reconnect.\n 403 permission_denied: Your plan does not include API access.\n 404 resource_not_found: No integration with that ID exists, or it is not in your org.\n 429 rate_limit_exceeded: You sent too many requests this minute.\n 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.","href":"/api-reference/get-integration-stats"},"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: \"Fetch account/page analytics for a single connected integration.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Returns the normalized \", _jsx(_components.code, {\n children: \"AccountStats\"\n }), \" model (followers, impressions,\\nreach, profile_views, plus a timeseries \", _jsx(_components.code, {\n children: \"metrics\"\n }), \" array) for the\\nintegration’s platform — Facebook, Instagram, LinkedIn, Twitter/X,\\nTikTok, Pinterest, or YouTube. The integration_id is an \", _jsx(_components.code, {\n children: \"id\"\n }), \" from\\nlist_connected_social_accounts.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Some accounts have no account-level analytics to give — a LinkedIn personal\\nprofile, or a platform whose reads we have turned off on cost grounds.\\nThose return 200 with a populated \", _jsx(_components.code, {\n children: \"unavailable_reason\"\n }), \" and null metrics,\\nNOT an error. Null there means “not available”, not zero.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Errors:\\n400 invalid_value: The integration_id is not a valid UUID.\\n400 invalid_request: A date, period, or metric value was rejected.\\n401 authentication_required: API key or token is missing, invalid, or revoked.\\n401 SOCIAL_TOKEN_EXPIRED: The connected account’s token expired and could not be refreshed — the response’s reconnect_url points to where to reconnect.\\n403 permission_denied: Your plan does not include API access.\\n404 resource_not_found: No integration with that ID exists, or it is not in your org.\\n429 rate_limit_exceeded: You sent too many requests this minute.\\n502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.\"\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 integration stats","openapi":"public-openapi.json get /api/businesses/{business_id}/integrations/{integration_id}/stats","description":"Fetch account/page analytics for a single connected integration.\n\nReturns the normalized `AccountStats` model (followers, impressions,\nreach, profile_views, plus a timeseries `metrics` array) for the\nintegration's platform — Facebook, Instagram, LinkedIn, Twitter/X,\nTikTok, Pinterest, or YouTube. The integration_id is an `id` from\nlist_connected_social_accounts.\n\nSome accounts have no account-level analytics to give — a LinkedIn personal\nprofile, or a platform whose reads we have turned off on cost grounds.\nThose return 200 with a populated `unavailable_reason` and null metrics,\nNOT an error. Null there means \"not available\", not zero.\n\nErrors:\n 400 invalid_value: The integration_id is not a valid UUID.\n 400 invalid_request: A date, period, or metric value was rejected.\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 401 SOCIAL_TOKEN_EXPIRED: The connected account's token expired and could not be refreshed — the response's reconnect_url points to where to reconnect.\n 403 permission_denied: Your plan does not include API access.\n 404 resource_not_found: No integration with that ID exists, or it is not in your org.\n 429 rate_limit_exceeded: You sent too many requests this minute.\n 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.","href":"/api-reference/get-integration-stats"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["integrations"],"summary":"Get integration account stats","description":"Fetch account/page analytics for a single connected integration.\n\nReturns the normalized `AccountStats` model (followers, impressions,\nreach, profile_views, plus a timeseries `metrics` array) for the\nintegration's platform — Facebook, Instagram, LinkedIn, Twitter/X,\nTikTok, Pinterest, or YouTube. The integration_id is an `id` from\nlist_connected_social_accounts.\n\nSome accounts have no account-level analytics to give — a LinkedIn personal\nprofile, or a platform whose reads we have turned off on cost grounds.\nThose return 200 with a populated `unavailable_reason` and null metrics,\nNOT an error. Null there means \"not available\", not zero.\n\nErrors:\n 400 invalid_value: The integration_id is not a valid UUID.\n 400 invalid_request: A date, period, or metric value was rejected.\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 401 SOCIAL_TOKEN_EXPIRED: The connected account's token expired and could not be refreshed — the response's reconnect_url points to where to reconnect.\n 403 permission_denied: Your plan does not include API access.\n 404 resource_not_found: No integration with that ID exists, or it is not in your org.\n 429 rate_limit_exceeded: You sent too many requests this minute.\n 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.","operationId":"get_integration_stats","security":["5e37617d-6042-444b-a70f-37b177ad3985"],"parameters":["8b05f812-7045-4bcd-abfe-54856c717f9c","b0e65dc6-3baa-4597-ac84-899dc1edcfac","f964fe9f-e327-4db9-bde8-5c493505a61d","5af6ede6-ee30-4238-ac53-9040420afd1b","123ab21f-1b97-4deb-83ad-f95ca9ede17e","8bdc9416-ae3e-4f19-8c5e-3656b49b6d29","97d5732c-53a4-47e4-8d10-28edb7a528f9"],"responses":{"200":"c37af8c6-ca2f-465d-8a09-6afe9f0045f7","400":"0a96c1fa-2d13-4f48-b3fb-1f2d68122f96","401":"a52d2297-f403-4e7a-b1ac-b6b1588d642e","403":"578ac6a2-998e-4426-a160-595fbc6981f9","404":"a63a0882-a4fe-489e-b3a9-8d583dacd8a1","422":"7be95e20-48a1-4f85-b0d4-26d252da4bf8","429":"dade2d5a-2776-4b1c-ace8-3d7d1bf9400b","500":"e8280c6f-5b41-4b0d-85c1-f7b1ec9f2111"},"method":"get","type":"path","servers":["09d2689e-ff2e-4792-a0cf-48865ead84da"],"path":"/api/businesses/{business_id}/integrations/{integration_id}/stats","baseUrlOptions":["https://api.mymarky.ai"],"title":"Get integration account stats","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"8b05f812-7045-4bcd-abfe-54856c717f9c":{"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."},"b0e65dc6-3baa-4597-ac84-899dc1edcfac":{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","description":"A UUID identifier.","format":"uuid","title":"Integration Id","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"A UUID identifier."},"f964fe9f-e327-4db9-bde8-5c493505a61d":{"name":"since","in":"query","required":false,"schema":{"oneOf":[{"type":"string","title":"Since","description":"Start date (YYYY-MM-DD). Defaults to 30 days ago.","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Since","description":"Start date (YYYY-MM-DD). Defaults to 30 days ago.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"},"description":"Start date (YYYY-MM-DD). Defaults to 30 days ago."},"5af6ede6-ee30-4238-ac53-9040420afd1b":{"name":"until","in":"query","required":false,"schema":{"oneOf":[{"type":"string","title":"Until","description":"End date (YYYY-MM-DD). Defaults to today.","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Until","description":"End date (YYYY-MM-DD). Defaults to today.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"},"description":"End date (YYYY-MM-DD). Defaults to today."},"123ab21f-1b97-4deb-83ad-f95ca9ede17e":{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Aggregation period: day, week, days_28, lifetime","default":"day","title":"Period","isRequired":false,"uniqueKey":"","typeLabel":"string"},"description":"Aggregation period: day, week, days_28, lifetime"},"8bdc9416-ae3e-4f19-8c5e-3656b49b6d29":{"name":"metrics","in":"query","required":false,"schema":{"oneOf":[{"type":"string","title":"Metrics","description":"Comma-separated metric names (platform-specific). Omit for defaults.","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Metrics","description":"Comma-separated metric names (platform-specific). Omit for defaults.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"},"description":"Comma-separated metric names (platform-specific). Omit for defaults."},"97d5732c-53a4-47e4-8d10-28edb7a528f9":{"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":{"c37af8c6-ca2f-465d-8a09-6afe9f0045f7":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"fetched_at":{"type":"string","format":"date-time","title":"Fetched At","uniqueKey":"fetched_at","typeLabel":"string\u003cdate-time>"},"platform":{"oneOf":[{"type":"string","title":"Platform","uniqueKey":"platform.oneOf.0","typeLabel":"string"},{"type":"null","title":"Platform","uniqueKey":"platform.oneOf.1","typeLabel":"null"}],"uniqueKey":"platform","typeLabel":"string | null"},"account_id":{"oneOf":[{"type":"string","title":"Account Id","uniqueKey":"account_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Account Id","uniqueKey":"account_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"account_id","typeLabel":"string | null"},"page_id":{"oneOf":[{"type":"string","title":"Page Id","uniqueKey":"page_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Page Id","uniqueKey":"page_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"page_id","typeLabel":"string | null"},"followers":{"oneOf":[{"type":"integer","title":"Followers","uniqueKey":"followers.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Followers","uniqueKey":"followers.oneOf.1","typeLabel":"null"}],"uniqueKey":"followers","typeLabel":"integer | null"},"following":{"oneOf":[{"type":"integer","title":"Following","uniqueKey":"following.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Following","uniqueKey":"following.oneOf.1","typeLabel":"null"}],"uniqueKey":"following","typeLabel":"integer | null"},"posts_count":{"oneOf":[{"type":"integer","title":"Posts Count","uniqueKey":"posts_count.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Posts Count","uniqueKey":"posts_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"posts_count","typeLabel":"integer | null"},"impressions":{"oneOf":[{"type":"integer","title":"Impressions","uniqueKey":"impressions.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Impressions","uniqueKey":"impressions.oneOf.1","typeLabel":"null"}],"uniqueKey":"impressions","typeLabel":"integer | null"},"reach":{"oneOf":[{"type":"integer","title":"Reach","uniqueKey":"reach.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Reach","uniqueKey":"reach.oneOf.1","typeLabel":"null"}],"uniqueKey":"reach","typeLabel":"integer | null"},"profile_views":{"oneOf":[{"type":"integer","title":"Profile Views","uniqueKey":"profile_views.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Profile Views","uniqueKey":"profile_views.oneOf.1","typeLabel":"null"}],"uniqueKey":"profile_views","typeLabel":"integer | null"},"website_clicks":{"oneOf":[{"type":"integer","title":"Website Clicks","uniqueKey":"website_clicks.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Website Clicks","uniqueKey":"website_clicks.oneOf.1","typeLabel":"null"}],"uniqueKey":"website_clicks","typeLabel":"integer | null"},"audience_age_pct":{"oneOf":[{"type":"object","title":"Audience Age Pct","description":"Age bucket -> share of audience (0.0-1.0). IG, YT, LinkedIn, Pinterest.","additionalProperties":{"type":"number","uniqueKey":"audience_age_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_age_pct.oneOf.0","typeLabel":"Audience Age Pct · object"},{"type":"null","title":"Audience Age Pct","description":"Age bucket -> share of audience (0.0-1.0). IG, YT, LinkedIn, Pinterest.","uniqueKey":"audience_age_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_age_pct","typeLabel":"Audience Age Pct · object | null"},"audience_gender_pct":{"oneOf":[{"type":"object","title":"Audience Gender Pct","description":"Gender ('FEMALE'/'MALE'/'UNKNOWN') -> share. IG, YT, LinkedIn, Pinterest.","additionalProperties":{"type":"number","uniqueKey":"audience_gender_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_gender_pct.oneOf.0","typeLabel":"Audience Gender Pct · object"},{"type":"null","title":"Audience Gender Pct","description":"Gender ('FEMALE'/'MALE'/'UNKNOWN') -> share. IG, YT, LinkedIn, Pinterest.","uniqueKey":"audience_gender_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_gender_pct","typeLabel":"Audience Gender Pct · object | null"},"audience_country_pct":{"oneOf":[{"type":"object","title":"Audience Country Pct","description":"ISO country code -> share. IG, YT, LinkedIn.","additionalProperties":{"type":"number","uniqueKey":"audience_country_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_country_pct.oneOf.0","typeLabel":"Audience Country Pct · object"},{"type":"null","title":"Audience Country Pct","description":"ISO country code -> share. IG, YT, LinkedIn.","uniqueKey":"audience_country_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_country_pct","typeLabel":"Audience Country Pct · object | null"},"audience_city_pct":{"oneOf":[{"type":"object","title":"Audience City Pct","description":"City name -> share. IG only.","additionalProperties":{"type":"number","uniqueKey":"audience_city_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_city_pct.oneOf.0","typeLabel":"Audience City Pct · object"},{"type":"null","title":"Audience City Pct","description":"City name -> share. IG only.","uniqueKey":"audience_city_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_city_pct","typeLabel":"Audience City Pct · object | null"},"audience_industry_pct":{"oneOf":[{"type":"object","title":"Audience Industry Pct","description":"LinkedIn-only: industry name -> share.","additionalProperties":{"type":"number","uniqueKey":"audience_industry_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_industry_pct.oneOf.0","typeLabel":"Audience Industry Pct · object"},{"type":"null","title":"Audience Industry Pct","description":"LinkedIn-only: industry name -> share.","uniqueKey":"audience_industry_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_industry_pct","typeLabel":"Audience Industry Pct · object | null"},"audience_seniority_pct":{"oneOf":[{"type":"object","title":"Audience Seniority Pct","description":"LinkedIn-only: seniority bucket -> share.","additionalProperties":{"type":"number","uniqueKey":"audience_seniority_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_seniority_pct.oneOf.0","typeLabel":"Audience Seniority Pct · object"},{"type":"null","title":"Audience Seniority Pct","description":"LinkedIn-only: seniority bucket -> share.","uniqueKey":"audience_seniority_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_seniority_pct","typeLabel":"Audience Seniority Pct · object | null"},"audience_function_pct":{"oneOf":[{"type":"object","title":"Audience Function Pct","description":"LinkedIn-only: job function -> share.","additionalProperties":{"type":"number","uniqueKey":"audience_function_pct.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"audience_function_pct.oneOf.0","typeLabel":"Audience Function Pct · object"},{"type":"null","title":"Audience Function Pct","description":"LinkedIn-only: job function -> share.","uniqueKey":"audience_function_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"audience_function_pct","typeLabel":"Audience Function Pct · object | null"},"metrics":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"metrics.items.[INDEX].name","typeLabel":"string"},"title":{"oneOf":[{"type":"string","title":"Title","uniqueKey":"metrics.items.[INDEX].title.oneOf.0","typeLabel":"string"},{"type":"null","title":"Title","uniqueKey":"metrics.items.[INDEX].title.oneOf.1","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].title","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","uniqueKey":"metrics.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","uniqueKey":"metrics.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].description","typeLabel":"string | null"},"period":{"oneOf":[{"type":"string","title":"Period","uniqueKey":"metrics.items.[INDEX].period.oneOf.0","typeLabel":"string"},{"type":"null","title":"Period","uniqueKey":"metrics.items.[INDEX].period.oneOf.1","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].period","typeLabel":"string | null"},"metric_kind":{"oneOf":[{"type":"string","title":"Metric Kind","description":"What this metric actually counts, so metrics can be compared safely: 'content_reach', 'impressions', 'profile_visits', 'followers', or 'engagement'. Two metrics with DIFFERENT kinds measure different things and must not be compared (e.g. Facebook 'profile_visits' is not Instagram 'content_reach'). None = unknown.","uniqueKey":"metrics.items.[INDEX].metric_kind.oneOf.0","typeLabel":"string"},{"type":"null","title":"Metric Kind","description":"What this metric actually counts, so metrics can be compared safely: 'content_reach', 'impressions', 'profile_visits', 'followers', or 'engagement'. Two metrics with DIFFERENT kinds measure different things and must not be compared (e.g. Facebook 'profile_visits' is not Instagram 'content_reach'). None = unknown.","uniqueKey":"metrics.items.[INDEX].metric_kind.oneOf.1","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].metric_kind","typeLabel":"string | null"},"values":{"items":{"properties":{"value":{"oneOf":[{"type":"integer","title":"Value","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].value.oneOf.0","typeLabel":"integer"},{"type":"number","title":"Value","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"string","title":"Value","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].value.oneOf.2","typeLabel":"string"},{"type":"null","title":"Value","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].value.oneOf.3","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].value","typeLabel":"integer | number | string | null"},"start_time":{"oneOf":[{"type":"string","title":"Start Time","format":"date-time","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].start_time.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Start Time","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].start_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].start_time","typeLabel":"string\u003cdate-time> | null"},"end_time":{"oneOf":[{"type":"string","title":"End Time","format":"date-time","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].end_time.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"End Time","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].end_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"metrics.items.[INDEX].values.items.[INDEX].end_time","typeLabel":"string\u003cdate-time> | null"}},"type":"object","title":"MetricValue","description":"A single metric value with optional time range.","uniqueKey":"metrics.items.[INDEX].values.items.[INDEX]","typeLabel":"MetricValue · object"},"type":"array","title":"Values","default":[],"uniqueKey":"metrics.items.[INDEX].values","typeLabel":"MetricValue · object[]"}},"type":"object","required":["name"],"title":"MetricTimeseries","description":"A metric with time-series data points.","uniqueKey":"metrics.items.[INDEX]","typeLabel":"MetricTimeseries · object"},"type":"array","title":"Metrics","default":[],"uniqueKey":"metrics","typeLabel":"MetricTimeseries · object[]"},"raw_metrics":{"additionalProperties":{"properties":{"value":{"oneOf":[{"type":"integer","title":"Value","uniqueKey":"raw_metrics.additionalProperties.value.oneOf.0","typeLabel":"integer"},{"type":"number","title":"Value","uniqueKey":"raw_metrics.additionalProperties.value.oneOf.1","typeLabel":"number"},{"type":"string","title":"Value","uniqueKey":"raw_metrics.additionalProperties.value.oneOf.2","typeLabel":"string"},{"type":"null","title":"Value","uniqueKey":"raw_metrics.additionalProperties.value.oneOf.3","typeLabel":"null"}],"uniqueKey":"raw_metrics.additionalProperties.value","typeLabel":"integer | number | string | null"},"start_time":{"oneOf":[{"type":"string","title":"Start Time","format":"date-time","uniqueKey":"raw_metrics.additionalProperties.start_time.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Start Time","uniqueKey":"raw_metrics.additionalProperties.start_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"raw_metrics.additionalProperties.start_time","typeLabel":"string\u003cdate-time> | null"},"end_time":{"oneOf":[{"type":"string","title":"End Time","format":"date-time","uniqueKey":"raw_metrics.additionalProperties.end_time.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"End Time","uniqueKey":"raw_metrics.additionalProperties.end_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"raw_metrics.additionalProperties.end_time","typeLabel":"string\u003cdate-time> | null"}},"type":"object","title":"MetricValue","description":"A single metric value with optional time range.","uniqueKey":"raw_metrics.additionalProperties","typeLabel":"MetricValue · object"},"type":"object","title":"Raw Metrics","default":{},"uniqueKey":"raw_metrics","typeLabel":"Raw Metrics · object"},"unavailable_reason":{"oneOf":[{"type":"string","title":"Unavailable Reason","description":"Non-null when the platform does not support account-level analytics for this account type (e.g. LinkedIn personal profiles). When set, the numeric fields being null means 'not supported by provider', not 'zero' or 'no data'.","uniqueKey":"unavailable_reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Unavailable Reason","description":"Non-null when the platform does not support account-level analytics for this account type (e.g. LinkedIn personal profiles). When set, the numeric fields being null means 'not supported by provider', not 'zero' or 'no data'.","uniqueKey":"unavailable_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"unavailable_reason","typeLabel":"string | null"},"post_stats_hint":{"type":"string","title":"Post Stats Hint","default":"Account-level metrics vary by platform and are often sparse. For per-post impressions, reach, clicks and views, call GET /businesses/{business_id}/integrations/{integration_id}/posts (MCP: list_integration_posts) — it returns rich per-post stats even when these account-level fields are null.","uniqueKey":"post_stats_hint","typeLabel":"string"}},"type":"object","title":"AccountStats","description":"Account/page-level statistics.\n\nData-source agnostic: works for API fetches and local DB reads.","uniqueKey":"","typeLabel":"AccountStats · object"},"examples":{"Example":{"title":"Example","value":{"fetched_at":"2023-11-07T05:31:56Z","platform":"\u003cstring>","account_id":"\u003cstring>","page_id":"\u003cstring>","followers":123,"following":123,"posts_count":123,"impressions":123,"reach":123,"profile_views":123,"website_clicks":123,"audience_age_pct":{},"audience_gender_pct":{},"audience_country_pct":{},"audience_city_pct":{},"audience_industry_pct":{},"audience_seniority_pct":{},"audience_function_pct":{},"metrics":[],"raw_metrics":{},"unavailable_reason":"\u003cstring>","post_stats_hint":"Account-level metrics vary by platform and are often sparse. For per-post impressions, reach, clicks and views, call GET /businesses/{business_id}/integrations/{integration_id}/posts (MCP: list_integration_posts) — it returns rich per-post stats even when these account-level fields are null."}}},"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"},"0a96c1fa-2d13-4f48-b3fb-1f2d68122f96":{"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"},"a52d2297-f403-4e7a-b1ac-b6b1588d642e":{"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"},"578ac6a2-998e-4426-a160-595fbc6981f9":{"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"},"a63a0882-a4fe-489e-b3a9-8d583dacd8a1":{"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"},"7be95e20-48a1-4f85-b0d4-26d252da4bf8":{"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"},"dade2d5a-2776-4b1c-ace8-3d7d1bf9400b":{"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"},"e8280c6f-5b41-4b0d-85c1-f7b1ec9f2111":{"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":{"5e37617d-6042-444b-a70f-37b177ad3985":{"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 integration stats - Marky API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T02:42:46.680Z","originalFileLocation":"api-reference/get-integration-stats.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=\"Fetch account/page analytics for a single connected integration. Returns the normalized AccountStats model (followers, impressions, reach, profile_views, plus a timeseries metrics array) for the integration\u0026#x27;s platform — Facebook, Instagram, LinkedIn, Twitter/X, TikTok, Pinterest, or YouTube. The integration_id is an id from list_connected_social_accounts. Some accounts have no account-level analytics to give — a LinkedIn personal profile, or a platform whose reads we have turned off on cost grounds. Those return 200 with a populated unavailable_reason and null metrics, NOT an error. Null there means \u0026quot;not available\u0026quot;, not zero. Errors: 400 invalid_value: The integration_id is not a valid UUID. 400 invalid_request: A date, period, or metric value was rejected. 401 authentication_required: API key or token is missing, invalid, or revoked. 401 SOCIAL_TOKEN_EXPIRED: The connected account\u0026#x27;s token expired and could not be refreshed — the response\u0026#x27;s reconnect_url points to where to reconnect. 403 permission_denied: Your plan does not include API access. 404 resource_not_found: No integration with that ID exists, or it is not in your org. 429 rate_limit_exceeded: You sent too many requests this minute. 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.\">\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 integration stats - Marky API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Fetch account/page analytics for a single connected integration. Returns the normalized AccountStats model (followers, impressions, reach, profile_views, plus a timeseries metrics array) for the integration\u0026#x27;s platform — Facebook, Instagram, LinkedIn, Twitter/X, TikTok, Pinterest, or YouTube. The integration_id is an id from list_connected_social_accounts. Some accounts have no account-level analytics to give — a LinkedIn personal profile, or a platform whose reads we have turned off on cost grounds. Those return 200 with a populated unavailable_reason and null metrics, NOT an error. Null there means \u0026quot;not available\u0026quot;, not zero. Errors: 400 invalid_value: The integration_id is not a valid UUID. 400 invalid_request: A date, period, or metric value was rejected. 401 authentication_required: API key or token is missing, invalid, or revoked. 401 SOCIAL_TOKEN_EXPIRED: The connected account\u0026#x27;s token expired and could not be refreshed — the response\u0026#x27;s reconnect_url points to where to reconnect. 403 permission_denied: Your plan does not include API access. 404 resource_not_found: No integration with that ID exists, or it is not in your org. 429 rate_limit_exceeded: You sent too many requests this minute. 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.\">\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-integration-stats\">\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=Stats\u0026amp;title=Get+integration+stats\u0026amp;description=Fetch+account%2Fpage+analytics+for+a+single+connected+integration.%0A%0AReturns+the+normalized+%60AccountStats%60+model+%28followers%2C+impressions%2C%0Areach%2C+profile_views%2C+plu\u0026amp;theme=feb25d55a2046f66c0b700e9\u0026amp;signature=31b12f27743d2d7e4853bc5e207f9efceb3636dbe704b564f37dac4409437be7\">\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 integration stats - Marky API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Fetch account/page analytics for a single connected integration. Returns the normalized AccountStats model (followers, impressions, reach, profile_views, plus a timeseries metrics array) for the integration\u0026#x27;s platform — Facebook, Instagram, LinkedIn, Twitter/X, TikTok, Pinterest, or YouTube. The integration_id is an id from list_connected_social_accounts. Some accounts have no account-level analytics to give — a LinkedIn personal profile, or a platform whose reads we have turned off on cost grounds. Those return 200 with a populated unavailable_reason and null metrics, NOT an error. Null there means \u0026quot;not available\u0026quot;, not zero. Errors: 400 invalid_value: The integration_id is not a valid UUID. 400 invalid_request: A date, period, or metric value was rejected. 401 authentication_required: API key or token is missing, invalid, or revoked. 401 SOCIAL_TOKEN_EXPIRED: The connected account\u0026#x27;s token expired and could not be refreshed — the response\u0026#x27;s reconnect_url points to where to reconnect. 403 permission_denied: Your plan does not include API access. 404 resource_not_found: No integration with that ID exists, or it is not in your org. 429 rate_limit_exceeded: You sent too many requests this minute. 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://marky-2d226b8c.mintlify.app/_mintlify/api/og/v2?division=Stats\u0026amp;title=Get+integration+stats\u0026amp;description=Fetch+account%2Fpage+analytics+for+a+single+connected+integration.%0A%0AReturns+the+normalized+%60AccountStats%60+model+%28followers%2C+impressions%2C%0Areach%2C+profile_views%2C+plu\u0026amp;theme=feb25d55a2046f66c0b700e9\u0026amp;signature=31b12f27743d2d7e4853bc5e207f9efceb3636dbe704b564f37dac4409437be7\">\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-integration-stats\">\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-integration-stats.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-integration-stats#webpage\",\"url\":\"https://docs.mymarky.ai/api-reference/get-integration-stats\",\"name\":\"Get integration stats\",\"description\":\"Fetch account/page analytics for a single connected integration. Returns the normalized AccountStats model (followers, impressions, reach, profile_views, plus a timeseries metrics array) for the integration's platform — Facebook, Instagram, LinkedIn, Twitter/X, TikTok, Pinterest, or YouTube. The integration_id is an id from list_connected_social_accounts. Some accounts have no account-level analytics to give — a LinkedIn personal profile, or a platform whose reads we have turned off on cost grounds. Those return 200 with a populated unavailable_reason and null metrics, NOT an error. Null there means \\\"not available\\\", not zero. Errors: 400 invalid_value: The integration_id is not a valid UUID. 400 invalid_request: A date, period, or metric value was rejected. 401 authentication_required: API key or token is missing, invalid, or revoked. 401 SOCIAL_TOKEN_EXPIRED: The connected account's token expired and could not be refreshed — the response's reconnect_url points to where to reconnect. 403 permission_denied: Your plan does not include API access. 404 resource_not_found: No integration with that ID exists, or it is not in your org. 429 rate_limit_exceeded: You sent too many requests this minute. 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.\",\"dateModified\":\"2026-11-01T02:42:46.680Z\",\"isPartOf\":{\"@id\":\"https://docs.mymarky.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mymarky.ai/api-reference/get-integration-stats#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mymarky.ai/api-reference/get-integration-stats#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Stats\",\"item\":\"https://docs.mymarky.ai/api-reference/stats-coverage\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get integration stats\",\"item\":\"https://docs.mymarky.ai/api-reference/get-integration-stats\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mymarky.ai/api-reference/get-integration-stats#apireference\",\"headline\":\"Get integration stats\",\"name\":\"Get integration stats\",\"description\":\"Fetch account/page analytics for a single connected integration. Returns the normalized AccountStats model (followers, impressions, reach, profile_views, plus a timeseries metrics array) for the integration's platform — Facebook, Instagram, LinkedIn, Twitter/X, TikTok, Pinterest, or YouTube. The integration_id is an id from list_connected_social_accounts. Some accounts have no account-level analytics to give — a LinkedIn personal profile, or a platform whose reads we have turned off on cost grounds. Those return 200 with a populated unavailable_reason and null metrics, NOT an error. Null there means \\\"not available\\\", not zero. Errors: 400 invalid_value: The integration_id is not a valid UUID. 400 invalid_request: A date, period, or metric value was rejected. 401 authentication_required: API key or token is missing, invalid, or revoked. 401 SOCIAL_TOKEN_EXPIRED: The connected account's token expired and could not be refreshed — the response's reconnect_url points to where to reconnect. 403 permission_denied: Your plan does not include API access. 404 resource_not_found: No integration with that ID exists, or it is not in your org. 429 rate_limit_exceeded: You sent too many requests this minute. 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching stats.\",\"url\":\"https://docs.mymarky.ai/api-reference/get-integration-stats\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mymarky.ai/api-reference/get-integration-stats#webpage\"},\"dateModified\":\"2026-11-01T02:42:46.680Z\",\"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","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}","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","description":"Fetch per-platform analytics for a post published through Marky.\n\nReturns one entry per platform the post was successfully published to,\nwith metrics fetched live from each provider. Stats are normalized into a\nconsistent shape (`likes`, `comment_count`, `reach`, `views`, etc.) across\nFacebook, Instagram, LinkedIn, Twitter, TikTok, Pinterest, and YouTube.\nPlatforms we can't fetch (no success result, disconnected integration,\nexpired token) appear in `skipped`.\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-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","description":"Fetch stats for a single post on a connected platform.\n\n`external_post_id` is the provider's post ID (e.g. Instagram media ID,\nTweet ID, TikTok video ID) — NOT the Marky post ID. Get it from\nlist_integration_posts (each entry's `publish_id`) or get_post_analytics\n(each platform entry's `external_post_id`).\n\nReturns the normalized `PostStats` model (likes, comment_count, reach,\nviews, etc.).\n\nErrors:\n 400 invalid_value: The integration_id is not a valid UUID.\n 400 invalid_request: A metric value or the external_post_id was rejected.\n 401 authentication_required: API key or token is missing, invalid, or revoked.\n 401 SOCIAL_TOKEN_EXPIRED: The connected account's token expired and could not be refreshed — the response's reconnect_url points to where to reconnect.\n 403 permission_denied: Your plan does not include API access.\n 404 resource_not_found: No integration with that ID exists, or it is not in your org.\n 429 rate_limit_exceeded: You sent too many requests this minute.\n 502 UPSTREAM_PROVIDER_ERROR: The social platform returned an error while fetching 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 integration stats - 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"]}