{
"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/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."
]
}
}
Public endpoint — no API key required when called from a browser
embed. The project is resolved via the
X-NeuralDraft-Project-Key header (recommended for server-side calls)
or ?project_id=<id> query param (browser embeds where you can’t
ship a secret key). Idempotent — re-submitting an existing email
returns 200 with status="already_subscribed" rather than an error.
Free; no credits charged.
{
"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/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/forms/subscribe-to-a-project-newsletter","slug":"/api-reference/forms/subscribe-to-a-project-newsletter","pageMetadata":{"title":"Subscribe to a project newsletter","description":"**Public** endpoint — no API key required when called from a browser\nembed. The project is resolved via the\n`X-NeuralDraft-Project-Key` header (recommended for server-side calls)\nor `?project_id=\u003cid>` query param (browser embeds where you can't\nship a secret key). Idempotent — re-submitting an existing email\nreturns 200 with `status=\"already_subscribed\"` rather than an error.\nFree; no credits charged.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /newsletters/subscribe","href":"/api-reference/forms/subscribe-to-a-project-newsletter","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Public\"\n }), \" endpoint — no API key required when called from a browser\\nembed. The project is resolved via the\\n\", _jsx(_components.code, {\n children: \"X-NeuralDraft-Project-Key\"\n }), \" header (recommended for server-side calls)\\nor \", _jsx(_components.code, {\n children: \"?project_id=\u003cid>\"\n }), \" query param (browser embeds where you can’t\\nship a secret key). Idempotent — re-submitting an existing email\\nreturns 200 with \", _jsx(_components.code, {\n children: \"status=\\\"already_subscribed\\\"\"\n }), \" rather than an error.\\nFree; no credits charged.\"]\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":"Subscribe to a project newsletter","description":"**Public** endpoint — no API key required when called from a browser\nembed. The project is resolved via the\n`X-NeuralDraft-Project-Key` header (recommended for server-side calls)\nor `?project_id=\u003cid>` query param (browser embeds where you can't\nship a secret key). Idempotent — re-submitting an existing email\nreturns 200 with `status=\"already_subscribed\"` rather than an error.\nFree; no credits charged.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /newsletters/subscribe","href":"/api-reference/forms/subscribe-to-a-project-newsletter","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Forms"],"summary":"Subscribe to a project newsletter","description":"**Public** endpoint — no API key required when called from a browser\nembed. The project is resolved via the\n`X-NeuralDraft-Project-Key` header (recommended for server-side calls)\nor `?project_id=\u003cid>` query param (browser embeds where you can't\nship a secret key). Idempotent — re-submitting an existing email\nreturns 200 with `status=\"already_subscribed\"` rather than an error.\nFree; no credits charged.\n","operationId":"subscribeNewsletter","security":[],"parameters":["863785fe-34cd-4d19-a1a3-ef7db467e2a7","92ae20ef-5577-4ba2-bd95-8ccb56009cc8"],"requestBody":"619c34e9-ad12-4273-a3cd-decab8f2dbd2","responses":{"200":"35486831-2a92-4a38-95ad-cf487898488b","201":"1a2cf787-d536-497c-b576-fec8f219ed54","403":"c7ce43b1-967a-495f-ae71-69b3c6dffe24","422":"ab3f942b-0537-4ff6-982a-d140c292f761","429":"fc96946f-6c81-48d5-b6e9-621a8973b75e"},"method":"post","type":"path","servers":["cf9a8e84-7625-44ea-85d9-7fbebbf681b3","991b008b-a935-475a-bfb5-9324cea3f67a"],"path":"/newsletters/subscribe","baseUrlOptions":["https://api.neuraldraft.io/v1","https://api.staging.neuraldraft.io/v1"],"title":"Subscribe to a project newsletter","codeSamples":[],"requestExampleLanguages":["bash","node","python","php"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"863785fe-34cd-4d19-a1a3-ef7db467e2a7":{"in":"header","name":"X-NeuralDraft-Project-Key","schema":{"type":"string","isRequired":false,"description":"Project API key (alternative to query param).","uniqueKey":"","typeLabel":"string"},"required":false,"description":"Project API key (alternative to query param)."},"92ae20ef-5577-4ba2-bd95-8ccb56009cc8":{"in":"query","name":"project_id","schema":{"type":"integer","isRequired":false,"description":"Project ID for unauthenticated browser embeds.","uniqueKey":"","typeLabel":"integer"},"required":false,"description":"Project ID for unauthenticated browser embeds."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","maxLength":255,"isRequired":true,"uniqueKey":"email","typeLabel":"string\u003cemail>"},"app_lead":{"type":"boolean","default":false,"description":"Marks the lead as coming from a \"want the app\" landing surface vs. a regular newsletter signup.","uniqueKey":"app_lead","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"basic":{"title":"basic","value":{"email":"jane@example.com"}},"app_lead":{"title":"app_lead","value":{"email":"jane@example.com","app_lead":true}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"35486831-2a92-4a38-95ad-cf487898488b":{"description":"Email already subscribed (idempotent).","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","email"],"properties":{"id":{"type":"integer","example":42,"isRequired":true,"uniqueKey":"data.id","typeLabel":"integer"},"email":{"type":"string","format":"email","example":"jane@example.com","isRequired":true,"uniqueKey":"data.email","typeLabel":"string\u003cemail>"},"app_lead":{"type":"boolean","example":false,"uniqueKey":"data.app_lead","typeLabel":"boolean"},"status":{"type":"string","enum":["subscribed","already_subscribed"],"description":"Only present on the public submit endpoint.","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"subscribed_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"data.subscribed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"data.subscribed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.subscribed_at","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":42,"email":"jane@example.com","app_lead":false,"status":"subscribed","subscribed_at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"1a2cf787-d536-497c-b576-fec8f219ed54":{"description":"New subscription created.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","email"],"properties":{"id":{"type":"integer","example":42,"isRequired":true,"uniqueKey":"data.id","typeLabel":"integer"},"email":{"type":"string","format":"email","example":"jane@example.com","isRequired":true,"uniqueKey":"data.email","typeLabel":"string\u003cemail>"},"app_lead":{"type":"boolean","example":false,"uniqueKey":"data.app_lead","typeLabel":"boolean"},"status":{"type":"string","enum":["subscribed","already_subscribed"],"description":"Only present on the public submit endpoint.","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"subscribed_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"data.subscribed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"data.subscribed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.subscribed_at","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":42,"email":"jane@example.com","app_lead":false,"status":"subscribed","subscribed_at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c7ce43b1-967a-495f-ae71-69b3c6dffe24":{"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"},"ab3f942b-0537-4ff6-982a-d140c292f761":{"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"},"fc96946f-6c81-48d5-b6e9-621a8973b75e":{"description":"Rate limit hit. Project default is 60 req/min, burst 120. Wait\n`Retry-After` seconds and retry.\n","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"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":{"ratelimited":{"title":"ratelimited","value":{"type":"https://api.neuraldraft.io/errors/rate_limited","title":"Too many requests","status":429,"detail":"Rate limit exceeded. Retry in 12 seconds.","code":"rate_limited","instance":"req_2Nh4PqRsTuVw"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{},"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"}}},"originalFileLocation":"openapi.yaml"},"subdomain":"neuraldraftltd","siteName":"Neural Draft","title":"Subscribe to a project newsletter - Neural Draft","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T05:42:22.899Z","originalFileLocation":"api-reference/forms/subscribe-to-a-project-newsletter.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=\"Public endpoint — no API key required when called from a browser embed. The project is resolved via the X-NeuralDraft-Project-Key header (recommended for server-side calls) or ?project_id= query param (browser embeds where you can\u0026#x27;t ship a secret key). Idempotent — re-submitting an existing email returns 200 with status=\u0026quot;already_subscribed\u0026quot; rather than an error. Free; no credits charged.\">\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=\"Subscribe to a project newsletter - Neural Draft\">\u003cmeta data-mint-head property=\"og:description\" content=\"Public endpoint — no API key required when called from a browser embed. The project is resolved via the X-NeuralDraft-Project-Key header (recommended for server-side calls) or ?project_id= query param (browser embeds where you can\u0026#x27;t ship a secret key). Idempotent — re-submitting an existing email returns 200 with status=\u0026quot;already_subscribed\u0026quot; rather than an error. Free; no credits charged.\">\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/forms/subscribe-to-a-project-newsletter\">\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=\"Subscribe to a project newsletter - Neural Draft\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Public endpoint — no API key required when called from a browser embed. The project is resolved via the X-NeuralDraft-Project-Key header (recommended for server-side calls) or ?project_id= query param (browser embeds where you can\u0026#x27;t ship a secret key). Idempotent — re-submitting an existing email returns 200 with status=\u0026quot;already_subscribed\u0026quot; rather than an error. Free; no credits charged.\">\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/forms/subscribe-to-a-project-newsletter\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/forms/subscribe-to-a-project-newsletter.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/forms/subscribe-to-a-project-newsletter#webpage\",\"url\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter\",\"name\":\"Subscribe to a project newsletter\",\"description\":\"Public endpoint — no API key required when called from a browser embed. The project is resolved via the X-NeuralDraft-Project-Key header (recommended for server-side calls) or ?project_id= query param (browser embeds where you can't ship a secret key). Idempotent — re-submitting an existing email returns 200 with status=\\\"already_subscribed\\\" rather than an error. Free; no credits charged.\",\"dateModified\":\"2026-10-16T05:42:22.899Z\",\"isPartOf\":{\"@id\":\"https://docs.neuraldraft.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Neural Draft\",\"item\":\"https://docs.neuraldraft.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Subscribe to a project newsletter\",\"item\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter#apireference\",\"headline\":\"Subscribe to a project newsletter\",\"name\":\"Subscribe to a project newsletter\",\"description\":\"Public endpoint — no API key required when called from a browser embed. The project is resolved via the X-NeuralDraft-Project-Key header (recommended for server-side calls) or ?project_id= query param (browser embeds where you can't ship a secret key). Idempotent — re-submitting an existing email returns 200 with status=\\\"already_subscribed\\\" rather than an error. Free; no credits charged.\",\"url\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter\",\"mainEntityOfPage\":{\"@id\":\"https://docs.neuraldraft.io/api-reference/forms/subscribe-to-a-project-newsletter#webpage\"},\"image\":\"https://docs.neuraldraft.io/images/og.png\",\"dateModified\":\"2026-10-16T05:42:22.899Z\",\"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","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","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","description":"Manually re-attempts a previously-failed delivery. The original\npayload and signature are preserved (so signature verification on\nthe receiving side still works).\n","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","description":"Requires `forms:read` scope.","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":"Subscribe to a project newsletter - 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"]}