On Meta the edit is full-replace: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum body. Sending only body on a template that has a header, footer, and buttons drops them and is rejected with 409 (META_096).
The same applies to limitedTimeOffer — an existing offer is removed if you do not send it again.
After a successful edit the status returns to PENDING for re-review, and the local record is synced.
Constraints
name and language cannot be changed and cannot be sent.
Editing is allowed only when the template is APPROVED, REJECTED, or PAUSED. Any other status returns 409 (META_096).
An active template can be edited only once in 24 hours; exceeding that returns 429 (META_097).
category changes are effective only for REJECTED / PAUSED templates; Meta rejects a category change on an APPROVED one. Changes are subject to review.
carousel is not accepted on edit at all. An existing carousel template’s cards cannot be edited through this API — create a new template instead.
Validation differences from create
Button, header, and body rules are identical to Create Template (WA_TPL_001–005, 015–020, 006–010, 021, 011–014).
The category rules (WA_TPL_022–033) and the name rule (WA_TPL_034) are not evaluated here, since name cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a META_0xx error rather than a WA_TPL_0xx one.
Limited-time offer rules apply as on create, except that the MARKETING check (WA_TPL_048) runs only when you also send a category; if you omit it, Meta validates the offer against the template’s existing category.
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"errors": {
"code": "META_096",
"group": "CONFLICT",
"description": "Template update failed. Template is not in an editable status (editable only when APPROVED, REJECTED or PAUSED; it may be PENDING after a recent edit)."
},
"isSuccess": false
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
Secret key in Bearer sk_... format. Server-to-server only — never embed it in a browser or mobile client. The organization is resolved from the key, so organization_id is never passed explicitly.
Determines which components are allowed. UTILITY for transactional messages, MARKETING for promotional, AUTHENTICATION for one-time passcodes.
Available options:
UTILITY,
MARKETING,
AUTHENTICATION
Response
The updated template re-fetched from Meta, with status: "PENDING". With Prefer: return=minimal the data key is omitted entirely — the response is exactly { "isSuccess": true }, still HTTP 200.
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"errors": {
"code": "META_096",
"group": "CONFLICT",
"description": "Template update failed. Template is not in an editable status (editable only when APPROVED, REJECTED or PAUSED; it may be PENDING after a recent edit)."
},
"isSuccess": false
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{
"isSuccess": false,
"errors": {
"code": "META_075",
"group": "VALIDATION",
"description": "Template with 0000000000 not found in Meta.",
"params": {},
"fields": {}
}
}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Connexease Gateway","description":"Connexease Gateway Integration Document","colors":{"primary":"#0B0C36","light":"#0B0C36","dark":"#0B0C36"},"logo":"https://mintcdn.com/connexease/yT3a9JqKtN8wzcNE/images/logo_dark_with_text.svg?fit=max\u0026auto=format\u0026n=yT3a9JqKtN8wzcNE\u0026q=85\u0026s=c157f165c8033b5d3b64eac2abbc86c9","favicon":"https://mintcdn.com/connexease/yT3a9JqKtN8wzcNE/images/logo_dark.svg?fit=max\u0026auto=format\u0026n=yT3a9JqKtN8wzcNE\u0026q=85\u0026s=9835e72df2c5387e63e1edd6ce793fd7","api":{"openapi":"openapi.json","playground":{"display":"interactive","proxy":true}},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"https://gateway.connexease.com","label":"Dashboard"},{"href":"https://pro.releasepad.io/en/585e1fe6-9c22-11f1-b50f-0a9a9391db91","label":"Newsletter"}]},"search":{"prompt":"Ask"},"seo":{"indexing":"navigable"},"integrations":{"ga4":{"measurementId":"G-YG7TW2XWVW"}},"banner":{"content":"Welcome to the Connexease Gateway API Documentation!","dismissible":true},"thumbnails":{"appearance":"light"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"connexease","hasAudioNarration":false,"actualSubdomain":"connexease","customDomains":["docs.gateway.connexease.com"],"gitSource":{"type":"github","owner":"abdullahkulcu","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae5141b88130c8dfdcdce64","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Public API","count":33},{"language":"default","tag":"Gateway Dashboard","count":16},{"language":"default","tag":"Messaging API","count":15},{"language":"default","tag":"Template","count":13},{"language":"default","tag":"Sandbox Public API","count":13},{"language":"default","tag":"Templates","count":9},{"language":"default","tag":"Dashboard","count":9},{"language":"default","tag":"Integration Guides","count":8},{"language":"default","tag":"Reference","count":7},{"language":"default","tag":"Essentials","count":7}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/template/update-template","slug":"/api-reference/template/update-template","pageMetadata":{"title":"Update Template","description":"Edits the components of an existing template.\n\n## Full-replace semantics\n\nOn Meta the edit is **full-replace**: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum `body`. Sending only `body` on a template that has a header, footer, and buttons drops them and is rejected with `409` (`META_096`).\n\nThe same applies to `limitedTimeOffer` — an existing offer is removed if you do not send it again.\n\nAfter a successful edit the status returns to `PENDING` for re-review, and the local record is synced.\n\n## Constraints\n\n- `name` and `language` cannot be changed and cannot be sent.\n- Editing is allowed only when the template is `APPROVED`, `REJECTED`, or `PAUSED`. Any other status returns `409` (`META_096`).\n- An active template can be edited only once in 24 hours; exceeding that returns `429` (`META_097`).\n- `category` changes are effective only for `REJECTED` / `PAUSED` templates; Meta rejects a category change on an `APPROVED` one. Changes are subject to review.\n- `carousel` is not accepted on edit at all. An existing carousel template's cards cannot be edited through this API — create a new template instead.\n\n## Validation differences from create\n\nButton, header, and body rules are identical to Create Template (`WA_TPL_001`–`005`, `015`–`020`, `006`–`010`, `021`, `011`–`014`).\n\nThe **category rules** (`WA_TPL_022`–`033`) and the **name rule** (`WA_TPL_034`) are not evaluated here, since `name` cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a `META_0xx` error rather than a `WA_TPL_0xx` one.\n\nLimited-time offer rules apply as on create, except that the `MARKETING` check (`WA_TPL_048`) runs only when you also send a `category`; if you omit it, Meta validates the offer against the template's existing category.","deprecated":null,"version":null,"openapi":"/public-openapi.json post /wa/{app_id}/templates/{source_id}","href":"/api-reference/template/update-template","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 code: \"code\",\n h2: \"h2\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Edits the components of an existing template.\"\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Full-replace semantics\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"On Meta the edit is \", _jsx(_components.strong, {\n children: \"full-replace\"\n }), \": the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum \", _jsx(_components.code, {\n children: \"body\"\n }), \". Sending only \", _jsx(_components.code, {\n children: \"body\"\n }), \" on a template that has a header, footer, and buttons drops them and is rejected with \", _jsx(_components.code, {\n children: \"409\"\n }), \" (\", _jsx(_components.code, {\n children: \"META_096\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The same applies to \", _jsx(_components.code, {\n children: \"limitedTimeOffer\"\n }), \" — an existing offer is removed if you do not send it again.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After a successful edit the status returns to \", _jsx(_components.code, {\n children: \"PENDING\"\n }), \" for re-review, and the local record is synced.\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Constraints\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"name\"\n }), \" and \", _jsx(_components.code, {\n children: \"language\"\n }), \" cannot be changed and cannot be sent.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Editing is allowed only when the template is \", _jsx(_components.code, {\n children: \"APPROVED\"\n }), \", \", _jsx(_components.code, {\n children: \"REJECTED\"\n }), \", or \", _jsx(_components.code, {\n children: \"PAUSED\"\n }), \". Any other status returns \", _jsx(_components.code, {\n children: \"409\"\n }), \" (\", _jsx(_components.code, {\n children: \"META_096\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"An active template can be edited only once in 24 hours; exceeding that returns \", _jsx(_components.code, {\n children: \"429\"\n }), \" (\", _jsx(_components.code, {\n children: \"META_097\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"category\"\n }), \" changes are effective only for \", _jsx(_components.code, {\n children: \"REJECTED\"\n }), \" / \", _jsx(_components.code, {\n children: \"PAUSED\"\n }), \" templates; Meta rejects a category change on an \", _jsx(_components.code, {\n children: \"APPROVED\"\n }), \" one. Changes are subject to review.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"carousel\"\n }), \" is not accepted on edit at all. An existing carousel template’s cards cannot be edited through this API — create a new template instead.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Validation differences from create\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Button, header, and body rules are identical to Create Template (\", _jsx(_components.code, {\n children: \"WA_TPL_001\"\n }), \"–\", _jsx(_components.code, {\n children: \"005\"\n }), \", \", _jsx(_components.code, {\n children: \"015\"\n }), \"–\", _jsx(_components.code, {\n children: \"020\"\n }), \", \", _jsx(_components.code, {\n children: \"006\"\n }), \"–\", _jsx(_components.code, {\n children: \"010\"\n }), \", \", _jsx(_components.code, {\n children: \"021\"\n }), \", \", _jsx(_components.code, {\n children: \"011\"\n }), \"–\", _jsx(_components.code, {\n children: \"014\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The \", _jsx(_components.strong, {\n children: \"category rules\"\n }), \" (\", _jsx(_components.code, {\n children: \"WA_TPL_022\"\n }), \"–\", _jsx(_components.code, {\n children: \"033\"\n }), \") and the \", _jsx(_components.strong, {\n children: \"name rule\"\n }), \" (\", _jsx(_components.code, {\n children: \"WA_TPL_034\"\n }), \") are not evaluated here, since \", _jsx(_components.code, {\n children: \"name\"\n }), \" cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a \", _jsx(_components.code, {\n children: \"META_0xx\"\n }), \" error rather than a \", _jsx(_components.code, {\n children: \"WA_TPL_0xx\"\n }), \" one.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Limited-time offer rules apply as on create, except that the \", _jsx(_components.code, {\n children: \"MARKETING\"\n }), \" check (\", _jsx(_components.code, {\n children: \"WA_TPL_048\"\n }), \") runs only when you also send a \", _jsx(_components.code, {\n children: \"category\"\n }), \"; if you omit it, Meta validates the offer against the template’s existing category.\"]\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":"Update Template","description":"Edits the components of an existing template.\n\n## Full-replace semantics\n\nOn Meta the edit is **full-replace**: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum `body`. Sending only `body` on a template that has a header, footer, and buttons drops them and is rejected with `409` (`META_096`).\n\nThe same applies to `limitedTimeOffer` — an existing offer is removed if you do not send it again.\n\nAfter a successful edit the status returns to `PENDING` for re-review, and the local record is synced.\n\n## Constraints\n\n- `name` and `language` cannot be changed and cannot be sent.\n- Editing is allowed only when the template is `APPROVED`, `REJECTED`, or `PAUSED`. Any other status returns `409` (`META_096`).\n- An active template can be edited only once in 24 hours; exceeding that returns `429` (`META_097`).\n- `category` changes are effective only for `REJECTED` / `PAUSED` templates; Meta rejects a category change on an `APPROVED` one. Changes are subject to review.\n- `carousel` is not accepted on edit at all. An existing carousel template's cards cannot be edited through this API — create a new template instead.\n\n## Validation differences from create\n\nButton, header, and body rules are identical to Create Template (`WA_TPL_001`–`005`, `015`–`020`, `006`–`010`, `021`, `011`–`014`).\n\nThe **category rules** (`WA_TPL_022`–`033`) and the **name rule** (`WA_TPL_034`) are not evaluated here, since `name` cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a `META_0xx` error rather than a `WA_TPL_0xx` one.\n\nLimited-time offer rules apply as on create, except that the `MARKETING` check (`WA_TPL_048`) runs only when you also send a `category`; if you omit it, Meta validates the offer against the template's existing category.","deprecated":null,"version":null,"openapi":"/public-openapi.json post /wa/{app_id}/templates/{source_id}","href":"/api-reference/template/update-template","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Template"],"summary":"Update Template","operationId":"updateTemplate","description":"Edits the components of an existing template.\n\n## Full-replace semantics\n\nOn Meta the edit is **full-replace**: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum `body`. Sending only `body` on a template that has a header, footer, and buttons drops them and is rejected with `409` (`META_096`).\n\nThe same applies to `limitedTimeOffer` — an existing offer is removed if you do not send it again.\n\nAfter a successful edit the status returns to `PENDING` for re-review, and the local record is synced.\n\n## Constraints\n\n- `name` and `language` cannot be changed and cannot be sent.\n- Editing is allowed only when the template is `APPROVED`, `REJECTED`, or `PAUSED`. Any other status returns `409` (`META_096`).\n- An active template can be edited only once in 24 hours; exceeding that returns `429` (`META_097`).\n- `category` changes are effective only for `REJECTED` / `PAUSED` templates; Meta rejects a category change on an `APPROVED` one. Changes are subject to review.\n- `carousel` is not accepted on edit at all. An existing carousel template's cards cannot be edited through this API — create a new template instead.\n\n## Validation differences from create\n\nButton, header, and body rules are identical to Create Template (`WA_TPL_001`–`005`, `015`–`020`, `006`–`010`, `021`, `011`–`014`).\n\nThe **category rules** (`WA_TPL_022`–`033`) and the **name rule** (`WA_TPL_034`) are not evaluated here, since `name` cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a `META_0xx` error rather than a `WA_TPL_0xx` one.\n\nLimited-time offer rules apply as on create, except that the `MARKETING` check (`WA_TPL_048`) runs only when you also send a `category`; if you omit it, Meta validates the offer against the template's existing category.","parameters":["f6d9335a-9df2-476b-9f57-c97b5ad2ba6b","9877da41-d9c5-4c16-868e-e0860e7f7214","b2d74231-9d78-44bb-9dd0-b4c814bca906"],"requestBody":"64c9a566-f647-470e-81f1-ea550b33240f","responses":{"200":"8a41f72f-5db2-4c22-87c8-423494bc3229","400":"32b8b4e4-35ee-4e37-ad68-48c957a892ee","401":"dbe502bf-efbb-45ef-b492-678ef45ca2f4","403":"2c7fb520-0ed9-49da-969b-8753f8e29aec","404":"563d8f54-d5e7-4409-9dfc-306b4576d0c4","409":"0c748bfd-399c-4b9c-b459-2b58fd8c5f35","422":"a95ed615-41cf-4c8e-a3d8-577917641771","429":"758b07ad-897d-4453-b68b-fcf65fff5a84","502":"492532c0-1f0e-4ad6-ae88-b06a9da9c4fd"},"method":"post","type":"path","servers":["836c9e36-e4ae-4787-b197-acaa901d57e0"],"security":["146eaf30-1247-4c36-b793-049461a1bdc5"],"path":"/wa/{app_id}/templates/{source_id}","baseUrlOptions":["https://public-api.gateway.connexease.com/api/v1"],"title":"Update Template","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"f6d9335a-9df2-476b-9f57-c97b5ad2ba6b":{"name":"app_id","in":"path","required":true,"description":"Application ID. Must belong to the organization resolved from your secret key, otherwise the request returns `404` with `APPLICATION_004`.","schema":{"type":"string","example":"app_7poyXj8GXuv76e","isRequired":true,"description":"Application ID. Must belong to the organization resolved from your secret key, otherwise the request returns `404` with `APPLICATION_004`.","uniqueKey":"","typeLabel":"string"}},"9877da41-d9c5-4c16-868e-e0860e7f7214":{"name":"source_id","in":"path","required":true,"description":"The template's Meta source ID.","schema":{"type":"string","example":"1234567890123456","isRequired":true,"description":"The template's Meta source ID.","uniqueKey":"","typeLabel":"string"}},"b2d74231-9d78-44bb-9dd0-b4c814bca906":{"name":"Prefer","in":"header","required":false,"description":"`return=representation` (default) returns the current record; `return=minimal` returns no body. The response echoes the choice in `Preference-Applied`.","schema":{"type":"string","enum":["return=representation","return=minimal"],"default":"return=representation","isRequired":false,"description":"`return=representation` (default) returns the current record; `return=minimal` returns no body. The response echoes the choice in `Preference-Applied`.","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["body"],"properties":{"body":{"type":"object","properties":{"text":{"type":"string","maxLength":1024,"description":"Supports `{{1}}`, `{{2}}` variables. Cannot start or end with a variable (`WA_TPL_011` / `WA_TPL_012`). Required for `UTILITY` and `MARKETING` (`WA_TPL_027`); not allowed for `AUTHENTICATION`, where Meta generates it (`WA_TPL_023`).","uniqueKey":"body.text","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"body.examples.items.[INDEX]","typeLabel":"string"},"description":"Example values for the variables, in order. The count must equal the number of variables (`WA_TPL_014`); variables with no examples at all are rejected with `WA_TPL_013`.","uniqueKey":"body.examples","typeLabel":"string[]"},"addSecurityRecommendation":{"type":"boolean","description":"`AUTHENTICATION` only (`WA_TPL_028`). Adds Meta's security recommendation text.","uniqueKey":"body.addSecurityRecommendation","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"body","typeLabel":"object"},"header":{"type":"object","properties":{"format":{"type":"string","description":"`NONE` is the default when `header` is omitted. `AUTHENTICATION` allows no header at all; a carousel card header must be `IMAGE` or `VIDEO`; a limited-time offer header is limited to `NONE` / `IMAGE` / `VIDEO`.","enum":["NONE","TEXT","IMAGE","VIDEO","DOCUMENT","LOCATION"],"uniqueKey":"header.format","typeLabel":"enum\u003cstring>"},"text":{"type":"string","maxLength":60,"description":"`TEXT` headers only. Cannot start or end with a variable (`WA_TPL_008` / `WA_TPL_009`). Sending it on a media or `LOCATION` header is rejected (`WA_TPL_010` / `WA_TPL_021`).","uniqueKey":"header.text","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"header.examples.items.[INDEX]","typeLabel":"string"},"description":"Variable example for a `TEXT` header; for media headers, the media handle from Upload Media.","uniqueKey":"header.examples","typeLabel":"string[]"}},"uniqueKey":"header","typeLabel":"object"},"footer":{"type":"object","properties":{"text":{"type":"string","maxLength":60,"description":"Not allowed in `AUTHENTICATION` (`WA_TPL_024`) or in a limited-time offer template (`WA_TPL_051`).","uniqueKey":"footer.text","typeLabel":"string"},"codeExpirationMinutes":{"type":"integer","minimum":1,"maximum":90,"description":"`AUTHENTICATION` only (`WA_TPL_029`). How long the code stays valid.","uniqueKey":"footer.codeExpirationMinutes","typeLabel":"integer"}},"uniqueKey":"footer","typeLabel":"object"},"buttons":{"type":"array","maxItems":10,"items":{"type":"object","properties":{"type":{"type":"string","enum":["QUICK_REPLY","URL","PHONE_NUMBER","COPY_CODE","OTP"],"description":"`AUTHENTICATION` accepts only `OTP`; `UTILITY` accepts neither `OTP` nor `COPY_CODE`; `COPY_CODE` is `MARKETING`-only.","isRequired":true,"uniqueKey":"buttons.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","minLength":2,"maxLength":25,"description":"Required for `URL`, `PHONE_NUMBER`, and `QUICK_REPLY` (`WA_TPL_015`).","uniqueKey":"buttons.items.[INDEX].text","typeLabel":"string"},"url":{"type":"string","description":"`URL` type only, and required for it (`WA_TPL_001`). Must start with `https://` and may end in a `{{1}}` variable, in which case `example` is required. Cannot be combined with `phoneNumber` (`WA_TPL_002`).","uniqueKey":"buttons.items.[INDEX].url","typeLabel":"string"},"phoneNumber":{"type":"string","description":"`PHONE_NUMBER` type only, and required for it (`WA_TPL_003`). E.164 on the way in; Meta returns it in RFC3966 form (`tel:+90-555-...`). Cannot be combined with `url` (`WA_TPL_004`).","uniqueKey":"buttons.items.[INDEX].phoneNumber","typeLabel":"string"},"example":{"type":"array","items":{"type":"string","uniqueKey":"buttons.items.[INDEX].example.items.[INDEX]","typeLabel":"string"},"description":"Dynamic URL example, or the coupon code for `COPY_CODE` — required for that type (`WA_TPL_016`).","uniqueKey":"buttons.items.[INDEX].example","typeLabel":"string[]"},"otpType":{"type":"string","enum":["COPY_CODE","ONE_TAP","ZERO_TAP"],"description":"Required on `OTP` buttons (`WA_TPL_017`). `COPY_CODE` has the user copy the code manually; `ONE_TAP` reads it with one tap; `ZERO_TAP` delivers it with no user action.","uniqueKey":"buttons.items.[INDEX].otpType","typeLabel":"enum\u003cstring>"},"autofillText":{"type":"string","maxLength":25,"description":"Optional for `ONE_TAP` / `ZERO_TAP`.","uniqueKey":"buttons.items.[INDEX].autofillText","typeLabel":"string"},"packageName":{"type":"string","description":"Android package name. Required for `ONE_TAP` / `ZERO_TAP` (`WA_TPL_018`).","uniqueKey":"buttons.items.[INDEX].packageName","typeLabel":"string"},"signatureHash":{"type":"string","description":"Required for `ONE_TAP` / `ZERO_TAP` (`WA_TPL_019`).","uniqueKey":"buttons.items.[INDEX].signatureHash","typeLabel":"string"},"zeroTapTermsAccepted":{"type":"boolean","description":"Must be `true` on `ZERO_TAP` buttons (`WA_TPL_020`).","uniqueKey":"buttons.items.[INDEX].zeroTapTermsAccepted","typeLabel":"boolean"}},"required":["type"],"uniqueKey":"buttons.items.[INDEX]","typeLabel":"object"},"uniqueKey":"buttons","typeLabel":"object[]"},"messageSendTtlSeconds":{"type":"integer","uniqueKey":"messageSendTtlSeconds","typeLabel":"integer"},"limitedTimeOffer":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":16,"description":"Offer text on the banner, e.g. `Expiring offer!`.","isRequired":true,"uniqueKey":"limitedTimeOffer.text","typeLabel":"string"},"hasExpiration":{"type":"boolean","default":false,"description":"When `true`, WhatsApp renders a countdown. This only controls whether the countdown is shown — the expiration timestamp itself is supplied per message at send time, so one approved template can serve different deadlines.","uniqueKey":"limitedTimeOffer.hasExpiration","typeLabel":"boolean"}},"required":["text"],"uniqueKey":"limitedTimeOffer","typeLabel":"object"},"category":{"type":"string","description":"Determines which components are allowed. `UTILITY` for transactional messages, `MARKETING` for promotional, `AUTHENTICATION` for one-time passcodes.","enum":["UTILITY","MARKETING","AUTHENTICATION"],"uniqueKey":"category","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"example":{"header":{"format":"TEXT","text":"Order #{{1}} update","examples":["12345"]},"body":{"text":"Hi {{1}}, your order {{2}} is now {{3}}. Thank you.","examples":["John","#12345","shipped"]},"footer":{"text":"Connexease"},"buttons":[{"type":"QUICK_REPLY","text":"Track"}]},"examples":{"Example":{"title":"Example","value":{"header":{"format":"TEXT","text":"Order #{{1}} update","examples":["12345"]},"body":{"text":"Hi {{1}}, your order {{2}} is now {{3}}. Thank you.","examples":["John","#12345","shipped"]},"footer":{"text":"Connexease"},"buttons":[{"type":"QUICK_REPLY","text":"Track"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"8a41f72f-5db2-4c22-87c8-423494bc3229":{"description":"The updated template re-fetched from Meta, with `status: \"PENDING\"`. With `Prefer: return=minimal` the `data` key is omitted entirely — the response is exactly `{ \"isSuccess\": true }`, still HTTP `200`.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Null fields (`id`, `createdAt`, `updatedAt`, `messageSendTtlSeconds`, `correctCategory`, `previousCategory`) are dropped from the response.","properties":{"sourceId":{"type":"string","description":"The template's Meta ID.","uniqueKey":"data.sourceId","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.name","typeLabel":"string"},"language":{"type":"string","uniqueKey":"data.language","typeLabel":"string"},"category":{"type":"string","description":"Determines which components are allowed. `UTILITY` for transactional messages, `MARKETING` for promotional, `AUTHENTICATION` for one-time passcodes.","enum":["UTILITY","MARKETING","AUTHENTICATION"],"uniqueKey":"data.category","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Review and lifecycle status. `UNKNOWN` means Meta reported a status this API does not recognise.","enum":["APPROVED","PENDING","REJECTED","PAUSED","DISABLED","IN_APPEAL","PENDING_DELETION","DELETED","LIMIT_EXCEEDED","UNKNOWN"],"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"components":{"type":"array","items":{"type":"object","description":"One component. Every field other than `type` is dropped when Meta does not report it.","properties":{"type":{"type":"string","enum":["HEADER","BODY","FOOTER","BUTTONS","CAROUSEL","LIMITED_TIME_OFFER"],"isRequired":true,"uniqueKey":"data.components.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"format":{"type":"string","enum":["TEXT","IMAGE","VIDEO","DOCUMENT","LOCATION","CAROUSEL"],"description":"`HEADER` only. A response header never reports `NONE` — the component is simply absent — but may report `CAROUSEL` for a carousel template.","uniqueKey":"data.components.items.[INDEX].format","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"`HEADER` with `format: TEXT`, `BODY`, or `FOOTER`.","uniqueKey":"data.components.items.[INDEX].text","typeLabel":"string"},"example":{"type":"object","description":"Sample values Meta stores for the component's variables or media.","properties":{"headerText":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].example.headerText.items.[INDEX]","typeLabel":"string"},"description":"Sample values for the `TEXT` header variables.","uniqueKey":"data.components.items.[INDEX].example.headerText","typeLabel":"string[]"},"headerHandle":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].example.headerHandle.items.[INDEX]","typeLabel":"string"},"description":"The media handle behind an `IMAGE` / `VIDEO` / `DOCUMENT` header.","uniqueKey":"data.components.items.[INDEX].example.headerHandle","typeLabel":"string[]"},"headerUrl":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].example.headerUrl.items.[INDEX]","typeLabel":"string"},"description":"The resolved media URL, when Meta returns one instead of a handle.","uniqueKey":"data.components.items.[INDEX].example.headerUrl","typeLabel":"string[]"},"bodyText":{"type":"array","items":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].example.bodyText.items.[INDEX].items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.components.items.[INDEX].example.bodyText.items.[INDEX]","typeLabel":"string[]"},"description":"Sample values for the body variables — a list of value sets, so nested one level deeper than `headerText`.","uniqueKey":"data.components.items.[INDEX].example.bodyText","typeLabel":"string[][]"}},"uniqueKey":"data.components.items.[INDEX].example","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"A button as Meta reports it. Note the snake_case keys — they differ from the camelCase keys used when creating a template.","properties":{"type":{"type":"string","enum":["URL","PHONE_NUMBER","QUICK_REPLY","COPY_CODE","OTP"],"uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The label shown on the button.","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].text","typeLabel":"string"},"url":{"type":"string","description":"`URL` buttons: the target link, possibly containing `{{1}}`.","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].url","typeLabel":"string"},"phone_number":{"type":"string","description":"`PHONE_NUMBER` buttons. Meta returns RFC3966 form (`tel:+90-555-123-45-67`), not the E.164 form you sent.","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].phone_number","typeLabel":"string"},"example":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].example.items.[INDEX]","typeLabel":"string"},"description":"The dynamic-URL sample, or the `COPY_CODE` coupon code.","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].example","typeLabel":"string[]"},"otp_type":{"type":"string","enum":["COPY_CODE","ONE_TAP","ZERO_TAP"],"uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].otp_type","typeLabel":"enum\u003cstring>"},"autofill_text":{"type":"string","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].autofill_text","typeLabel":"string"},"package_name":{"type":"string","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].package_name","typeLabel":"string"},"signature_hash":{"type":"string","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].signature_hash","typeLabel":"string"},"zero_tap_terms_accepted":{"type":"boolean","uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX].zero_tap_terms_accepted","typeLabel":"boolean"}},"uniqueKey":"data.components.items.[INDEX].buttons.items.[INDEX]","typeLabel":"object"},"description":"`BUTTONS` only.","uniqueKey":"data.components.items.[INDEX].buttons","typeLabel":"object[]"},"cards":{"type":"array","description":"`CAROUSEL` only. One entry per card, each holding its own `components` array limited to `HEADER`, `BODY`, and `BUTTONS`.","items":{"type":"object","properties":{"components":{"type":"array","items":{"type":"object","description":"A component inside a carousel card. A card is a reduced template: no footer, no limited-time offer.","properties":{"type":{"type":"string","enum":["HEADER","BODY","BUTTONS"],"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"format":{"type":"string","enum":["IMAGE","VIDEO"],"description":"`HEADER` only.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].format","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"`BODY` only.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].text","typeLabel":"string"},"example":{"type":"object","description":"Sample values Meta stores for the component's variables or media.","properties":{"headerText":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.headerText.items.[INDEX]","typeLabel":"string"},"description":"Sample values for the `TEXT` header variables.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.headerText","typeLabel":"string[]"},"headerHandle":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.headerHandle.items.[INDEX]","typeLabel":"string"},"description":"The media handle behind an `IMAGE` / `VIDEO` / `DOCUMENT` header.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.headerHandle","typeLabel":"string[]"},"headerUrl":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.headerUrl.items.[INDEX]","typeLabel":"string"},"description":"The resolved media URL, when Meta returns one instead of a handle.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.headerUrl","typeLabel":"string[]"},"bodyText":{"type":"array","items":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.bodyText.items.[INDEX].items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.bodyText.items.[INDEX]","typeLabel":"string[]"},"description":"Sample values for the body variables — a list of value sets, so nested one level deeper than `headerText`.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example.bodyText","typeLabel":"string[][]"}},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].example","typeLabel":"object"},"buttons":{"type":"array","items":{"type":"object","description":"A button as Meta reports it. Note the snake_case keys — they differ from the camelCase keys used when creating a template.","properties":{"type":{"type":"string","enum":["URL","PHONE_NUMBER","QUICK_REPLY","COPY_CODE","OTP"],"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The label shown on the button.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].text","typeLabel":"string"},"url":{"type":"string","description":"`URL` buttons: the target link, possibly containing `{{1}}`.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].url","typeLabel":"string"},"phone_number":{"type":"string","description":"`PHONE_NUMBER` buttons. Meta returns RFC3966 form (`tel:+90-555-123-45-67`), not the E.164 form you sent.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].phone_number","typeLabel":"string"},"example":{"type":"array","items":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].example.items.[INDEX]","typeLabel":"string"},"description":"The dynamic-URL sample, or the `COPY_CODE` coupon code.","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].example","typeLabel":"string[]"},"otp_type":{"type":"string","enum":["COPY_CODE","ONE_TAP","ZERO_TAP"],"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].otp_type","typeLabel":"enum\u003cstring>"},"autofill_text":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].autofill_text","typeLabel":"string"},"package_name":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].package_name","typeLabel":"string"},"signature_hash":{"type":"string","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].signature_hash","typeLabel":"string"},"zero_tap_terms_accepted":{"type":"boolean","uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX].zero_tap_terms_accepted","typeLabel":"boolean"}},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX].buttons","typeLabel":"object[]"}},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX].components","typeLabel":"object[]"}},"uniqueKey":"data.components.items.[INDEX].cards.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.components.items.[INDEX].cards","typeLabel":"object[]"},"addSecurityRecommendation":{"type":"boolean","description":"`BODY` of an `AUTHENTICATION` template.","uniqueKey":"data.components.items.[INDEX].addSecurityRecommendation","typeLabel":"boolean"},"codeExpirationMinutes":{"type":"integer","description":"`FOOTER` of an `AUTHENTICATION` template.","uniqueKey":"data.components.items.[INDEX].codeExpirationMinutes","typeLabel":"integer"},"limitedTimeOffer":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":16,"description":"Offer text on the banner, e.g. `Expiring offer!`.","isRequired":true,"uniqueKey":"data.components.items.[INDEX].limitedTimeOffer.text","typeLabel":"string"},"hasExpiration":{"type":"boolean","default":false,"description":"When `true`, WhatsApp renders a countdown. This only controls whether the countdown is shown — the expiration timestamp itself is supplied per message at send time, so one approved template can serve different deadlines.","uniqueKey":"data.components.items.[INDEX].limitedTimeOffer.hasExpiration","typeLabel":"boolean"}},"required":["text"],"uniqueKey":"data.components.items.[INDEX].limitedTimeOffer","typeLabel":"object"}},"required":["type"],"uniqueKey":"data.components.items.[INDEX]","typeLabel":"object"},"description":"Returned only with `expand=components`.","uniqueKey":"data.components","typeLabel":"object[]"},"qualityScore":{"type":"string","description":"Quality rating derived by Meta from user feedback.","enum":["GREEN","YELLOW","RED","UNKNOWN"],"uniqueKey":"data.qualityScore","typeLabel":"enum\u003cstring>"},"rejectedReason":{"type":"string","enum":["NONE","ABUSIVE_CONTENT","INVALID_FORMAT","PROMOTIONAL","TAG_CONTENT_MISMATCH","SCAM","INCORRECT_CATEGORY","UNKNOWN"],"uniqueKey":"data.rejectedReason","typeLabel":"enum\u003cstring>"},"parameterFormat":{"type":"string","description":"How variables are referenced within the template.","enum":["POSITIONAL","NAMED","UNKNOWN"],"uniqueKey":"data.parameterFormat","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data","typeLabel":"object"},"isSuccess":{"type":"boolean","enum":[true],"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"sourceId":"\u003cstring>","name":"\u003cstring>","language":"\u003cstring>","category":"UTILITY","status":"APPROVED","components":[{"type":"HEADER","format":"TEXT","text":"\u003cstring>","example":{"headerText":["\u003cstring>"],"headerHandle":["\u003cstring>"],"headerUrl":["\u003cstring>"],"bodyText":[["\u003cstring>"]]},"buttons":[{"type":"URL","text":"\u003cstring>","url":"\u003cstring>","phone_number":"\u003cstring>","example":["\u003cstring>"],"otp_type":"COPY_CODE","autofill_text":"\u003cstring>","package_name":"\u003cstring>","signature_hash":"\u003cstring>","zero_tap_terms_accepted":true}],"cards":[{"components":[{"type":"HEADER","format":"IMAGE","text":"\u003cstring>","example":{"headerText":["\u003cstring>"],"headerHandle":["\u003cstring>"],"headerUrl":["\u003cstring>"],"bodyText":[["\u003cstring>"]]},"buttons":[{"type":"URL","text":"\u003cstring>","url":"\u003cstring>","phone_number":"\u003cstring>","example":["\u003cstring>"],"otp_type":"COPY_CODE","autofill_text":"\u003cstring>","package_name":"\u003cstring>","signature_hash":"\u003cstring>","zero_tap_terms_accepted":true}]}]}],"addSecurityRecommendation":true,"codeExpirationMinutes":123,"limitedTimeOffer":{"text":"\u003cstring>","hasExpiration":false}}],"qualityScore":"GREEN","rejectedReason":"NONE","parameterFormat":"POSITIONAL"},"isSuccess":true}}},"exampleType":"generated"}},"exampleType":"generated"},"32b8b4e4-35ee-4e37-ad68-48c957a892ee":{"description":"Meta rejected a parameter (`META_095`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"dbe502bf-efbb-45ef-b492-678ef45ca2f4":{"description":"Secret key missing or invalid (`ORGANIZATION_SECRET_010` / `011`), or Meta token invalid during the pre-fetch (`META_034`) or the update (`META_092`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"2c7fb520-0ed9-49da-969b-8753f8e29aec":{"description":"Meta permission denied during the pre-fetch (`META_035`) or the update (`META_093`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"563d8f54-d5e7-4409-9dfc-306b4576d0c4":{"description":"`app_id` not in the organization (`APPLICATION_004`), or `source_id` not found (`META_075`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"0c748bfd-399c-4b9c-b459-2b58fd8c5f35":{"description":"Template is not in an editable status, or the edit broke its structure (`META_096`), or a name + language conflict (`META_017`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":{"code":"META_096","group":"CONFLICT","description":"Template update failed. Template is not in an editable status (editable only when APPROVED, REJECTED or PAUSED; it may be PENDING after a recent edit)."},"isSuccess":false},"examples":{"Example":{"title":"Example","value":{"errors":{"code":"META_096","group":"CONFLICT","description":"Template update failed. Template is not in an editable status (editable only when APPROVED, REJECTED or PAUSED; it may be PENDING after a recent edit)."},"isSuccess":false}}},"exampleType":"examples"}},"exampleType":"examples"},"a95ed615-41cf-4c8e-a3d8-577917641771":{"description":"A button, header, or body rule, an invalid `category` value, or a limited-time offer rule (`WA_TPL_048`–`051`, `053`–`055`). Meta-side validation also lands here: `META_022`–`META_029`.","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"758b07ad-897d-4453-b68b-fcf65fff5a84":{"description":"Meta rate limit during the pre-fetch (`META_036`) or the update (`META_094`), or the 24-hour edit limit (`META_097`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"492532c0-1f0e-4ad6-ae88-b06a9da9c4fd":{"description":"General Meta-side failure during the pre-fetch (`META_004`) or the update (`META_091`).","content":{"application/json":{"schema":{"type":"object","description":"Every failure shares this shape. `description` already has any `params` interpolated into it.","properties":{"isSuccess":{"type":"boolean","enum":[false],"isRequired":true,"uniqueKey":"isSuccess","typeLabel":"enum\u003cboolean>"},"errors":{"type":"object","properties":{"code":{"type":"string","description":"`VAL_*`, `WA_*`, `META_*`, `APPLICATION_*`, `ORGANIZATION_SECRET_*`, `REQ_001`, or `SYS_001`.","example":"META_075","isRequired":true,"uniqueKey":"errors.code","typeLabel":"string"},"group":{"type":"string","enum":["VALIDATION","NOT_FOUND","CONFLICT","AUTHENTICATION","NOT_ALLOWED","LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","SYSTEM"],"isRequired":true,"uniqueKey":"errors.group","typeLabel":"enum\u003cstring>"},"description":{"type":"string","example":"Template with 0000000000 not found in Meta.","isRequired":true,"uniqueKey":"errors.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"description":"Raw values interpolated into `description`. Present only on parametric messages.","uniqueKey":"errors.params","typeLabel":"object"},"fields":{"type":"object","description":"Field-level validation errors only. Field name (dot-joined for nested fields, list indices omitted) to its own `code` / `description` / `params`.","additionalProperties":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"errors.fields.additionalProperties.code","typeLabel":"string"},"description":{"type":"string","uniqueKey":"errors.fields.additionalProperties.description","typeLabel":"string"},"params":{"type":"object","additionalProperties":true,"uniqueKey":"errors.fields.additionalProperties.params","typeLabel":"object"}},"uniqueKey":"errors.fields.additionalProperties","typeLabel":"object"},"uniqueKey":"errors.fields","typeLabel":"object"}},"required":["code","group","description"],"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["isSuccess","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"isSuccess":false,"errors":{"code":"META_075","group":"VALIDATION","description":"Template with 0000000000 not found in Meta.","params":{},"fields":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"146eaf30-1247-4c36-b793-049461a1bdc5":{"secretKey":{"type":"http","scheme":"bearer","description":"Secret key in `Bearer sk_...` format. Server-to-server only — never embed it in a browser or mobile client. The organization is resolved from the key, so `organization_id` is never passed explicitly.","scopes":[]}}},"servers":{"836c9e36-e4ae-4787-b197-acaa901d57e0":{"url":"https://public-api.gateway.connexease.com/api/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Secret key in `Bearer sk_...` format. Server-to-server only — never embed it in a browser or mobile client. The organization is resolved from the key, so `organization_id` is never passed explicitly.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Secret key in `Bearer sk_...` format. Server-to-server only — never embed it in a browser or mobile client. The organization is resolved from the key, so `organization_id` is never passed explicitly.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"secretKey","name":"Authorization"}],"title":"secretKey"}]},"originalFileLocation":"public-openapi.json"},"subdomain":"connexease","siteName":"Connexease Gateway","title":"Update Template - Connexease Gateway","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-19T22:47:35.519Z","originalFileLocation":"api-reference/template/update-template.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Edits the components of an existing template. ## Full-replace semantics On Meta the edit is full-replace: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum body. Sending only body on a template that has a header, footer, and buttons drops them and is rejected with 409 (META_096). The same applies to limitedTimeOffer — an existing offer is removed if you do not send it again. After a successful edit the status returns to PENDING for re-review, and the local record is synced. ## Constraints - name and language cannot be changed and cannot be sent. - Editing is allowed only when the template is APPROVED, REJECTED, or PAUSED. Any other status returns 409 (META_096). - An active template can be edited only once in 24 hours; exceeding that returns 429 (META_097). - category changes are effective only for REJECTED / PAUSED templates; Meta rejects a category change on an APPROVED one. Changes are subject to review. - carousel is not accepted on edit at all. An existing carousel template\u0026#x27;s cards cannot be edited through this API — create a new template instead. ## Validation differences from create Button, header, and body rules are identical to Create Template (WA_TPL_001–005, 015–020, 006–010, 021, 011–014). The category rules (WA_TPL_022–033) and the name rule (WA_TPL_034) are not evaluated here, since name cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a META_0xx error rather than a WA_TPL_0xx one. Limited-time offer rules apply as on create, except that the MARKETING check (WA_TPL_048) runs only when you also send a category; if you omit it, Meta validates the offer against the template\u0026#x27;s existing category.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Connexease Gateway\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_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/connexease/Tuf280V-aVK-hLg7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update Template - Connexease Gateway\">\u003cmeta data-mint-head property=\"og:description\" content=\"Edits the components of an existing template. ## Full-replace semantics On Meta the edit is full-replace: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum body. Sending only body on a template that has a header, footer, and buttons drops them and is rejected with 409 (META_096). The same applies to limitedTimeOffer — an existing offer is removed if you do not send it again. After a successful edit the status returns to PENDING for re-review, and the local record is synced. ## Constraints - name and language cannot be changed and cannot be sent. - Editing is allowed only when the template is APPROVED, REJECTED, or PAUSED. Any other status returns 409 (META_096). - An active template can be edited only once in 24 hours; exceeding that returns 429 (META_097). - category changes are effective only for REJECTED / PAUSED templates; Meta rejects a category change on an APPROVED one. Changes are subject to review. - carousel is not accepted on edit at all. An existing carousel template\u0026#x27;s cards cannot be edited through this API — create a new template instead. ## Validation differences from create Button, header, and body rules are identical to Create Template (WA_TPL_001–005, 015–020, 006–010, 021, 011–014). The category rules (WA_TPL_022–033) and the name rule (WA_TPL_034) are not evaluated here, since name cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a META_0xx error rather than a WA_TPL_0xx one. Limited-time offer rules apply as on create, except that the MARKETING check (WA_TPL_048) runs only when you also send a category; if you omit it, Meta validates the offer against the template\u0026#x27;s existing category.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Connexease Gateway\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.gateway.connexease.com/api-reference/template/update-template\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://connexease.mintlify.site/_mintlify/api/og/v2?division=Template\u0026amp;title=Update+Template\u0026amp;description=Edits+the+components+of+an+existing+template.%0A%0A%23%23+Full-replace+semantics%0A%0AOn+Meta+the+edit+is+**full-replace**%3A+the+component+set+you+send+becomes+the+new+state\u0026amp;theme=4e51867b3ccbb8ea3c651493\u0026amp;signature=d376b4c3458b26771e9332f6b9d721947c06b803c1730c9ce197ceffa84ce9ec\">\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=\"Update Template - Connexease Gateway\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Edits the components of an existing template. ## Full-replace semantics On Meta the edit is full-replace: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum body. Sending only body on a template that has a header, footer, and buttons drops them and is rejected with 409 (META_096). The same applies to limitedTimeOffer — an existing offer is removed if you do not send it again. After a successful edit the status returns to PENDING for re-review, and the local record is synced. ## Constraints - name and language cannot be changed and cannot be sent. - Editing is allowed only when the template is APPROVED, REJECTED, or PAUSED. Any other status returns 409 (META_096). - An active template can be edited only once in 24 hours; exceeding that returns 429 (META_097). - category changes are effective only for REJECTED / PAUSED templates; Meta rejects a category change on an APPROVED one. Changes are subject to review. - carousel is not accepted on edit at all. An existing carousel template\u0026#x27;s cards cannot be edited through this API — create a new template instead. ## Validation differences from create Button, header, and body rules are identical to Create Template (WA_TPL_001–005, 015–020, 006–010, 021, 011–014). The category rules (WA_TPL_022–033) and the name rule (WA_TPL_034) are not evaluated here, since name cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a META_0xx error rather than a WA_TPL_0xx one. Limited-time offer rules apply as on create, except that the MARKETING check (WA_TPL_048) runs only when you also send a category; if you omit it, Meta validates the offer against the template\u0026#x27;s existing category.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://connexease.mintlify.site/_mintlify/api/og/v2?division=Template\u0026amp;title=Update+Template\u0026amp;description=Edits+the+components+of+an+existing+template.%0A%0A%23%23+Full-replace+semantics%0A%0AOn+Meta+the+edit+is+**full-replace**%3A+the+component+set+you+send+becomes+the+new+state\u0026amp;theme=4e51867b3ccbb8ea3c651493\u0026amp;signature=d376b4c3458b26771e9332f6b9d721947c06b803c1730c9ce197ceffa84ce9ec\">\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/connexease/Tuf280V-aVK-hLg7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Connexease Gateway\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0B0C36\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.gateway.connexease.com/api-reference/template/update-template\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/template/update-template.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.gateway.connexease.com/#organization\",\"name\":\"Connexease Gateway\",\"url\":\"https://docs.gateway.connexease.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/connexease/yT3a9JqKtN8wzcNE/images/logo_dark_with_text.svg?fit=max\u0026auto=format\u0026n=yT3a9JqKtN8wzcNE\u0026q=85\u0026s=c157f165c8033b5d3b64eac2abbc86c9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.gateway.connexease.com#website\",\"name\":\"Connexease Gateway\",\"url\":\"https://docs.gateway.connexease.com\",\"publisher\":{\"@id\":\"https://docs.gateway.connexease.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.gateway.connexease.com/api-reference/template/update-template#webpage\",\"url\":\"https://docs.gateway.connexease.com/api-reference/template/update-template\",\"name\":\"Update Template\",\"description\":\"Edits the components of an existing template. ## Full-replace semantics On Meta the edit is full-replace: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum body. Sending only body on a template that has a header, footer, and buttons drops them and is rejected with 409 (META_096). The same applies to limitedTimeOffer — an existing offer is removed if you do not send it again. After a successful edit the status returns to PENDING for re-review, and the local record is synced. ## Constraints - name and language cannot be changed and cannot be sent. - Editing is allowed only when the template is APPROVED, REJECTED, or PAUSED. Any other status returns 409 (META_096). - An active template can be edited only once in 24 hours; exceeding that returns 429 (META_097). - category changes are effective only for REJECTED / PAUSED templates; Meta rejects a category change on an APPROVED one. Changes are subject to review. - carousel is not accepted on edit at all. An existing carousel template's cards cannot be edited through this API — create a new template instead. ## Validation differences from create Button, header, and body rules are identical to Create Template (WA_TPL_001–005, 015–020, 006–010, 021, 011–014). The category rules (WA_TPL_022–033) and the name rule (WA_TPL_034) are not evaluated here, since name cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a META_0xx error rather than a WA_TPL_0xx one. Limited-time offer rules apply as on create, except that the MARKETING check (WA_TPL_048) runs only when you also send a category; if you omit it, Meta validates the offer against the template's existing category.\",\"dateModified\":\"2026-09-19T22:47:35.519Z\",\"isPartOf\":{\"@id\":\"https://docs.gateway.connexease.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.gateway.connexease.com/api-reference/template/update-template#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.gateway.connexease.com/api-reference/template/update-template#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sandbox Public API\",\"item\":\"https://docs.gateway.connexease.com/api-reference/developers/get-webhook\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Template\",\"item\":\"https://docs.gateway.connexease.com/api-reference/template/get-templates\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update Template\",\"item\":\"https://docs.gateway.connexease.com/api-reference/template/update-template\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.gateway.connexease.com/api-reference/template/update-template#apireference\",\"headline\":\"Update Template\",\"name\":\"Update Template\",\"description\":\"Edits the components of an existing template. ## Full-replace semantics On Meta the edit is full-replace: the component set you send becomes the new state, and any component you do not send is removed. Send every component you want to keep, at minimum body. Sending only body on a template that has a header, footer, and buttons drops them and is rejected with 409 (META_096). The same applies to limitedTimeOffer — an existing offer is removed if you do not send it again. After a successful edit the status returns to PENDING for re-review, and the local record is synced. ## Constraints - name and language cannot be changed and cannot be sent. - Editing is allowed only when the template is APPROVED, REJECTED, or PAUSED. Any other status returns 409 (META_096). - An active template can be edited only once in 24 hours; exceeding that returns 429 (META_097). - category changes are effective only for REJECTED / PAUSED templates; Meta rejects a category change on an APPROVED one. Changes are subject to review. - carousel is not accepted on edit at all. An existing carousel template's cards cannot be edited through this API — create a new template instead. ## Validation differences from create Button, header, and body rules are identical to Create Template (WA_TPL_001–005, 015–020, 006–010, 021, 011–014). The category rules (WA_TPL_022–033) and the name rule (WA_TPL_034) are not evaluated here, since name cannot be sent and the category-vs-component check only runs on create. Meta still enforces the equivalent rules, so a category-incompatible edit comes back as a META_0xx error rather than a WA_TPL_0xx one. Limited-time offer rules apply as on create, except that the MARKETING check (WA_TPL_048) runs only when you also send a category; if you omit it, Meta validates the offer against the template's existing category.\",\"url\":\"https://docs.gateway.connexease.com/api-reference/template/update-template\",\"mainEntityOfPage\":{\"@id\":\"https://docs.gateway.connexease.com/api-reference/template/update-template#webpage\"},\"dateModified\":\"2026-09-19T22:47:35.519Z\",\"publisher\":{\"@id\":\"https://docs.gateway.connexease.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.gateway.connexease.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Connexease Gateway\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Connexease Gateway","nav":{"global":null,"tabs":[{"tab":"Gateway Dashboard","pages":[{"title":"Gateway Dashboard","href":"/dashboard/login"}]},{"tab":"Integration Guides","pages":[{"title":"Integration Guides","href":"/quickstart"}]},{"tab":"Messaging API","pages":[{"title":"Messaging API","href":"/api-reference/send-whatsapp-message"}]},{"tab":"Public API","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/public-api-reference/getting-started"}]},{"group":"Sandbox","pages":[]},{"group":"Sandbox Public API","pages":[{"group":"Developers","pages":[{"title":"Get Webhook","deprecated":null,"version":null,"openapi":"/public-openapi.json get /apps/{app_id}/webhook","href":"/api-reference/developers/get-webhook"},{"title":"Update Webhook","deprecated":null,"version":null,"openapi":"/public-openapi.json post /apps/{app_id}/webhook","href":"/api-reference/developers/update-webhook"},{"title":"Create API Key","deprecated":null,"version":null,"openapi":"/public-openapi.json post /apps/{app_id}/api-keys","href":"/api-reference/developers/create-api-key"}]},{"group":"Media","pages":[{"title":"Upload Media","deprecated":null,"version":null,"openapi":"/public-openapi.json post /wa/{app_id}/media/upload","href":"/api-reference/media/upload-media"}]},{"group":"Application","pages":[{"title":"Get Business Profile","deprecated":null,"version":null,"openapi":"/public-openapi.json get /wa/{app_id}/profile","href":"/api-reference/application/get-business-profile"},{"title":"Update Business Profile","deprecated":null,"version":null,"openapi":"/public-openapi.json patch /wa/{app_id}/profile","href":"/api-reference/application/update-business-profile"}]},{"group":"Analytics","pages":[{"title":"Get Messages","deprecated":null,"version":null,"openapi":"/public-openapi.json get /wa/analytics/messages","href":"/api-reference/analytics/get-messages"}]},{"group":"Template","pages":[{"title":"Get Templates","deprecated":null,"version":null,"openapi":"/public-openapi.json get /wa/{app_id}/templates","href":"/api-reference/template/get-templates"},{"title":"Create Template","deprecated":null,"version":null,"openapi":"/public-openapi.json post /wa/{app_id}/templates","href":"/api-reference/template/create-template"},{"title":"Get Template Metrics","deprecated":null,"version":null,"openapi":"/public-openapi.json get /wa/{app_id}/templates/metrics","href":"/api-reference/template/get-template-metrics"},{"title":"Get Template Detail","description":"Returns the current detail of a single template by its Meta `sourceId`. Read fresh directly from Meta, with no caching.\n\nWith `expand=components` the header, body, footer, button, carousel, and limited-time offer detail is included as well.\n\nNote that component buttons come back in snake_case (`phone_number`, `otp_type`, `package_name`) — different from the camelCase keys you send when creating a template.","deprecated":null,"version":null,"openapi":"/public-openapi.json get /wa/{app_id}/templates/{source_id}","href":"/api-reference/template/get-template-detail"},{"title":"Update Template","deprecated":null,"version":null,"openapi":"/public-openapi.json post /wa/{app_id}/templates/{source_id}","href":"/api-reference/template/update-template"},{"title":"Delete Template","description":"Deletes a single template. It is first read from Meta to resolve its name, then deleted by name plus template ID — so only the language version identified by `source_id` is removed, not every language sharing that name. Deleting the English version leaves the Turkish one untouched; call the endpoint once per `sourceId`.\n\n**Deletion cannot be undone.** Meta removes the template permanently. Re-creating it starts a new review cycle (`PENDING`) and produces a new `sourceId`. Messages that still reference a deleted template will fail to send.\n\nSuccess returns HTTP `200` with an envelope that carries no payload: `data` is null and, like every null field, is dropped from the response.","deprecated":null,"version":null,"openapi":"/public-openapi.json delete /wa/{app_id}/templates/{source_id}","href":"/api-reference/template/delete-template"}]}]},{"group":"Analytics","pages":[{"title":"Get Messages","href":"/public-api-reference/analytics/get-messages"},{"group":"Reference","pages":[{"title":"Enums","href":"/public-api-reference/analytics/reference/enums"}]}]},{"group":"Application","pages":[{"title":"Get Business Profile","href":"/public-api-reference/application/get-business-profile"},{"title":"Update Business Profile","href":"/public-api-reference/application/update-business-profile"},{"group":"Reference","pages":[{"title":"Enums","href":"/public-api-reference/application/reference/enums"}]}]},{"group":"Template","pages":[{"title":"Create Template","href":"/public-api-reference/template/create-template"},{"title":"Get Templates","href":"/public-api-reference/template/get-templates"},{"title":"Get Template Detail","href":"/public-api-reference/template/get-template-detail"},{"title":"Update Template","href":"/public-api-reference/template/update-template"},{"title":"Delete Template","href":"/public-api-reference/template/delete-template"},{"title":"Get Template Metrics","href":"/public-api-reference/template/get-template-metrics"},{"group":"Reference","pages":[{"title":"Enums","href":"/public-api-reference/template/reference/enums"}]}]},{"group":"Media","pages":[{"title":"Upload Media","href":"/public-api-reference/media/upload-media"},{"group":"Reference","pages":[{"title":"Enums","href":"/public-api-reference/media/reference/enums"}]}]},{"group":"Developers","pages":[{"title":"Get Webhook","href":"/public-api-reference/developers/get-webhook"},{"title":"Update Webhook","href":"/public-api-reference/developers/update-webhook"},{"title":"Create API Key","href":"/public-api-reference/developers/create-api-key"},{"group":"Reference","pages":[{"title":"Enums","href":"/public-api-reference/developers/reference/enums"}]}]},{"group":"Reference","pages":[{"title":"Error Codes","href":"/public-api-reference/reference/error-codes"}]}]},{"tab":"Embedded Signup","pages":[{"title":"Embedded Signup","href":"/public-embedded-signup-sdk/overview"}]},{"tab":"AI Plugin and MCP","pages":[{"title":"AI Plugin and MCP","href":"/connexease-gateway-customer-mcp-muesteri-kurulum-ve-kullanim-kilavuzu-sueruem-0-11-0-son-kontrol-9-ekim-2026-kaynak-kodu-connexease-gateway-customer-mcp-https-github-com-connexease-connexease-gate"}]}]},"basePath":"","title":"Update Template - Connexease Gateway","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-Dr40SSJq.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}