{
"type": "https://api.neuraldraft.io/errors/bad_request",
"title": "Bad request",
"status": 400,
"detail": "Request body could not be parsed.",
"code": "bad_request",
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://neuraldraft.com/errors/payment-required",
"title": "Payment Required",
"status": 402,
"detail": "This project has no credits remaining for the current period.",
"code": "insufficient_credits",
"cost": 1,
"balance": 0,
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://api.neuraldraft.io/errors/forbidden",
"title": "Forbidden",
"status": 403,
"detail": "This API key does not have the `commerce:write` scope.",
"code": "forbidden",
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://api.neuraldraft.io/errors/conflict",
"title": "Conflict",
"status": 409,
"detail": "A resource with this slug already exists.",
"code": "conflict",
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://api.neuraldraft.io/errors/validation_failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields failed validation.",
"code": "validation_failed",
"instance": "req_2Nh4PqRsTuVw",
"errors": {
"customer_email": [
"The customer email field must be a valid email address."
],
"starts_at": [
"The starts at field must be a date after now."
]
}
}
Blog
Create a blog post
Two creation modes:
Manual — provide title, content (HTML), excerpt, etc. The
post is saved immediately as a draft. Costs 0 credits.
AI generation — type: "ai" with topic, and optional style,
word_count, translate_to_all, languages, primary_keyword, …. Returns a
Job with type: blog_post.generate. The post
appears in the database when the job completes. Costs 60 credits
(blog_post: research, writing and its images; each extra language
is 10 credits). Pass generate_images: false for a text-only post.
{
"type": "https://api.neuraldraft.io/errors/bad_request",
"title": "Bad request",
"status": 400,
"detail": "Request body could not be parsed.",
"code": "bad_request",
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://neuraldraft.com/errors/payment-required",
"title": "Payment Required",
"status": 402,
"detail": "This project has no credits remaining for the current period.",
"code": "insufficient_credits",
"cost": 1,
"balance": 0,
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://api.neuraldraft.io/errors/forbidden",
"title": "Forbidden",
"status": 403,
"detail": "This API key does not have the `commerce:write` scope.",
"code": "forbidden",
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://api.neuraldraft.io/errors/conflict",
"title": "Conflict",
"status": 409,
"detail": "A resource with this slug already exists.",
"code": "conflict",
"instance": "req_2Nh4PqRsTuVw"
}
{
"type": "https://api.neuraldraft.io/errors/validation_failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields failed validation.",
"code": "validation_failed",
"instance": "req_2Nh4PqRsTuVw",
"errors": {
"customer_email": [
"The customer email field must be a valid email address."
],
"starts_at": [
"The starts at field must be a date after now."
]
}
}
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Neural Draft","description":"Hosting, CMS, blog, bookings, forms and a shop for sites built with Claude, ChatGPT, Codex or your own code: hosted connector, developer MCP, REST API and TypeScript SDK.","colors":{"primary":"#7C3AED","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/neuraldraftltd/tMEL4V96iTS6cZl7/logo/light.svg?fit=max\u0026auto=format\u0026n=tMEL4V96iTS6cZl7\u0026q=85\u0026s=55f7c7f9e12950f2c9776c2300528e63","dark":"https://mintcdn.com/neuraldraftltd/tMEL4V96iTS6cZl7/logo/dark.svg?fit=max\u0026auto=format\u0026n=tMEL4V96iTS6cZl7\u0026q=85\u0026s=76e3840b6c1572fffa1e9a2a69ae76b5","href":"https://neuraldraft.io"},"favicon":"https://mintcdn.com/neuraldraftltd/tMEL4V96iTS6cZl7/favicon.svg?fit=max\u0026auto=format\u0026n=tMEL4V96iTS6cZl7\u0026q=85\u0026s=49cdd0673d68aede93d5ef9e82ef8050","api":{"openapi":["openapi.yaml"],"playground":{"display":"interactive"},"examples":{"languages":["curl","node","python","php"]}},"appearance":{"default":"system","strict":false},"background":{"decoration":"gradient","color":{"light":"#FFFFFF","dark":"#0B0712"}},"navbar":{"links":[{"href":"/changelog","label":"Changelog"},{"href":"https://neuraldraft.io/pricing","label":"Pricing"},{"href":"https://neuraldraft.io/developers","label":"For developers"}],"primary":{"type":"button","label":"Get API key","href":"https://app.neuraldraft.io/register"}},"footer":{"socials":{"github":"https://github.com/vbalagovic/neuraldraft-sdk","discord":"https://discord.gg/XCQftzvBQX","x":"https://x.com/neuraldraft"},"links":[{"header":"Product","items":[{"label":"Pricing","href":"https://neuraldraft.io/pricing"},{"label":"Changelog","href":"/changelog"},{"label":"Status","href":"https://status.neuraldraft.io"}]},{"header":"Resources","items":[{"label":"SDK on GitHub","href":"https://github.com/vbalagovic/neuraldraft-sdk"},{"label":"MCP on npm","href":"https://www.npmjs.com/package/@neuraldraft/mcp"},{"label":"API reference","href":"/api-reference"},{"label":"Quickstart","href":"/quickstart"}]},{"header":"Community","items":[{"label":"Discord","href":"https://discord.gg/XCQftzvBQX"},{"label":"GitHub issues","href":"https://github.com/vbalagovic/neuraldraft-sdk/issues"}]},{"header":"Company","items":[{"label":"Contact","href":"mailto:info@neuraldraft.io"},{"label":"Terms","href":"https://neuraldraft.io/legal/terms"},{"label":"Privacy","href":"https://neuraldraft.io/legal/privacy"}]}]},"search":{"prompt":"Search the docs, MCP setup, errors, anything"},"seo":{"metatags":{"og:image":"/images/og.png","twitter:card":"summary_large_image"},"indexing":"all"},"fonts":{"family":"Inter"},"errors":{"404":{"redirect":false}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"SDK","icon":"github","href":"https://github.com/vbalagovic/neuraldraft-sdk"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/XCQftzvBQX"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"neuraldraftltd","hasAudioNarration":false,"actualSubdomain":"neuraldraftltd","customDomains":["docs.neuraldraft.io"],"gitSource":{"type":"github","owner":"vbalagovic","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad1c9f672cac692d335a3d9","collectionId":"ae9909c6-2a65-4b47-ab32-e125e4dc9bde","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad1c9f672cac692d335a3d9"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ad1c9f672cac692d335a3d9","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":111},{"language":"default","tag":"Documentation","count":34},{"language":"default","tag":"Commerce","count":20},{"language":"default","tag":"Blog","count":15},{"language":"default","tag":"Booking","count":14},{"language":"default","tag":"Social","count":10},{"language":"default","tag":"Sites","count":7},{"language":"default","tag":"Features","count":7},{"language":"default","tag":"Snippets","count":6},{"language":"default","tag":"Content","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/blog/create-a-blog-post","slug":"/api-reference/blog/create-a-blog-post","pageMetadata":{"title":"Create a blog post","description":"Two creation modes:\n\n1. **Manual** — provide `title`, `content` (HTML), `excerpt`, etc. The\n post is saved immediately as a draft. Costs 0 credits.\n2. **AI generation** — `type: \"ai\"` with `topic`, and optional `style`,\n `word_count`, `translate_to_all`, `languages`, `primary_keyword`, …. Returns a\n [`Job`](#tag/Jobs) with `type: blog_post.generate`. The post\n appears in the database when the job completes. Costs **60 credits**\n (`blog_post`: research, writing and its images; each extra language\n is **10 credits**). Pass `generate_images: false` for a text-only post.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts","href":"/api-reference/blog/create-a-blog-post","autogeneratedByOpenApi":true},"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 a: \"a\",\n code: \"code\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Two creation modes:\"\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Manual\"\n }), \" — provide \", _jsx(_components.code, {\n children: \"title\"\n }), \", \", _jsx(_components.code, {\n children: \"content\"\n }), \" (HTML), \", _jsx(_components.code, {\n children: \"excerpt\"\n }), \", etc. The\\npost is saved immediately as a draft. Costs 0 credits.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"AI generation\"\n }), \" — \", _jsx(_components.code, {\n children: \"type: \\\"ai\\\"\"\n }), \" with \", _jsx(_components.code, {\n children: \"topic\"\n }), \", and optional \", _jsx(_components.code, {\n children: \"style\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"word_count\"\n }), \", \", _jsx(_components.code, {\n children: \"translate_to_all\"\n }), \", \", _jsx(_components.code, {\n children: \"languages\"\n }), \", \", _jsx(_components.code, {\n children: \"primary_keyword\"\n }), \", …. Returns a\\n\", _jsx(_components.a, {\n href: \"#tag/Jobs\",\n children: _jsx(_components.code, {\n children: \"Job\"\n })\n }), \" with \", _jsx(_components.code, {\n children: \"type: blog_post.generate\"\n }), \". The post\\nappears in the database when the job completes. Costs \", _jsx(_components.strong, {\n children: \"60 credits\"\n }), \"\\n(\", _jsx(_components.code, {\n children: \"blog_post\"\n }), \": research, writing and its images; each extra language\\nis \", _jsx(_components.strong, {\n children: \"10 credits\"\n }), \"). Pass \", _jsx(_components.code, {\n children: \"generate_images: false\"\n }), \" for a text-only post.\"]\n }), \"\\n\"]\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":"Create a blog post","description":"Two creation modes:\n\n1. **Manual** — provide `title`, `content` (HTML), `excerpt`, etc. The\n post is saved immediately as a draft. Costs 0 credits.\n2. **AI generation** — `type: \"ai\"` with `topic`, and optional `style`,\n `word_count`, `translate_to_all`, `languages`, `primary_keyword`, …. Returns a\n [`Job`](#tag/Jobs) with `type: blog_post.generate`. The post\n appears in the database when the job completes. Costs **60 credits**\n (`blog_post`: research, writing and its images; each extra language\n is **10 credits**). Pass `generate_images: false` for a text-only post.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts","href":"/api-reference/blog/create-a-blog-post","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Blog"],"summary":"Create a blog post","description":"Two creation modes:\n\n1. **Manual** — provide `title`, `content` (HTML), `excerpt`, etc. The\n post is saved immediately as a draft. Costs 0 credits.\n2. **AI generation** — `type: \"ai\"` with `topic`, and optional `style`,\n `word_count`, `translate_to_all`, `languages`, `primary_keyword`, …. Returns a\n [`Job`](#tag/Jobs) with `type: blog_post.generate`. The post\n appears in the database when the job completes. Costs **60 credits**\n (`blog_post`: research, writing and its images; each extra language\n is **10 credits**). Pass `generate_images: false` for a text-only post.\n","operationId":"createBlogPost","requestBody":"046db944-e54f-4a69-83b2-4116dbcac1ae","responses":{"201":"e714e018-3035-45a6-a38d-86d03513bfb5","202":"08cc39b2-13e2-401c-a27b-bcc92f5200f9","400":"4917b4c2-6965-4851-9de0-90554e8b3d0c","401":"b9a75cdb-6ab6-4615-b364-eed6becd42d6","402":"26f37db0-7523-4a42-b701-2f201f1e22e9","403":"ef3aa18f-fe4b-498c-970d-e95310871dc7","409":"9fe8e595-2a44-44cb-a2d3-72439fd6bac3","422":"33879e02-482e-4790-8db8-791ce19cf80b"},"x-codeSamples":[{"lang":"curl","label":"cURL (AI)","source":"curl -X POST https://api.neuraldraft.io/v1/blog-posts \\\n -H \"Authorization: Bearer ndsk_live_yourkey\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"ai\":{\"topic\":\"5-minute breathwork\",\"word_count\":1200}}'\n"},{"lang":"node","label":"Node (SDK)","source":"const job = await nd.blogPosts.generate({ topic: \"5-minute breathwork\", wordCount: 1200 });\nconst result = await nd.jobs.wait(job.id);\n"},{"lang":"python","label":"Python","source":"job = requests.post(\n \"https://api.neuraldraft.io/v1/blog-posts\",\n headers={\"Authorization\": f\"Bearer {key}\"},\n json={\"ai\": {\"topic\": \"5-minute breathwork\", \"word_count\": 1200}},\n).json()\n"},{"lang":"php","label":"PHP","source":"\u003c?php\n$job = json_decode((string) $client->post('blog-posts', [\n 'headers' => ['Authorization' => 'Bearer '.$key],\n 'json' => ['ai' => ['topic' => '5-minute breathwork', 'word_count' => 1200]],\n])->getBody(), true);\n"}],"method":"post","type":"path","servers":["cf9a8e84-7625-44ea-85d9-7fbebbf681b3","991b008b-a935-475a-bfb5-9324cea3f67a"],"security":["d89a6f08-8c8e-4204-8df4-6d6e14a697c1"],"path":"/blog-posts","baseUrlOptions":["https://api.neuraldraft.io/v1","https://api.staging.neuraldraft.io/v1"],"title":"Create a blog post","codeSamples":[{"label":"cURL (AI)","lang":"curl","source":"curl -X POST https://api.neuraldraft.io/v1/blog-posts \\\n -H \"Authorization: Bearer ndsk_live_yourkey\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"ai\":{\"topic\":\"5-minute breathwork\",\"word_count\":1200}}'\n"},{"label":"Node (SDK)","lang":"node","source":"const job = await nd.blogPosts.generate({ topic: \"5-minute breathwork\", wordCount: 1200 });\nconst result = await nd.jobs.wait(job.id);\n"},{"label":"Python","lang":"python","source":"job = requests.post(\n \"https://api.neuraldraft.io/v1/blog-posts\",\n headers={\"Authorization\": f\"Bearer {key}\"},\n json={\"ai\": {\"topic\": \"5-minute breathwork\", \"word_count\": 1200}},\n).json()\n"},{"label":"PHP","lang":"php","source":"\u003c?php\n$job = json_decode((string) $client->post('blog-posts', [\n 'headers' => ['Authorization' => 'Bearer '.$key],\n 'json' => ['ai' => ['topic' => '5-minute breathwork', 'word_count' => 1200]],\n])->getBody(), true);\n"}],"requestExampleLanguages":["bash","node","python","php"],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["title","content","language_code"],"properties":{"title":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.title","typeLabel":"string"},"content":{"type":"string","description":"HTML body.","isRequired":true,"uniqueKey":"oneOf.0.content","typeLabel":"string"},"language_code":{"type":"string","example":"en","isRequired":true,"uniqueKey":"oneOf.0.language_code","typeLabel":"string"},"slug":{"type":"string","description":"Optional. Auto-generated if omitted.","uniqueKey":"oneOf.0.slug","typeLabel":"string"},"excerpt":{"type":"string","uniqueKey":"oneOf.0.excerpt","typeLabel":"string"},"meta_title":{"type":"string","uniqueKey":"oneOf.0.meta_title","typeLabel":"string"},"meta_description":{"type":"string","uniqueKey":"oneOf.0.meta_description","typeLabel":"string"},"category_id":{"type":"integer","uniqueKey":"oneOf.0.category_id","typeLabel":"integer"},"tag_ids":{"type":"array","items":{"type":"integer","uniqueKey":"oneOf.0.tag_ids.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"oneOf.0.tag_ids","typeLabel":"integer[]"},"featured_image":{"type":"string","format":"uri","uniqueKey":"oneOf.0.featured_image","typeLabel":"string\u003curi>"},"status":{"type":"string","enum":["draft","published","scheduled"],"default":"draft","uniqueKey":"oneOf.0.status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["ai"],"properties":{"ai":{"type":"object","required":["topic"],"properties":{"topic":{"type":"string","example":"5-minute breathwork for anxious mornings","isRequired":true,"uniqueKey":"oneOf.1.ai.topic","typeLabel":"string"},"style":{"type":"string","example":"friendly_professional","uniqueKey":"oneOf.1.ai.style","typeLabel":"string"},"word_count":{"type":"integer","default":1200,"minimum":200,"maximum":5000,"uniqueKey":"oneOf.1.ai.word_count","typeLabel":"integer"},"translate_to_all":{"type":"boolean","default":false,"uniqueKey":"oneOf.1.ai.translate_to_all","typeLabel":"boolean"},"additional_instructions":{"type":"string","uniqueKey":"oneOf.1.ai.additional_instructions","typeLabel":"string"},"target_audience":{"type":"string","uniqueKey":"oneOf.1.ai.target_audience","typeLabel":"string"},"primary_keyword":{"type":"string","uniqueKey":"oneOf.1.ai.primary_keyword","typeLabel":"string"},"secondary_keywords":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.ai.secondary_keywords.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.1.ai.secondary_keywords","typeLabel":"string[]"},"image_style":{"type":"string","example":"warm_lifestyle_photo","uniqueKey":"oneOf.1.ai.image_style","typeLabel":"string"},"enable_research":{"type":"boolean","default":true,"uniqueKey":"oneOf.1.ai.enable_research","typeLabel":"boolean"},"research_depth":{"type":"string","enum":["shallow","normal","deep"],"default":"normal","uniqueKey":"oneOf.1.ai.research_depth","typeLabel":"enum\u003cstring>"},"reference_urls":{"type":"array","items":{"type":"string","format":"uri","uniqueKey":"oneOf.1.ai.reference_urls.items.[INDEX]","typeLabel":"string\u003curi>"},"uniqueKey":"oneOf.1.ai.reference_urls","typeLabel":"string\u003curi>[]"},"category_id":{"type":"integer","uniqueKey":"oneOf.1.ai.category_id","typeLabel":"integer"},"tag_ids":{"type":"array","items":{"type":"integer","uniqueKey":"oneOf.1.ai.tag_ids.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"oneOf.1.ai.tag_ids","typeLabel":"integer[]"}},"isRequired":true,"uniqueKey":"oneOf.1.ai","typeLabel":"object"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"manual":{"title":"manual","value":{"title":"Why Mondays don't have to suck","slug":"why-mondays-dont-have-to-suck","content":"\u003cp>Here's a simple framework…\u003c/p>","excerpt":"A simple framework for resetting the week.","language_code":"en","category_id":7,"status":"draft"}},"ai":{"title":"ai","value":{"ai":{"topic":"5-minute breathwork for anxious mornings","style":"friendly_professional","word_count":1200,"primary_keyword":"morning breathwork","secondary_keywords":["box breathing","nervous system reset"],"translate_to_all":true,"enable_research":true,"image_style":"warm_lifestyle_photo"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"e714e018-3035-45a6-a38d-86d03513bfb5":{"description":"Manual post created (synchronous).","content":{"application/json":{"schema":{"type":"object","required":["id","slug","status","title"],"properties":{"id":{"type":"integer","example":142,"isRequired":true,"uniqueKey":"id","typeLabel":"integer"},"slug":{"type":"string","example":"5-minute-breathwork-for-anxious-mornings","isRequired":true,"uniqueKey":"slug","typeLabel":"string"},"status":{"type":"string","enum":["draft","published","scheduled","archived"],"example":"published","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"featured_image":{"oneOf":[{"type":"string","format":"uri","uniqueKey":"featured_image.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","uniqueKey":"featured_image.oneOf.1","typeLabel":"null"}],"uniqueKey":"featured_image","typeLabel":"string\u003curi> | null"},"published_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"published_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"published_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"published_at","typeLabel":"string\u003cdate-time> | null"},"scheduled_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"scheduled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"scheduled_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"scheduled_at","typeLabel":"string\u003cdate-time> | null"},"excerpt":{"oneOf":[{"type":"string","uniqueKey":"excerpt.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"excerpt.oneOf.1","typeLabel":"null"}],"uniqueKey":"excerpt","typeLabel":"string | null"},"content":{"oneOf":[{"type":"string","description":"HTML for the requested language. Returned by `GET /blog-posts/{id_or_slug}` only.","uniqueKey":"content.oneOf.0","typeLabel":"string"},{"type":"null","description":"HTML for the requested language. Returned by `GET /blog-posts/{id_or_slug}` only.","uniqueKey":"content.oneOf.1","typeLabel":"null"}],"uniqueKey":"content","typeLabel":"string | null"},"meta_title":{"oneOf":[{"type":"string","uniqueKey":"meta_title.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"meta_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta_title","typeLabel":"string | null"},"meta_description":{"oneOf":[{"type":"string","uniqueKey":"meta_description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"meta_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta_description","typeLabel":"string | null"},"category":{"oneOf":[{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"integer","example":7,"isRequired":true,"uniqueKey":"category.oneOf.0.id","typeLabel":"integer"},"name":{"type":"string","example":"Wellness","isRequired":true,"uniqueKey":"category.oneOf.0.name","typeLabel":"string"},"slug":{"type":"string","example":"wellness","isRequired":true,"uniqueKey":"category.oneOf.0.slug","typeLabel":"string"}},"uniqueKey":"category.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"category.oneOf.1","typeLabel":"null"}],"uniqueKey":"category","typeLabel":"object | null"},"tags":{"type":"array","items":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"integer","example":21,"isRequired":true,"uniqueKey":"tags.items.[INDEX].id","typeLabel":"integer"},"name":{"type":"string","example":"breathwork","isRequired":true,"uniqueKey":"tags.items.[INDEX].name","typeLabel":"string"},"slug":{"type":"string","example":"breathwork","isRequired":true,"uniqueKey":"tags.items.[INDEX].slug","typeLabel":"string"}},"uniqueKey":"tags.items.[INDEX]","typeLabel":"object"},"uniqueKey":"tags","typeLabel":"object[]"},"translations":{"type":"array","items":{"type":"object","required":["lang","title","content"],"properties":{"lang":{"type":"string","example":"en","isRequired":true,"uniqueKey":"translations.items.[INDEX].lang","typeLabel":"string"},"title":{"type":"string","isRequired":true,"uniqueKey":"translations.items.[INDEX].title","typeLabel":"string"},"content":{"type":"string","description":"HTML.","isRequired":true,"uniqueKey":"translations.items.[INDEX].content","typeLabel":"string"},"excerpt":{"oneOf":[{"type":"string","uniqueKey":"translations.items.[INDEX].excerpt.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"translations.items.[INDEX].excerpt.oneOf.1","typeLabel":"null"}],"uniqueKey":"translations.items.[INDEX].excerpt","typeLabel":"string | null"},"meta_title":{"oneOf":[{"type":"string","uniqueKey":"translations.items.[INDEX].meta_title.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"translations.items.[INDEX].meta_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"translations.items.[INDEX].meta_title","typeLabel":"string | null"},"meta_description":{"oneOf":[{"type":"string","uniqueKey":"translations.items.[INDEX].meta_description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"translations.items.[INDEX].meta_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"translations.items.[INDEX].meta_description","typeLabel":"string | null"}},"uniqueKey":"translations.items.[INDEX]","typeLabel":"object"},"uniqueKey":"translations","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":142,"slug":"5-minute-breathwork-for-anxious-mornings","status":"published","title":"\u003cstring>","featured_image":"\u003cstring>","published_at":"2023-11-07T05:31:56Z","scheduled_at":"2023-11-07T05:31:56Z","excerpt":"\u003cstring>","content":"\u003cstring>","meta_title":"\u003cstring>","meta_description":"\u003cstring>","category":{"id":7,"name":"Wellness","slug":"wellness"},"tags":[{"id":21,"name":"breathwork","slug":"breathwork"}],"translations":[{"lang":"en","title":"\u003cstring>","content":"\u003cstring>","excerpt":"\u003cstring>","meta_title":"\u003cstring>","meta_description":"\u003cstring>"}],"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"08cc39b2-13e2-401c-a27b-bcc92f5200f9":{"description":"AI generation job queued.","content":{"application/json":{"schema":{"type":"object","required":["id","type","status","created_at"],"properties":{"id":{"type":"string","example":"job_2Ngd9KqLmRpW","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"type":{"type":"string","enum":["blog_post.generate","social_post.generate","image.generate","translation.batch","content_plan.generate","website.generate"],"isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["pending","processing","completed","failed","cancelled"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"progress":{"type":"integer","minimum":0,"maximum":100,"uniqueKey":"progress","typeLabel":"integer"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"steps.items.[INDEX].name","typeLabel":"string"},"completed":{"type":"boolean","uniqueKey":"steps.items.[INDEX].completed","typeLabel":"boolean"},"active":{"type":"boolean","uniqueKey":"steps.items.[INDEX].active","typeLabel":"boolean"}},"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps","typeLabel":"object[]"},"result":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Result payload when `status` is `completed`. Shape depends on `type`:\n\n- `blog_post.generate` → `{ post_id, slug, title }`\n- `social_post.generate` → `{ social_post_id, title, platforms }`\n- `image.generate` → `{ url, key, width, height }`\n- `translation.batch` → `{ keys_translated: int, locales: [string] }`\n","uniqueKey":"result.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Result payload when `status` is `completed`. Shape depends on `type`:\n\n- `blog_post.generate` → `{ post_id, slug, title }`\n- `social_post.generate` → `{ social_post_id, title, platforms }`\n- `image.generate` → `{ url, key, width, height }`\n- `translation.batch` → `{ keys_translated: int, locales: [string] }`\n","uniqueKey":"result.oneOf.1","typeLabel":"null"}],"uniqueKey":"result","typeLabel":"object | null"},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","example":"upstream_unavailable","uniqueKey":"error.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.oneOf.0.message","typeLabel":"string"}},"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"code":{"type":"string","example":"upstream_unavailable"},"message":{"type":"string"}},"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"uniqueKey":"error","typeLabel":"object | null"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"queued":{"title":"queued","value":{"id":"job_2Ngd9KqLmRpW","type":"blog_post.generate","status":"pending","progress":0,"created_at":"2026-04-19T10:14:02Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"4917b4c2-6965-4851-9de0-90554e8b3d0c":{"description":"Malformed request — missing required field, invalid JSON, etc.","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error. The `code` is a stable machine\nidentifier; clients should branch on `code`, never on `title`.\n","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","example":"https://api.neuraldraft.io/errors/validation_failed","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine error code. Standard values:\n`bad_request`, `unauthorized`, `insufficient_credits`,\n`forbidden`, `not_found`, `conflict`, `validation_failed`,\n`rate_limited`, `internal_error`, `service_unavailable`,\n`slot_unavailable`, `connect_not_ready`, `upstream_unavailable`,\n`idempotency_conflict`.\n","example":"validation_failed","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","example":"One or more fields failed validation.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Request id (also returned as `X-Request-Id` header).","example":"req_2Nh4PqRsTuVw","uniqueKey":"instance","typeLabel":"string"},"cost":{"type":"integer","description":"Credits the operation requires. Only present on\n`402 insufficient_credits` responses.\n","example":1,"uniqueKey":"cost","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the project had on hand at the time of the request.\nOnly present on `402 insufficient_credits` responses.\n","example":0,"uniqueKey":"balance","typeLabel":"integer"},"errors":{"type":"object","description":"Field-level validation errors (only on 422).","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"example":{"customer_email":["The customer email field must be a valid email."],"starts_at":["The starts at field must be a valid ISO 8601 date."]},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"bad":{"title":"bad","value":{"type":"https://api.neuraldraft.io/errors/bad_request","title":"Bad request","status":400,"detail":"Request body could not be parsed.","code":"bad_request","instance":"req_2Nh4PqRsTuVw"}}},"exampleType":"examples"}},"exampleType":"examples"},"b9a75cdb-6ab6-4615-b364-eed6becd42d6":{"description":"Missing or invalid API key.","headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"`Bearer realm=\"Neural Draft\"`."},"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error. The `code` is a stable machine\nidentifier; clients should branch on `code`, never on `title`.\n","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","example":"https://api.neuraldraft.io/errors/validation_failed","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine error code. Standard values:\n`bad_request`, `unauthorized`, `insufficient_credits`,\n`forbidden`, `not_found`, `conflict`, `validation_failed`,\n`rate_limited`, `internal_error`, `service_unavailable`,\n`slot_unavailable`, `connect_not_ready`, `upstream_unavailable`,\n`idempotency_conflict`.\n","example":"validation_failed","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","example":"One or more fields failed validation.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Request id (also returned as `X-Request-Id` header).","example":"req_2Nh4PqRsTuVw","uniqueKey":"instance","typeLabel":"string"},"cost":{"type":"integer","description":"Credits the operation requires. Only present on\n`402 insufficient_credits` responses.\n","example":1,"uniqueKey":"cost","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the project had on hand at the time of the request.\nOnly present on `402 insufficient_credits` responses.\n","example":0,"uniqueKey":"balance","typeLabel":"integer"},"errors":{"type":"object","description":"Field-level validation errors (only on 422).","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"example":{"customer_email":["The customer email field must be a valid email."],"starts_at":["The starts at field must be a valid ISO 8601 date."]},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"missing":{"title":"missing","value":{"type":"https://api.neuraldraft.io/errors/unauthorized","title":"Unauthorized","status":401,"detail":"API key missing or invalid.","code":"unauthorized","instance":"req_2Nh4PqRsTuVw"}}},"exampleType":"examples"}},"exampleType":"examples"},"26f37db0-7523-4a42-b701-2f201f1e22e9":{"description":"Insufficient credits. The project does not have enough credits to\ncover the operation. The body includes `cost` (credits the operation\nneeds) and `balance` (credits the project had on hand) so clients\ncan render an exact top-up prompt. Top up at `/projects/me/usage`\nor wait for the next period to start.\n","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error. The `code` is a stable machine\nidentifier; clients should branch on `code`, never on `title`.\n","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","example":"https://api.neuraldraft.io/errors/validation_failed","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine error code. Standard values:\n`bad_request`, `unauthorized`, `insufficient_credits`,\n`forbidden`, `not_found`, `conflict`, `validation_failed`,\n`rate_limited`, `internal_error`, `service_unavailable`,\n`slot_unavailable`, `connect_not_ready`, `upstream_unavailable`,\n`idempotency_conflict`.\n","example":"validation_failed","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","example":"One or more fields failed validation.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Request id (also returned as `X-Request-Id` header).","example":"req_2Nh4PqRsTuVw","uniqueKey":"instance","typeLabel":"string"},"cost":{"type":"integer","description":"Credits the operation requires. Only present on\n`402 insufficient_credits` responses.\n","example":1,"uniqueKey":"cost","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the project had on hand at the time of the request.\nOnly present on `402 insufficient_credits` responses.\n","example":0,"uniqueKey":"balance","typeLabel":"integer"},"errors":{"type":"object","description":"Field-level validation errors (only on 422).","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"example":{"customer_email":["The customer email field must be a valid email."],"starts_at":["The starts at field must be a valid ISO 8601 date."]},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"broke":{"title":"broke","value":{"type":"https://neuraldraft.com/errors/payment-required","title":"Payment Required","status":402,"detail":"This project has no credits remaining for the current period.","code":"insufficient_credits","cost":1,"balance":0,"instance":"req_2Nh4PqRsTuVw"}}},"exampleType":"examples"}},"exampleType":"examples"},"ef3aa18f-fe4b-498c-970d-e95310871dc7":{"description":"API key lacks required scope.","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error. The `code` is a stable machine\nidentifier; clients should branch on `code`, never on `title`.\n","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","example":"https://api.neuraldraft.io/errors/validation_failed","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine error code. Standard values:\n`bad_request`, `unauthorized`, `insufficient_credits`,\n`forbidden`, `not_found`, `conflict`, `validation_failed`,\n`rate_limited`, `internal_error`, `service_unavailable`,\n`slot_unavailable`, `connect_not_ready`, `upstream_unavailable`,\n`idempotency_conflict`.\n","example":"validation_failed","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","example":"One or more fields failed validation.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Request id (also returned as `X-Request-Id` header).","example":"req_2Nh4PqRsTuVw","uniqueKey":"instance","typeLabel":"string"},"cost":{"type":"integer","description":"Credits the operation requires. Only present on\n`402 insufficient_credits` responses.\n","example":1,"uniqueKey":"cost","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the project had on hand at the time of the request.\nOnly present on `402 insufficient_credits` responses.\n","example":0,"uniqueKey":"balance","typeLabel":"integer"},"errors":{"type":"object","description":"Field-level validation errors (only on 422).","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"example":{"customer_email":["The customer email field must be a valid email."],"starts_at":["The starts at field must be a valid ISO 8601 date."]},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"scope":{"title":"scope","value":{"type":"https://api.neuraldraft.io/errors/forbidden","title":"Forbidden","status":403,"detail":"This API key does not have the `commerce:write` scope.","code":"forbidden","instance":"req_2Nh4PqRsTuVw"}}},"exampleType":"examples"}},"exampleType":"examples"},"9fe8e595-2a44-44cb-a2d3-72439fd6bac3":{"description":"Conflicting state — duplicate slug, race condition, etc.","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error. The `code` is a stable machine\nidentifier; clients should branch on `code`, never on `title`.\n","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","example":"https://api.neuraldraft.io/errors/validation_failed","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine error code. Standard values:\n`bad_request`, `unauthorized`, `insufficient_credits`,\n`forbidden`, `not_found`, `conflict`, `validation_failed`,\n`rate_limited`, `internal_error`, `service_unavailable`,\n`slot_unavailable`, `connect_not_ready`, `upstream_unavailable`,\n`idempotency_conflict`.\n","example":"validation_failed","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","example":"One or more fields failed validation.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Request id (also returned as `X-Request-Id` header).","example":"req_2Nh4PqRsTuVw","uniqueKey":"instance","typeLabel":"string"},"cost":{"type":"integer","description":"Credits the operation requires. Only present on\n`402 insufficient_credits` responses.\n","example":1,"uniqueKey":"cost","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the project had on hand at the time of the request.\nOnly present on `402 insufficient_credits` responses.\n","example":0,"uniqueKey":"balance","typeLabel":"integer"},"errors":{"type":"object","description":"Field-level validation errors (only on 422).","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"example":{"customer_email":["The customer email field must be a valid email."],"starts_at":["The starts at field must be a valid ISO 8601 date."]},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"slug":{"title":"slug","value":{"type":"https://api.neuraldraft.io/errors/conflict","title":"Conflict","status":409,"detail":"A resource with this slug already exists.","code":"conflict","instance":"req_2Nh4PqRsTuVw"}}},"exampleType":"examples"}},"exampleType":"examples"},"33879e02-482e-4790-8db8-791ce19cf80b":{"description":"Semantic validation failed (well-formed body, but field values invalid).","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error. The `code` is a stable machine\nidentifier; clients should branch on `code`, never on `title`.\n","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","example":"https://api.neuraldraft.io/errors/validation_failed","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"code":{"type":"string","description":"Stable machine error code. Standard values:\n`bad_request`, `unauthorized`, `insufficient_credits`,\n`forbidden`, `not_found`, `conflict`, `validation_failed`,\n`rate_limited`, `internal_error`, `service_unavailable`,\n`slot_unavailable`, `connect_not_ready`, `upstream_unavailable`,\n`idempotency_conflict`.\n","example":"validation_failed","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","example":"One or more fields failed validation.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Request id (also returned as `X-Request-Id` header).","example":"req_2Nh4PqRsTuVw","uniqueKey":"instance","typeLabel":"string"},"cost":{"type":"integer","description":"Credits the operation requires. Only present on\n`402 insufficient_credits` responses.\n","example":1,"uniqueKey":"cost","typeLabel":"integer"},"balance":{"type":"integer","description":"Credits the project had on hand at the time of the request.\nOnly present on `402 insufficient_credits` responses.\n","example":0,"uniqueKey":"balance","typeLabel":"integer"},"errors":{"type":"object","description":"Field-level validation errors (only on 422).","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"example":{"customer_email":["The customer email field must be a valid email."],"starts_at":["The starts at field must be a valid ISO 8601 date."]},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid":{"title":"invalid","value":{"type":"https://api.neuraldraft.io/errors/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields failed validation.","code":"validation_failed","instance":"req_2Nh4PqRsTuVw","errors":{"customer_email":["The customer email field must be a valid email address."],"starts_at":["The starts at field must be a date after now."]}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"d89a6f08-8c8e-4204-8df4-6d6e14a697c1":{"apiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Project API key. Pass as `Authorization: Bearer ndsk_live_...`. Manage\nkeys via [`/projects/me/api-keys`](#tag/Projects). Test-mode keys use\nthe `ndsk_test_` prefix.\n","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"cf9a8e84-7625-44ea-85d9-7fbebbf681b3":{"url":"https://api.neuraldraft.io/v1","description":"Production"},"991b008b-a935-475a-bfb5-9324cea3f67a":{"url":"https://api.staging.neuraldraft.io/v1","description":"Staging"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Project API key. Pass as `Authorization: Bearer ndsk_live_...`. Manage\nkeys via [`/projects/me/api-keys`](#tag/Projects). Test-mode keys use\nthe `ndsk_test_` prefix.\n","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Project API key. Pass as `Authorization: Bearer ndsk_live_...`. Manage\nkeys via [`/projects/me/api-keys`](#tag/Projects). Test-mode keys use\nthe `ndsk_test_` prefix.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKeyAuth","name":"Authorization"}],"title":"apiKeyAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"neuraldraftltd","siteName":"Neural Draft","title":"Create a blog post - Neural Draft","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T05:42:22.056Z","originalFileLocation":"api-reference/blog/create-a-blog-post.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Two creation modes: 1. Manual — provide title, content (HTML), excerpt, etc. The post is saved immediately as a draft. Costs 0 credits. 2. AI generation — type: \u0026quot;ai\u0026quot; with topic, and optional style, word_count, translate_to_all, languages, primary_keyword, …. Returns a Job with type: blog_post.generate. The post appears in the database when the job completes. Costs 60 credits (blog_post: research, writing and its images; each extra language is 10 credits). Pass generate_images: false for a text-only post.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Neural Draft\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_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/neuraldraftltd/BwjzmUGYBo9_BrKS/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a blog post - Neural Draft\">\u003cmeta data-mint-head property=\"og:description\" content=\"Two creation modes: 1. Manual — provide title, content (HTML), excerpt, etc. The post is saved immediately as a draft. Costs 0 credits. 2. AI generation — type: \u0026quot;ai\u0026quot; with topic, and optional style, word_count, translate_to_all, languages, primary_keyword, …. Returns a Job with type: blog_post.generate. The post appears in the database when the job completes. Costs 60 credits (blog_post: research, writing and its images; each extra language is 10 credits). Pass generate_images: false for a text-only post.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Neural Draft\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://neuraldraftltd.mintlify.app/images/og.png\">\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=\"Create a blog post - Neural Draft\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Two creation modes: 1. Manual — provide title, content (HTML), excerpt, etc. The post is saved immediately as a draft. Costs 0 credits. 2. AI generation — type: \u0026quot;ai\u0026quot; with topic, and optional style, word_count, translate_to_all, languages, primary_keyword, …. Returns a Job with type: blog_post.generate. The post appears in the database when the job completes. Costs 60 credits (blog_post: research, writing and its images; each extra language is 10 credits). Pass generate_images: false for a text-only post.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://neuraldraftltd.mintlify.app/images/og.png\">\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/neuraldraftltd/BwjzmUGYBo9_BrKS/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Neural Draft\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/blog/create-a-blog-post.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.neuraldraft.io/#organization\",\"name\":\"Neural Draft\",\"url\":\"https://docs.neuraldraft.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/neuraldraftltd/tMEL4V96iTS6cZl7/logo/light.svg?fit=max\u0026auto=format\u0026n=tMEL4V96iTS6cZl7\u0026q=85\u0026s=55f7c7f9e12950f2c9776c2300528e63\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.neuraldraft.io#website\",\"name\":\"Neural Draft\",\"url\":\"https://docs.neuraldraft.io\",\"publisher\":{\"@id\":\"https://docs.neuraldraft.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post#webpage\",\"url\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post\",\"name\":\"Create a blog post\",\"description\":\"Two creation modes: 1. Manual — provide title, content (HTML), excerpt, etc. The post is saved immediately as a draft. Costs 0 credits. 2. AI generation — type: \\\"ai\\\" with topic, and optional style, word_count, translate_to_all, languages, primary_keyword, …. Returns a Job with type: blog_post.generate. The post appears in the database when the job completes. Costs 60 credits (blog_post: research, writing and its images; each extra language is 10 credits). Pass generate_images: false for a text-only post.\",\"dateModified\":\"2026-10-16T05:42:22.056Z\",\"isPartOf\":{\"@id\":\"https://docs.neuraldraft.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https://docs.neuraldraft.io/api-reference/blog/list-blog-posts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a blog post\",\"item\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post#apireference\",\"headline\":\"Create a blog post\",\"name\":\"Create a blog post\",\"description\":\"Two creation modes: 1. Manual — provide title, content (HTML), excerpt, etc. The post is saved immediately as a draft. Costs 0 credits. 2. AI generation — type: \\\"ai\\\" with topic, and optional style, word_count, translate_to_all, languages, primary_keyword, …. Returns a Job with type: blog_post.generate. The post appears in the database when the job completes. Costs 60 credits (blog_post: research, writing and its images; each extra language is 10 credits). Pass generate_images: false for a text-only post.\",\"url\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post\",\"mainEntityOfPage\":{\"@id\":\"https://docs.neuraldraft.io/api-reference/blog/create-a-blog-post#webpage\"},\"image\":\"https://docs.neuraldraft.io/images/og.png\",\"dateModified\":\"2026-10-16T05:42:22.056Z\",\"publisher\":{\"@id\":\"https://docs.neuraldraft.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.neuraldraft.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Neural Draft\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Neural Draft","nav":{"global":{"anchors":[{"anchor":"SDK","icon":"github","href":"https://github.com/vbalagovic/neuraldraft-sdk"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/XCQftzvBQX"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Health","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"/openapi.yaml get /health","href":"/api-reference/health/liveness-probe"},{"title":"Serve this OpenAPI document","deprecated":null,"version":null,"openapi":"/openapi.yaml get /openapi.json","href":"/api-reference/health/serve-this-openapi-document"}]},{"group":"Projects","pages":[{"title":"Get the current project","deprecated":null,"version":null,"openapi":"/openapi.yaml get /projects/me","href":"/api-reference/projects/get-the-current-project"},{"title":"Update the current project","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /projects/me","href":"/api-reference/projects/update-the-current-project"},{"title":"Get credit usage for the current period","deprecated":null,"version":null,"openapi":"/openapi.yaml get /projects/me/usage","href":"/api-reference/projects/get-credit-usage-for-the-current-period"},{"title":"List API keys","deprecated":null,"version":null,"openapi":"/openapi.yaml get /projects/me/api-keys","href":"/api-reference/projects/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/openapi.yaml post /projects/me/api-keys","href":"/api-reference/projects/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /projects/me/api-keys/{key_id}","href":"/api-reference/projects/revoke-an-api-key"}]},{"group":"Brand","pages":[{"title":"Get the brand context","deprecated":null,"version":null,"openapi":"/openapi.yaml get /brand","href":"/api-reference/brand/get-the-brand-context"},{"title":"Update the brand context","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /brand","href":"/api-reference/brand/update-the-brand-context"}]},{"group":"Content","pages":[{"title":"List content keys","deprecated":null,"version":null,"openapi":"/openapi.yaml get /content","href":"/api-reference/content/list-content-keys"},{"title":"Bulk read content keys","deprecated":null,"version":null,"openapi":"/openapi.yaml get /content/bulk","href":"/api-reference/content/bulk-read-content-keys"},{"title":"Read a single content value","deprecated":null,"version":null,"openapi":"/openapi.yaml get /content/{key}","href":"/api-reference/content/read-a-single-content-value"},{"title":"Set a content value","deprecated":null,"version":null,"openapi":"/openapi.yaml put /content/{key}","href":"/api-reference/content/set-a-content-value"},{"title":"Delete a content key","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /content/{key}","href":"/api-reference/content/delete-a-content-key"},{"title":"Translate a content key","deprecated":null,"version":null,"openapi":"/openapi.yaml post /content/{key}/translate","href":"/api-reference/content/translate-a-content-key"}]},{"group":"Components","pages":[{"title":"Register an editable HTML component","deprecated":null,"version":null,"openapi":"/openapi.yaml post /components/register","href":"/api-reference/components/register-an-editable-html-component"},{"title":"List components","deprecated":null,"version":null,"openapi":"/openapi.yaml get /components","href":"/api-reference/components/list-components"},{"title":"Get a component","deprecated":null,"version":null,"openapi":"/openapi.yaml get /components/{id}","href":"/api-reference/components/get-a-component"},{"title":"Update component HTML","deprecated":null,"version":null,"openapi":"/openapi.yaml put /components/{id}","href":"/api-reference/components/update-component-html"},{"title":"Delete a component","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /components/{id}","href":"/api-reference/components/delete-a-component"}]},{"group":"Pages","pages":[{"title":"List pages","deprecated":null,"version":null,"openapi":"/openapi.yaml get /pages","href":"/api-reference/pages/list-pages"},{"title":"Create a page","deprecated":null,"version":null,"openapi":"/openapi.yaml post /pages","href":"/api-reference/pages/create-a-page"},{"title":"Fetch a page by id or slug","deprecated":null,"version":null,"openapi":"/openapi.yaml get /pages/{id_or_slug}","href":"/api-reference/pages/fetch-a-page-by-id-or-slug"},{"title":"Soft-retire (default) or hard-delete (force=1) a page","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /pages/{id_or_slug}","href":"/api-reference/pages/soft-retire-default-or-hard-delete-force=1-a-page"},{"title":"Update a page (merge semantics on meta)","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /pages/{id_or_slug}","href":"/api-reference/pages/update-a-page-merge-semantics-on-meta"}]},{"group":"Images","pages":[{"title":"Video generation (retired)","deprecated":true,"version":null,"openapi":"/openapi.yaml post /videos","href":"/api-reference/images/video-generation-retired"},{"title":"List registered images","deprecated":null,"version":null,"openapi":"/openapi.yaml get /images","href":"/api-reference/images/list-registered-images"},{"title":"Generate or upload an image","deprecated":null,"version":null,"openapi":"/openapi.yaml post /images","href":"/api-reference/images/generate-or-upload-an-image"},{"title":"Resolve an image by key","deprecated":null,"version":null,"openapi":"/openapi.yaml get /images/{key}","href":"/api-reference/images/resolve-an-image-by-key"},{"title":"Replace an image","deprecated":null,"version":null,"openapi":"/openapi.yaml put /images/{key}","href":"/api-reference/images/replace-an-image"},{"title":"Delete an image","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /images/{key}","href":"/api-reference/images/delete-an-image"}]},{"group":"Galleries","pages":[{"title":"List galleries","deprecated":null,"version":null,"openapi":"/openapi.yaml get /galleries","href":"/api-reference/galleries/list-galleries"},{"title":"Create a gallery","deprecated":null,"version":null,"openapi":"/openapi.yaml post /galleries","href":"/api-reference/galleries/create-a-gallery"},{"title":"Get a gallery","deprecated":null,"version":null,"openapi":"/openapi.yaml get /galleries/{slug}","href":"/api-reference/galleries/get-a-gallery"},{"title":"Delete a gallery","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /galleries/{slug}","href":"/api-reference/galleries/delete-a-gallery"},{"title":"Update a gallery","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /galleries/{slug}","href":"/api-reference/galleries/update-a-gallery"}]},{"group":"Blog","pages":[{"title":"List blog posts","description":"Paginated list of blog posts. Supports filtering by status, language,\ncategory, and free-text search. Read-only. Does not consume credits.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /blog-posts","href":"/api-reference/blog/list-blog-posts"},{"title":"Create a blog post","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts","href":"/api-reference/blog/create-a-blog-post"},{"title":"Get a blog post","description":"Returns a single post resolved by either numeric id or slug. The\n`lang` query parameter controls which translation is returned in the\nflat `title`/`content`/`excerpt` fields (`translations[]` always\ncontains every available locale).\n\nRead-only. Does not consume credits.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /blog-posts/{id_or_slug}","href":"/api-reference/blog/get-a-blog-post"},{"title":"Delete a blog post","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /blog-posts/{id_or_slug}","href":"/api-reference/blog/delete-a-blog-post"},{"title":"Update a blog post","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /blog-posts/{id_or_slug}","href":"/api-reference/blog/update-a-blog-post"},{"title":"Publish a blog post","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts/{id}/publish","href":"/api-reference/blog/publish-a-blog-post"},{"title":"Schedule a blog post","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts/{id}/schedule","href":"/api-reference/blog/schedule-a-blog-post"},{"title":"Translate a blog post","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts/{id}/translate","href":"/api-reference/blog/translate-a-blog-post"},{"title":"List blog categories","deprecated":null,"version":null,"openapi":"/openapi.yaml get /blog-posts/categories","href":"/api-reference/blog/list-blog-categories"},{"title":"Create a category","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts/categories","href":"/api-reference/blog/create-a-category"},{"title":"Delete a category","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /blog-posts/categories/{id}","href":"/api-reference/blog/delete-a-category"},{"title":"Update a category","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /blog-posts/categories/{id}","href":"/api-reference/blog/update-a-category"},{"title":"List tags","deprecated":null,"version":null,"openapi":"/openapi.yaml get /blog-posts/tags","href":"/api-reference/blog/list-tags"},{"title":"Create a tag","deprecated":null,"version":null,"openapi":"/openapi.yaml post /blog-posts/tags","href":"/api-reference/blog/create-a-tag"},{"title":"Delete a tag","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /blog-posts/tags/{id}","href":"/api-reference/blog/delete-a-tag"}]},{"group":"Social","pages":[{"title":"List social posts","deprecated":null,"version":null,"openapi":"/openapi.yaml get /social-posts","href":"/api-reference/social/list-social-posts"},{"title":"Create a social post","deprecated":null,"version":null,"openapi":"/openapi.yaml post /social-posts","href":"/api-reference/social/create-a-social-post"},{"title":"Get a social post","deprecated":null,"version":null,"openapi":"/openapi.yaml get /social-posts/{id}","href":"/api-reference/social/get-a-social-post"},{"title":"Delete a social post","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /social-posts/{id}","href":"/api-reference/social/delete-a-social-post"},{"title":"Update a social post","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /social-posts/{id}","href":"/api-reference/social/update-a-social-post"},{"title":"Schedule a social post","deprecated":null,"version":null,"openapi":"/openapi.yaml post /social-posts/{id}/schedule","href":"/api-reference/social/schedule-a-social-post"},{"title":"Publish a social post immediately","deprecated":null,"version":null,"openapi":"/openapi.yaml post /social-posts/{id}/publish","href":"/api-reference/social/publish-a-social-post-immediately"},{"title":"List connected social accounts","deprecated":null,"version":null,"openapi":"/openapi.yaml get /social-accounts","href":"/api-reference/social/list-connected-social-accounts"},{"title":"Initiate OAuth connection","deprecated":null,"version":null,"openapi":"/openapi.yaml post /social-accounts/connect/{platform}","href":"/api-reference/social/initiate-oauth-connection"},{"title":"Disconnect a social account","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /social-accounts/{id}","href":"/api-reference/social/disconnect-a-social-account"}]},{"group":"Booking","pages":[{"title":"List bookable services","deprecated":null,"version":null,"openapi":"/openapi.yaml get /bookable-services","href":"/api-reference/booking/list-bookable-services"},{"title":"Create a bookable service","deprecated":null,"version":null,"openapi":"/openapi.yaml post /bookable-services","href":"/api-reference/booking/create-a-bookable-service"},{"title":"Get a bookable service","deprecated":null,"version":null,"openapi":"/openapi.yaml get /bookable-services/{id}","href":"/api-reference/booking/get-a-bookable-service"},{"title":"Delete a bookable service","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /bookable-services/{id}","href":"/api-reference/booking/delete-a-bookable-service"},{"title":"Update a bookable service","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /bookable-services/{id}","href":"/api-reference/booking/update-a-bookable-service"},{"title":"Look up available slots","deprecated":null,"version":null,"openapi":"/openapi.yaml get /availability","href":"/api-reference/booking/look-up-available-slots"},{"title":"Public availability lookup","deprecated":null,"version":null,"openapi":"/openapi.yaml get /public/availability","href":"/api-reference/booking/public-availability-lookup"},{"title":"List bookings","deprecated":null,"version":null,"openapi":"/openapi.yaml get /bookings","href":"/api-reference/booking/list-bookings"},{"title":"Create a booking (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /bookings","href":"/api-reference/booking/create-a-booking-admin"},{"title":"Get a booking","deprecated":null,"version":null,"openapi":"/openapi.yaml get /bookings/{id}","href":"/api-reference/booking/get-a-booking"},{"title":"Cancel a booking","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /bookings/{id}","href":"/api-reference/booking/cancel-a-booking"},{"title":"Update a booking","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /bookings/{id}","href":"/api-reference/booking/update-a-booking"},{"title":"Public booking lookup by reference","deprecated":null,"version":null,"openapi":"/openapi.yaml get /public/bookings/{ref}","href":"/api-reference/booking/public-booking-lookup-by-reference"},{"title":"Embeddable booking widget script","deprecated":null,"version":null,"openapi":"/openapi.yaml get /widgets/booking/{tenant_id}/{service_id}.js","href":"/api-reference/booking/embeddable-booking-widget-script"}]},{"group":"Commerce","pages":[{"title":"List products","deprecated":null,"version":null,"openapi":"/openapi.yaml get /products","href":"/api-reference/commerce/list-products"},{"title":"Create a product","deprecated":null,"version":null,"openapi":"/openapi.yaml post /products","href":"/api-reference/commerce/create-a-product"},{"title":"Get a product","deprecated":null,"version":null,"openapi":"/openapi.yaml get /products/{id}","href":"/api-reference/commerce/get-a-product"},{"title":"Delete a product","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /products/{id}","href":"/api-reference/commerce/delete-a-product"},{"title":"Update a product","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /products/{id}","href":"/api-reference/commerce/update-a-product"},{"title":"List product variants","deprecated":null,"version":null,"openapi":"/openapi.yaml get /products/{id}/variants","href":"/api-reference/commerce/list-product-variants"},{"title":"Create a product variant","deprecated":null,"version":null,"openapi":"/openapi.yaml post /products/{id}/variants","href":"/api-reference/commerce/create-a-product-variant"},{"title":"Delete a product variant","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /products/{id}/variants/{variant_id}","href":"/api-reference/commerce/delete-a-product-variant"},{"title":"Update a product variant","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /products/{id}/variants/{variant_id}","href":"/api-reference/commerce/update-a-product-variant"},{"title":"List product categories (tree)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /product-categories","href":"/api-reference/commerce/list-product-categories-tree"},{"title":"Create a product category","deprecated":null,"version":null,"openapi":"/openapi.yaml post /product-categories","href":"/api-reference/commerce/create-a-product-category"},{"title":"Delete a product category","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /product-categories/{id}","href":"/api-reference/commerce/delete-a-product-category"},{"title":"Update a product category","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /product-categories/{id}","href":"/api-reference/commerce/update-a-product-category"},{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.yaml get /orders","href":"/api-reference/commerce/list-orders"},{"title":"Create a manual order (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /orders","href":"/api-reference/commerce/create-a-manual-order-admin"},{"title":"Get an order","deprecated":null,"version":null,"openapi":"/openapi.yaml get /orders/{id}","href":"/api-reference/commerce/get-an-order"},{"title":"Public order lookup","deprecated":null,"version":null,"openapi":"/openapi.yaml get /public/orders/{order_number}","href":"/api-reference/commerce/public-order-lookup"},{"title":"Create a Stripe Checkout session","deprecated":null,"version":null,"openapi":"/openapi.yaml post /checkout-sessions","href":"/api-reference/commerce/create-a-stripe-checkout-session"},{"title":"Embeddable product card script","deprecated":null,"version":null,"openapi":"/openapi.yaml get /widgets/product-card/{tenant_id}/{product_id}.js","href":"/api-reference/commerce/embeddable-product-card-script"},{"title":"Embeddable buy-button script","deprecated":null,"version":null,"openapi":"/openapi.yaml get /widgets/buy-button/{tenant_id}/{product_id}.js","href":"/api-reference/commerce/embeddable-buy-button-script"}]},{"group":"Jobs","pages":[{"title":"Get job status","deprecated":null,"version":null,"openapi":"/openapi.yaml get /jobs/{id}","href":"/api-reference/jobs/get-job-status"},{"title":"Stream job progress (SSE)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /jobs/{id}/stream","href":"/api-reference/jobs/stream-job-progress-sse"},{"title":"Cancel a job","deprecated":null,"version":null,"openapi":"/openapi.yaml post /jobs/{id}/cancel","href":"/api-reference/jobs/cancel-a-job"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhook-endpoints","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml post /webhook-endpoints","href":"/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /webhook-endpoints/{id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /webhook-endpoints/{id}","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"List recent webhook deliveries","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhook-deliveries","href":"/api-reference/webhooks/list-recent-webhook-deliveries"},{"title":"Retry a webhook delivery","deprecated":null,"version":null,"openapi":"/openapi.yaml post /webhook-deliveries/{id}/retry","href":"/api-reference/webhooks/retry-a-webhook-delivery"}]},{"group":"Forms","pages":[{"title":"Subscribe to a project newsletter","deprecated":null,"version":null,"openapi":"/openapi.yaml post /newsletters/subscribe","href":"/api-reference/forms/subscribe-to-a-project-newsletter"},{"title":"List newsletter subscribers","deprecated":null,"version":null,"openapi":"/openapi.yaml get /newsletters","href":"/api-reference/forms/list-newsletter-subscribers"},{"title":"Delete (unsubscribe) a newsletter subscriber","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /newsletters/{id}","href":"/api-reference/forms/delete-unsubscribe-a-newsletter-subscriber"},{"title":"List contact-form submissions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /contact-forms","href":"/api-reference/forms/list-contact-form-submissions"},{"title":"Submit a contact form","deprecated":null,"version":null,"openapi":"/openapi.yaml post /contact-forms","href":"/api-reference/forms/submit-a-contact-form"},{"title":"Delete a contact-form submission","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /contact-forms/{id}","href":"/api-reference/forms/delete-a-contact-form-submission"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Create a blog post - Neural Draft","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}