{
"errors": [
{
"code": "unsupported_webhook_event",
"message": "The events \"group.created\" are not supported by \"waba\" instances."
}
]
}
{
"errors": [
{
"code": "waba_invalid_token",
"message": "The provided WABA access token is invalid or has expired. Please verify your credentials."
}
]
}
{
"errors": [
{
"code": "confirmation_required",
"message": "This action interrupts the service of an instance that is currently \"connected\". Resend the request with the confirmation token to proceed.",
"details": {
"action": "instance.migrate_connection",
"confirmation_token": "eyJ2IjoxLCJhY3QiOiJpbnN0YW5jZS5taWdyYXRlX2Nvbm5lY3Rpb24ifQ.q1w2e3r4t5y6",
"expires_at": "2026-08-08T18:35:00.000Z",
"resource": "ozj35qv418rpmlrb",
"from": "unofficial",
"to": "waba",
"status": "connected",
"reason": "malformed"
}
}
]
}
Instâncias
Migrando o Tipo de Conexão
Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.
{
"errors": [
{
"code": "unsupported_webhook_event",
"message": "The events \"group.created\" are not supported by \"waba\" instances."
}
]
}
{
"errors": [
{
"code": "waba_invalid_token",
"message": "The provided WABA access token is invalid or has expired. Please verify your credentials."
}
]
}
{
"errors": [
{
"code": "confirmation_required",
"message": "This action interrupts the service of an instance that is currently \"connected\". Resend the request with the confirmation token to proceed.",
"details": {
"action": "instance.migrate_connection",
"confirmation_token": "eyJ2IjoxLCJhY3QiOiJpbnN0YW5jZS5taWdyYXRlX2Nvbm5lY3Rpb24ifQ.q1w2e3r4t5y6",
"expires_at": "2026-08-08T18:35:00.000Z",
"resource": "ozj35qv418rpmlrb",
"from": "unofficial",
"to": "waba",
"status": "connected",
"reason": "malformed"
}
}
]
}
Use este endpoint para trocar o tipo de conexão de uma instância existente sem perder nada da sua integração: o ID da instância, os webhooks cadastrados e as configurações permanecem exatamente como estavam. A migração funciona nos dois sentidos.
Envie connection_type: "waba" junto com o objeto waba, contendo access_token, phone_number_id e waba_id.
O Embedded Signup (login com o Facebook) só está disponível pelo painel da Zapster: ele depende de uma página hospedada por nós e não pode ser reproduzido por chamada de API. Para migrar por aqui, gere um System User Token no Meta Business Manager e informe-o no objeto waba.
O ambiente de execução da conexão não oficial é desativado e o número passa a operar pela Cloud API da Meta. Ao final, a instância fica connected.
Envie connection_type: "unofficial", sem credenciais. A configuração WABA é removida com segurança na Meta e um novo ambiente de conexão é preparado. A instância fica disconnected, aguardando a leitura do QR Code (ou código de pareamento) para conectar o número.
Os tipos de conexão suportam conjuntos diferentes de eventos de webhook, e a API oficial suporta um conjunto menor. Antes de migrar, os webhooks já cadastrados na instância são validados contra o tipo de destino: se algum estiver inscrito em um evento que o destino não emite, a migração é rejeitada com 400 (unsupported_webhook_event), listando todos os eventos incompatíveis e os eventos válidos. Ajuste as inscrições e repita a chamada.
Migrar uma instância que não está disconnected interrompe o serviço dela durante a troca, mesmo quando ela está apenas offline: só a instância já disconnected dispensa a confirmação. Nesse caso, a chamada exige o header X-Confirmation-Token.Esse token não é um valor arbitrário: é assinado pela própria API e vinculado ao usuário autenticado, à ação (instance.migrate_connection), à instância e ao tipo de conexão de destino. Um token obtido para migrar para waba não confirma uma migração para unofficial, e vice-versa. Ele expira em cerca de 5 minutos.Existem duas formas de obter o token, e ambas produzem o mesmo resultado:
Chame o endpoint sem o header. A resposta é 409 (confirmation_required), e o corpo traz em details.confirmation_token um token já pronto para a chamada que você acabou de tentar, junto com expires_at, from, to, status e resource. Basta repetir a chamada idêntica com esse valor no header.
Peça o token antes de tentar migrar, em POST /confirmations, informando action: "instance.migrate_connection", o resource (ID da instância) e params.to com o tipo de conexão de destino.
Se o token estiver ausente, malformado, expirado ou não corresponder exatamente à chamada (outro tipo de destino, por exemplo), a API responde com o mesmo 409 e um token novo pronto para uso. O campo details.reason existe só para depuração: o fluxo do cliente é sempre “recebi 409, pego o token, tento de novo”, nunca uma decisão baseada no motivo.Essa confirmação não é uma camada de segurança. Quem tem o token de acesso da conta sempre consegue emitir uma confirmação; ela existe para tornar deliberada uma migração disruptiva que aconteceria por engano, não para impedir chamadas mal-intencionadas.
Token de confirmação, obrigatório quando a instância NÃO está
desconectada, inclusive quando está offline: a migração interrompe
o serviço dela durante a troca. É um token opaco assinado pela
própria API, vinculado ao usuário autenticado, à ação e ao tipo de
conexão de destino, com validade de cerca de 5 minutos. Obtenha-o em
details.confirmation_token, na resposta 409 desta mesma chamada
sem o header, ou antecipadamente em POST /confirmations. Sem o
header nessa situação, a API responde 409 (confirmation_required).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Zapster API","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/zapsterapi/hkJBRd8211Vh6izL/logo/light.svg?fit=max\u0026auto=format\u0026n=hkJBRd8211Vh6izL\u0026q=85\u0026s=7f89e972a4a31e307a18ba827099ba54","dark":"https://mintcdn.com/zapsterapi/hkJBRd8211Vh6izL/logo/dark.svg?fit=max\u0026auto=format\u0026n=hkJBRd8211Vh6izL\u0026q=85\u0026s=0584b46f3a6a9f5ef5186367a623ed31","href":"https://app.zapsterapi.com/?utm_source=Documentation\u0026utm_medium=Logo"},"favicon":"https://mintcdn.com/zapsterapi/hkJBRd8211Vh6izL/favicon.svg?fit=max\u0026auto=format\u0026n=hkJBRd8211Vh6izL\u0026q=85\u0026s=1d151a6daf40e21848a8e653dd56911e","api":{"openapi":{"source":"pt-BR/v1/openapi/openapi.json"},"playground":{"display":"interactive"}},"navbar":{"links":[{"href":"https://wa.me/5587999079455?text=Olá, preciso de ajuda com a documentação da Zapster","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.zapsterapi.com/?utm_source=Documentation\u0026utm_medium=NavbarButton"}},"integrations":{"gtm":{"tagId":"GTM-PF4DXJPP"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"pt-BR","default":true,"href":"pt-BR/v1/introduction"},{"language":"en","href":"en/v1/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zapsterapi","hasAudioNarration":false,"actualSubdomain":"zapsterapi","customDomains":["developer.zapsterapi.com"],"gitSource":{"type":"github","owner":"zapsterapi","repo":"zapsterapi-monorepo","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae129f0a0016dd52b435656","collectionId":"84f617dc-1a5c-4cd4-88d4-2529d3a8d2a2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae129f0a0016dd52b435656"},"entitlements":{},"buildId":"6ae129f0a0016dd52b435656","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"pt-BR","tag":"Referência da API","count":41},{"language":"pt-BR","tag":"Visão Geral","count":28},{"language":"pt-BR","tag":"CLI","count":18},{"language":"pt-BR","tag":"Instâncias","count":17},{"language":"en","tag":"Overview","count":16},{"language":"pt-BR","tag":"Para Grupos","count":9},{"language":"en","tag":"Guides","count":8},{"language":"pt-BR","tag":"Guias","count":8},{"language":"en","tag":"Concepts","count":7},{"language":"pt-BR","tag":"Webhooks","count":7},{"language":"pt-BR","tag":"Conceitos","count":7},{"language":"en","tag":"CLI","count":6},{"language":"pt-BR","tag":"Utilidades","count":6},{"language":"pt-BR","tag":"Mensagens","count":5},{"language":"en","tag":"Introduction","count":1}]},"assistantConfig":{},"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":"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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"pt-BR/v1/api-reference/instance/migrate-instance","slug":"/pt-BR/v1/api-reference/instance/migrate-instance","pageMetadata":{"title":"Migrando o Tipo de Conexão","openapi":"POST /wa/instances/{instance_id}/migrate","description":"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\n","href":"/pt-BR/v1/api-reference/instance/migrate-instance"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,Note}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use este endpoint para trocar o tipo de conexão de uma instância existente sem perder nada da sua integração: o ID da instância, os webhooks cadastrados e as configurações permanecem exatamente como estavam. A migração funciona nos dois sentidos.`}),`\n`,_jsx(Heading,{level:`3`,id:`não-oficial-para-api-oficial-waba`,children:`Não oficial para API oficial (WABA)`}),`\n`,_jsxs(_components.p,{children:[`Envie `,_jsx(_components.code,{children:`connection_type: \"waba\"`}),` junto com o objeto `,_jsx(_components.code,{children:`waba`}),`, contendo `,_jsx(_components.code,{children:`access_token`}),`, `,_jsx(_components.code,{children:`phone_number_id`}),` e `,_jsx(_components.code,{children:`waba_id`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`O Embedded Signup (login com o Facebook) só está disponível pelo painel da Zapster: ele depende de uma página hospedada por nós e não pode ser reproduzido por chamada de API. Para migrar por aqui, gere um System User Token no Meta Business Manager e informe-o no objeto `,_jsx(_components.code,{children:`waba`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[`O ambiente de execução da conexão não oficial é desativado e o número passa a operar pela Cloud API da Meta. Ao final, a instância fica `,_jsx(_components.code,{children:`connected`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`api-oficial-waba-para-não-oficial`,children:`API oficial (WABA) para não oficial`}),`\n`,_jsxs(_components.p,{children:[`Envie `,_jsx(_components.code,{children:`connection_type: \"unofficial\"`}),`, sem credenciais. A configuração WABA é removida com segurança na Meta e um novo ambiente de conexão é preparado. A instância fica `,_jsx(_components.code,{children:`disconnected`}),`, aguardando a leitura do QR Code (ou código de pareamento) para conectar o número.`]}),`\n`,_jsx(Heading,{level:`3`,id:`webhooks-são-revalidados`,children:`Webhooks são revalidados`}),`\n`,_jsxs(_components.p,{children:[`Os tipos de conexão suportam conjuntos diferentes de eventos de webhook, e a API oficial suporta um conjunto menor. Antes de migrar, os webhooks já cadastrados na instância são validados contra o tipo de destino: se algum estiver inscrito em um evento que o destino não emite, a migração é rejeitada com `,_jsx(_components.code,{children:`400`}),` (`,_jsx(_components.code,{children:`unsupported_webhook_event`}),`), listando todos os eventos incompatíveis e os eventos válidos. Ajuste as inscrições e repita a chamada.`]}),`\n`,_jsx(Heading,{level:`3`,id:`confirmação-para-instâncias-em-uso`,children:`Confirmação para instâncias em uso`}),`\n`,_jsxs(_components.p,{children:[`Migrar uma instância que não está `,_jsx(_components.code,{children:`disconnected`}),` interrompe o serviço dela durante a troca, mesmo quando ela está apenas `,_jsx(_components.code,{children:`offline`}),`: só a instância já `,_jsx(_components.code,{children:`disconnected`}),` dispensa a confirmação. Nesse caso, a chamada exige o header `,_jsx(_components.code,{children:`X-Confirmation-Token`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Esse token não é um valor arbitrário: é assinado pela própria API e vinculado ao usuário autenticado, à ação (`,_jsx(_components.code,{children:`instance.migrate_connection`}),`), à instância e ao tipo de conexão de destino. Um token obtido para migrar para `,_jsx(_components.code,{children:`waba`}),` não confirma uma migração para `,_jsx(_components.code,{children:`unofficial`}),`, e vice-versa. Ele expira em cerca de 5 minutos.`]}),`\n`,_jsx(_components.p,{children:`Existem duas formas de obter o token, e ambas produzem o mesmo resultado:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Chame o endpoint sem o header.`}),` A resposta é `,_jsx(_components.code,{children:`409`}),` (`,_jsx(_components.code,{children:`confirmation_required`}),`), e o corpo traz em `,_jsx(_components.code,{children:`details.confirmation_token`}),` um token já pronto para a chamada que você acabou de tentar, junto com `,_jsx(_components.code,{children:`expires_at`}),`, `,_jsx(_components.code,{children:`from`}),`, `,_jsx(_components.code,{children:`to`}),`, `,_jsx(_components.code,{children:`status`}),` e `,_jsx(_components.code,{children:`resource`}),`. Basta repetir a chamada idêntica com esse valor no header.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Peça o token antes de tentar migrar`}),`, em `,_jsx(_components.a,{href:`/pt-BR/v1/api-reference/confirmations/issue-confirmation`,children:_jsx(_components.code,{children:`POST /confirmations`})}),`, informando `,_jsx(_components.code,{children:`action: \"instance.migrate_connection\"`}),`, o `,_jsx(_components.code,{children:`resource`}),` (ID da instância) e `,_jsx(_components.code,{children:`params.to`}),` com o tipo de conexão de destino.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Se o token estiver ausente, malformado, expirado ou não corresponder exatamente à chamada (outro tipo de destino, por exemplo), a API responde com o mesmo `,_jsx(_components.code,{children:`409`}),` e um token novo pronto para uso. O campo `,_jsx(_components.code,{children:`details.reason`}),` existe só para depuração: o fluxo do cliente é sempre “recebi 409, pego o token, tento de novo”, nunca uma decisão baseada no motivo.`]}),`\n`,_jsx(_components.p,{children:`Essa confirmação não é uma camada de segurança. Quem tem o token de acesso da conta sempre consegue emitir uma confirmação; ela existe para tornar deliberada uma migração disruptiva que aconteceria por engano, não para impedir chamadas mal-intencionadas.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Migrando o Tipo de Conexão","openapi":"POST /wa/instances/{instance_id}/migrate","description":"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\n","href":"/pt-BR/v1/api-reference/instance/migrate-instance"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Não oficial para API oficial (WABA)","slug":"não-oficial-para-api-oficial-waba","depth":3,"children":[]},{"title":"API oficial (WABA) para não oficial","slug":"api-oficial-waba-para-não-oficial","depth":3,"children":[]},{"title":"Webhooks são revalidados","slug":"webhooks-são-revalidados","depth":3,"children":[]},{"title":"Confirmação para instâncias em uso","slug":"confirmação-para-instâncias-em-uso","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/zapsterapi/d763f142efc774ff/watch-openapi.js"],"openApiReferenceData":{"operation":{"summary":"Migração do Tipo de Conexão","deprecated":false,"description":"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\n","tags":[],"security":["262a5183-b105-445a-9114-8e0c9968d2cb"],"parameters":["0433ea33-350b-4345-9088-e3ade4e3c9ad","95ca0f9e-f2f8-4f48-a96f-28c3be3c3171"],"requestBody":"e0a324e7-8c90-4ab4-8ce3-ed10f251180f","responses":{"200":"fd0c7dac-c5be-42e7-82b5-520a3511687b","400":"19832c67-1494-4fbf-923c-ec896b2c757e","401":"f4fad689-5e7e-4a19-884f-e3315d697c61","404":"32982b07-36e4-47ad-9450-6eb092602497","409":"afa350d0-f3e2-4ec2-9306-ac34a1a23c75"},"method":"post","type":"path","servers":["47a9c70c-c4df-478d-b870-e68c65cdee2a"],"path":"/wa/instances/{instance_id}/migrate","baseUrlOptions":["https://api.zapsterapi.com/v1"],"title":"Migração do Tipo de Conexão","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"0433ea33-350b-4345-9088-e3ade4e3c9ad":{"name":"instance_id","in":"path","description":"ID da instância.","required":true,"example":"ozj35qv418rpmlrb","schema":{"type":"string","isRequired":true,"description":"ID da instância.","uniqueKey":"","typeLabel":"string"}},"95ca0f9e-f2f8-4f48-a96f-28c3be3c3171":{"name":"X-Confirmation-Token","in":"header","description":"Token de confirmação, obrigatório quando a instância NÃO está\ndesconectada, inclusive quando está `offline`: a migração interrompe\no serviço dela durante a troca. É um token opaco assinado pela\nprópria API, vinculado ao usuário autenticado, à ação e ao tipo de\nconexão de destino, com validade de cerca de 5 minutos. Obtenha-o em\n`details.confirmation_token`, na resposta `409` desta mesma chamada\nsem o header, ou antecipadamente em `POST /confirmations`. Sem o\nheader nessa situação, a API responde `409` (`confirmation_required`).\n","required":false,"example":"eyJ2IjoxLCJhY3QiOiJpbnN0YW5jZS5taWdyYXRlX2Nvbm5lY3Rpb24ifQ.q1w2e3r4t5y6","schema":{"type":"string","isRequired":false,"description":"Token de confirmação, obrigatório quando a instância NÃO está\ndesconectada, inclusive quando está `offline`: a migração interrompe\no serviço dela durante a troca. É um token opaco assinado pela\nprópria API, vinculado ao usuário autenticado, à ação e ao tipo de\nconexão de destino, com validade de cerca de 5 minutos. Obtenha-o em\n`details.confirmation_token`, na resposta `409` desta mesma chamada\nsem o header, ou antecipadamente em `POST /confirmations`. Sem o\nheader nessa situação, a API responde `409` (`confirmation_required`).\n","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["connection_type"],"properties":{"connection_type":{"type":"string","enum":["unofficial","waba"],"description":"Tipo de conexão de destino:\n- `unofficial`: o metadata WABA é limpo e um pod é provisionado para a conexão por QR Code\n- `waba`: o pod é derrubado e o número é conectado pela Cloud API da Meta (exige credenciais)\n","example":"waba","isRequired":true,"uniqueKey":"connection_type","typeLabel":"enum\u003cstring>"},"waba":{"type":"object","description":"Credenciais manuais da Cloud API da Meta, aceitas apenas\nquando `connection_type` é `waba`.\n","properties":{"access_token":{"type":"string","description":"Token de acesso da Meta Cloud API. Pode ser um System User Token\n(gerado no Meta Business Manager) ou obtido via Embedded Signup (OAuth).\n","example":"EAAxxxxxxx...","isRequired":true,"uniqueKey":"waba.access_token","typeLabel":"string"},"phone_number_id":{"type":"string","description":"ID do número de telefone cadastrado na Meta Business Platform","example":"1016102021584086","isRequired":true,"uniqueKey":"waba.phone_number_id","typeLabel":"string"},"waba_id":{"type":"string","description":"ID da conta WhatsApp Business (WABA) na Meta","example":"419378847918255","isRequired":true,"uniqueKey":"waba.waba_id","typeLabel":"string"},"auth_method":{"type":"string","enum":["system_user_token"],"default":"system_user_token","description":"Opcional. Como o `access_token` foi obtido. Aqui o único\nvalor aceito é `system_user_token` (token gerado no Meta\nBusiness Manager), que também é o padrão quando omitido.\n\nEste campo define qual segredo a Zapster usa para validar\na assinatura dos webhooks que a Meta envia. Informe\n`app_secret` junto se o token pertence ao seu próprio app\nMeta, para que a validação seja feita contra ele.\n","example":"system_user_token","uniqueKey":"waba.auth_method","typeLabel":"enum\u003cstring>"},"app_id":{"type":"string","description":"Opcional. ID do app Meta do cliente (BYO-app), quando o\n`access_token` é um System User Token gerado no app Meta do\npróprio cliente.\n","example":"1234567890123456","uniqueKey":"waba.app_id","typeLabel":"string"},"app_secret":{"type":"string","description":"Opcional, recomendado para BYO-app. App Secret do app Meta\ndo cliente, usado para validar a assinatura HMAC\n(`X-Hub-Signature-256`) dos webhooks de entrada. Armazenado\ncriptografado em repouso (AES-256).\n","example":"a1b2c3d4e5f6...","uniqueKey":"waba.app_secret","typeLabel":"string"},"webhook_verify_token":{"type":"string","description":"Opcional. Token de verificação de webhook fornecido pelo\ncliente. Se omitido, a Zapster gera um token aleatório.\nArmazenado criptografado em repouso (AES-256).\n","example":"meu-verify-token","uniqueKey":"waba.webhook_verify_token","typeLabel":"string"}},"required":["access_token","phone_number_id","waba_id"],"uniqueKey":"waba","typeLabel":"object"}},"example":{"connection_type":"waba","waba":{"access_token":"EAAxxxxxxx...","phone_number_id":"1016102021584086","waba_id":"419378847918255"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"connection_type":"waba","waba":{"access_token":"EAAxxxxxxx...","phone_number_id":"1016102021584086","waba_id":"419378847918255"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"fd0c7dac-c5be-42e7-82b5-520a3511687b":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"Estrutura de uma instância registrada na API.","properties":{"created_at":{"type":"string","format":"date-time","description":"Data e hora de criação da instância no formato ISO 8601.","example":"2024-10-03T21:56:22.620Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"id":{"type":"string","description":"Identificador único da instância.","example":"xy9rexnkwobmgg3tehgvs","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"metadata":{"type":"object","description":"Metadados adicionais armazenados como chave e valor.","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"metadata.additionalProperties.oneOf.1","typeLabel":"number"}],"uniqueKey":"metadata.additionalProperties","typeLabel":"string | number"},"example":{"customer_id":"123456","customer_name":"Joãozinho","phone_number":"+5587989075555"},"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"name":{"type":"string","description":"Nome da instância.","example":"MyNewInstance2","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"owner":{"type":"object","description":"Informações sobre o proprietário da instância.","properties":{"id":{"type":"string","format":"uuid","description":"Identificador único do proprietário.","isRequired":true,"uniqueKey":"owner.id","typeLabel":"string\u003cuuid>"},"display_name":{"oneOf":[{"type":"string","description":"Nome de exibição do proprietário. Pode ser nulo.","example":null,"uniqueKey":"owner.display_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Nome de exibição do proprietário. Pode ser nulo.","example":null,"uniqueKey":"owner.display_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"owner.display_name","typeLabel":"string | null"}},"required":["id"],"isRequired":true,"uniqueKey":"owner","typeLabel":"object"},"settings":{"type":"object","description":"Objeto **opcional** de configurações da sua instância.\n","properties":{"call_rejection":{"type":"string","description":"Define o comportarmento de rejeição de ligações.\n\n- `all` - Irá rejeitar todas ligações\n- `none` - Não irá rejeitar ligações.\n- `video_only` - Irá rejeitar apenas ligações de **vídeo**.\n- `audio_only` - Irá rejeitar apenas ligações de **audio**.\n","enum":["all","none","video_only","audio_only"],"uniqueKey":"settings.call_rejection","typeLabel":"enum\u003cstring>"},"delay_per_word":{"type":"boolean","description":"Define se o delay antes de enviar a mensagem deve ser baseado na quantidade de palavras.\n\nℹ️ Limitado a no máximo **10 segundos** de espera.\n","uniqueKey":"settings.delay_per_word","typeLabel":"boolean"},"delete_chat_after_sent":{"type":"boolean","description":"⚠️ *Esta função não está funcionando adequadamente, estamos trabalhando para regulariza-la.*\n\nDefine se o chat/conversa deve ser limpo depois do envio da mensagem. Isso garante que o dispositivo fique acumulando mensagens a ponto de muitas vezes travar o dispositivo que foi conectado.\n","uniqueKey":"settings.delete_chat_after_sent","typeLabel":"boolean"},"message_delay":{"type":"object","description":"Define a configuração de delay antes do envio da mensagem, se configurado `delay_per_word` é ignorado. O tempo é gerado randomicamente entre os limites configurado (`min` e `max`).\n","properties":{"enabled":{"type":"boolean","default":true,"uniqueKey":"settings.message_delay.enabled","typeLabel":"boolean"},"max":{"type":"integer","description":"Máximo de tempo em segundos que deve ser esperado antes do envio da mensagem.","default":10,"uniqueKey":"settings.message_delay.max","typeLabel":"integer"},"min":{"type":"integer","description":"Mínimo de tempo em segundos que deve ser esperado antes do envio da mensagem.","default":1,"uniqueKey":"settings.message_delay.min","typeLabel":"integer"}},"uniqueKey":"settings.message_delay","typeLabel":"object"},"presence_behavior":{"type":"string","description":"Define o comportamento da presença (Online, Digitando..., Gravando...) da sua instância.\n\n- `only_composing` - Exibe \"Digitando...\" durante o envio das mensagens, sem marcar a conta como \"Online\". (**recomendado**)\n- `always_online` - A conta aparece sempre \"Online\". Atenção: enquanto a conta está \"Online\" por um dispositivo vinculado, o WhatsApp pode deixar de enviar notificações para o celular onde o número está instalado.\n- `always_offline` - Nunca aparece \"Online\" e não exibe \"Digitando...\" durante os envios.\n","enum":["only_composing","always_online","always_offline"],"uniqueKey":"settings.presence_behavior","typeLabel":"enum\u003cstring>"},"read_confirmation":{"oneOf":[{"type":"string","description":"Define o comportamento de \"confirmação de leitura\", ou seja, a leitura automática das mensagens recebidas.\n\nAceita os valores clássicos em texto ou um objeto segmentado por tipo de conversa:\n\n- `never` - Nunca confirma a leitura (equivale a todos os segmentos desligados)\n- `always` - Sempre confirma a leitura (equivale a todos os segmentos ligados)\n- Objeto com os campos `chats`, `groups` e `status` - Controla cada segmento de forma independente\n\nNo formato de objeto, cada campo é booleano e o padrão é `false`:\n\n- `chats` - Conversas individuais\n- `groups` - Grupos\n- `status` - Status publicados pelos seus contatos (com este segmento ligado, os status recebidos são marcados como vistos)\n\nMensagens enviadas pela própria instância, listas de transmissão e publicações de canais nunca recebem confirmação de leitura automática.\n","enum":["never","always"],"uniqueKey":"settings.read_confirmation.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"object","description":"Define o comportamento de \"confirmação de leitura\", ou seja, a leitura automática das mensagens recebidas.\n\nAceita os valores clássicos em texto ou um objeto segmentado por tipo de conversa:\n\n- `never` - Nunca confirma a leitura (equivale a todos os segmentos desligados)\n- `always` - Sempre confirma a leitura (equivale a todos os segmentos ligados)\n- Objeto com os campos `chats`, `groups` e `status` - Controla cada segmento de forma independente\n\nNo formato de objeto, cada campo é booleano e o padrão é `false`:\n\n- `chats` - Conversas individuais\n- `groups` - Grupos\n- `status` - Status publicados pelos seus contatos (com este segmento ligado, os status recebidos são marcados como vistos)\n\nMensagens enviadas pela própria instância, listas de transmissão e publicações de canais nunca recebem confirmação de leitura automática.\n","properties":{"chats":{"type":"boolean","default":false,"description":"Confirma a leitura de mensagens recebidas em conversas individuais.","uniqueKey":"settings.read_confirmation.oneOf.1.chats","typeLabel":"boolean"},"groups":{"type":"boolean","default":false,"description":"Confirma a leitura de mensagens recebidas em grupos.","uniqueKey":"settings.read_confirmation.oneOf.1.groups","typeLabel":"boolean"},"status":{"type":"boolean","default":false,"description":"Marca como vistos os status publicados pelos seus contatos.","uniqueKey":"settings.read_confirmation.oneOf.1.status","typeLabel":"boolean"}},"uniqueKey":"settings.read_confirmation.oneOf.1","typeLabel":"object"}],"uniqueKey":"settings.read_confirmation","typeLabel":"enum\u003cstring> | object"}},"isRequired":true,"uniqueKey":"settings","typeLabel":"object"},"status":{"type":"string","enum":["connected","disconnected","offline"],"description":"Status atual da instância","example":"disconnected","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"webhooks":{"type":"array","description":"Lista de webhooks configurados para esta instância.","items":{"type":"object","description":"Configuração de um webhook associado à instância.","properties":{"enabled":{"type":"boolean","description":"Indica se o webhook está ativado.","example":true,"isRequired":true,"uniqueKey":"webhooks.items.[INDEX].enabled","typeLabel":"boolean"},"events":{"type":"array","description":"Lista de eventos que acionam este webhook.","items":{"type":"string","enum":["call.accepted","call.missed","call.received","call.rejected","group.created","group.participants_added","group.participants_demoted","group.participants_promoted","group.participants_removed","group.updated","instance.connected","instance.disconnected","instance.forbidden","instance.mentioned","instance.qrcode","instance.restricted","instance.restriction_lifted","message.deleted","message.delivered","message.edited","message.failed","message.flow_reply","message.pinned","message.reaction","message.read","message.received","message.sent","message.unpinned","poll.created","poll.deleted","poll.updated","status.reply"],"uniqueKey":"webhooks.items.[INDEX].events.items.[INDEX]","typeLabel":"enum\u003cstring>"},"example":["message.received"],"isRequired":true,"uniqueKey":"webhooks.items.[INDEX].events","typeLabel":"enum\u003cstring>[]"},"id":{"type":"string","description":"Identificador único do webhook.","example":"2nenz69l0xbf0m3uu9tfo","isRequired":true,"uniqueKey":"webhooks.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","description":"Nome do webhook configurado.","example":"Webhook Name","isRequired":true,"uniqueKey":"webhooks.items.[INDEX].name","typeLabel":"string"},"test_mode":{"type":"boolean","description":"Indica se o webhook está em modo de teste.","example":false,"isRequired":true,"uniqueKey":"webhooks.items.[INDEX].test_mode","typeLabel":"boolean"},"url":{"type":"string","format":"uri","description":"URL do webhook para onde os eventos serão enviados.","example":"https://webhook.mydomain.com","isRequired":true,"uniqueKey":"webhooks.items.[INDEX].url","typeLabel":"string\u003curi>"},"test_url":{"oneOf":[{"type":"string","description":"URL de teste do webhook, se disponível.","example":null,"uniqueKey":"webhooks.items.[INDEX].test_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"URL de teste do webhook, se disponível.","example":null,"uniqueKey":"webhooks.items.[INDEX].test_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"webhooks.items.[INDEX].test_url","typeLabel":"string | null"}},"required":["enabled","events","id","name","test_mode","url"],"uniqueKey":"webhooks.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"webhooks","typeLabel":"object[]"},"connection_type":{"type":"string","enum":["unofficial","waba"],"description":"Tipo de conexão da instância:\n- `unofficial`: conexão via QR code (padrão)\n- `waba`: conexão via API oficial do WhatsApp (Cloud API da Meta)\n","example":"unofficial","uniqueKey":"connection_type","typeLabel":"enum\u003cstring>"},"qrcode":{"oneOf":[{"type":"string","description":"QR Code da instância, caso disponível.","example":null,"uniqueKey":"qrcode.oneOf.0","typeLabel":"string"},{"type":"null","description":"QR Code da instância, caso disponível.","example":null,"uniqueKey":"qrcode.oneOf.1","typeLabel":"null"}],"uniqueKey":"qrcode","typeLabel":"string | null"},"lookup_key":{"type":"string","description":"Identificador de pesquisa criado anteriormente.","example":"ins_8j7wlxmpjlixx9mux5","uniqueKey":"lookup_key","typeLabel":"string"}},"required":["created_at","id","metadata","name","owner","settings","status","webhooks"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"created_at":"2024-10-03T21:56:22.620Z","id":"xy9rexnkwobmgg3tehgvs","metadata":{"customer_id":"123456","customer_name":"Joãozinho","phone_number":"+5587989075555"},"name":"MyNewInstance2","owner":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","display_name":null},"settings":{"call_rejection":"all","delay_per_word":true,"delete_chat_after_sent":true,"message_delay":{"enabled":true,"max":10,"min":1},"presence_behavior":"only_composing","read_confirmation":"never"},"status":"disconnected","webhooks":[{"enabled":true,"events":["message.received"],"id":"2nenz69l0xbf0m3uu9tfo","name":"Webhook Name","test_mode":false,"url":"https://webhook.mydomain.com","test_url":null}],"connection_type":"unofficial","qrcode":null,"lookup_key":"ins_8j7wlxmpjlixx9mux5"}}},"exampleType":"generated"}},"exampleType":"generated"},"19832c67-1494-4fbf-923c-ec896b2c757e":{"description":"Erro de validação no corpo da requisição, instância já no tipo de\ndestino, ou webhook com evento não suportado no tipo de destino\n","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Código do erro","example":"unsupported_webhook_event","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Mensagem de erro","example":"The events \"group.created\" are not supported by \"waba\" instances.","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"unsupported_webhook_event","message":"The events \"group.created\" are not supported by \"waba\" instances."}]}}},"exampleType":"generated"}},"exampleType":"generated"},"f4fad689-5e7e-4a19-884f-e3315d697c61":{"description":"Token de acesso da Meta inválido ou expirado","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"waba_invalid_token","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","example":"The provided WABA access token is invalid or has expired. Please verify your credentials.","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"waba_invalid_token","message":"The provided WABA access token is invalid or has expired. Please verify your credentials."}]}}},"exampleType":"generated"}},"exampleType":"generated"},"32982b07-36e4-47ad-9450-6eb092602497":{"description":"Instância não encontrada ou não pertence ao usuário","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"instance_not_found","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","example":"Instance not found.","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"instance_not_found","message":"Instance not found."}]}}},"exampleType":"generated"}},"exampleType":"generated"},"afa350d0-f3e2-4ec2-9306-ac34a1a23c75":{"description":"Confirmação necessária para migrar uma instância que não está\ndesconectada (inclui `offline`)\n","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"confirmation_required","uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","example":"This action interrupts the service of an instance that is currently \"connected\". Resend the request with the confirmation token to proceed.","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"details":{"type":"object","description":"Contexto da ação que exige confirmação.","properties":{"action":{"type":"string","example":"instance.migrate_connection","uniqueKey":"errors.items.[INDEX].details.action","typeLabel":"string"},"confirmation_token":{"type":"string","description":"Token de confirmação recém-emitido para esta\nchamada. Reenvie a requisição idêntica com este\nvalor no header `X-Confirmation-Token`.\n","example":"eyJ2IjoxLCJhY3QiOiJpbnN0YW5jZS5taWdyYXRlX2Nvbm5lY3Rpb24ifQ.q1w2e3r4t5y6","uniqueKey":"errors.items.[INDEX].details.confirmation_token","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","description":"Validade do confirmation_token.","example":"2026-08-08T18:35:00.000Z","uniqueKey":"errors.items.[INDEX].details.expires_at","typeLabel":"string\u003cdate-time>"},"resource":{"type":"string","description":"ID da instância","example":"ozj35qv418rpmlrb","uniqueKey":"errors.items.[INDEX].details.resource","typeLabel":"string"},"from":{"type":"string","description":"Tipo de conexão atual","example":"unofficial","uniqueKey":"errors.items.[INDEX].details.from","typeLabel":"string"},"to":{"type":"string","description":"Tipo de conexão de destino","example":"waba","uniqueKey":"errors.items.[INDEX].details.to","typeLabel":"string"},"status":{"type":"string","description":"Status atual da instância","example":"connected","uniqueKey":"errors.items.[INDEX].details.status","typeLabel":"string"},"reason":{"type":"string","description":"Motivo pelo qual a confirmação anterior (se\nhouver) não foi aceita. Só serve para debug: o\nfluxo do cliente não muda dependendo do valor,\nsempre reenvie a chamada com o confirmation_token\ndesta resposta.\n","enum":["malformed","bad_signature","expired","scope_mismatch"],"example":"malformed","uniqueKey":"errors.items.[INDEX].details.reason","typeLabel":"enum\u003cstring>"}},"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"confirmation_required","message":"This action interrupts the service of an instance that is currently \"connected\". Resend the request with the confirmation token to proceed.","details":{"action":"instance.migrate_connection","confirmation_token":"eyJ2IjoxLCJhY3QiOiJpbnN0YW5jZS5taWdyYXRlX2Nvbm5lY3Rpb24ifQ.q1w2e3r4t5y6","expires_at":"2026-08-08T18:35:00.000Z","resource":"ozj35qv418rpmlrb","from":"unofficial","to":"waba","status":"connected","reason":"malformed"}}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"262a5183-b105-445a-9114-8e0c9968d2cb":{"bearer":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearer"}}},"servers":{"47a9c70c-c4df-478d-b870-e68c65cdee2a":{"url":"https://api.zapsterapi.com/v1","description":"Produção"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer","name":"Authorization"}],"title":"bearer"}]},"originalFileLocation":"pt-BR/v1/openapi/openapi.json"},"subdomain":"zapsterapi","siteName":"Zapster API","title":"Migrando o Tipo de Conexão - Zapster API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"pt-BR":{"href":"/pt-BR/v1/api-reference/instance/migrate-instance","matchLevel":0},"en":{"href":"/en/v1/introduction","matchLevel":4}}},"lastModified":"2026-08-09T03:17:07.249Z","originalFileLocation":"pt-BR/v1/api-reference/instance/migrate-instance.mdx","locale":"pt-BR"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Zapster API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_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/zapsterapi/cT0sfMuuEnMLr0h-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Migrando o Tipo de Conexão - Zapster API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Zapster API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zapsterapi.mintlify.site/_mintlify/api/og/v2?division=Inst%C3%A2ncias\u0026amp;title=Migrando+o+Tipo+de+Conex%C3%A3o\u0026amp;description=Migra+a+inst%C3%A2ncia+entre+a+conex%C3%A3o+n%C3%A3o+oficial+%28QR+Code%29+e+a+API+oficial+%28WABA%29%2C+preservando+o+ID%2C+os+webhooks+e+as+configura%C3%A7%C3%B5es.%0A\u0026amp;theme=6d793348c5ecf1343e906422\u0026amp;signature=fd03ee9a5b56d364d4d33637fe0577e4f8307122c8b6f9bb2166205988d246fe\">\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=\"Migrando o Tipo de Conexão - Zapster API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zapsterapi.mintlify.site/_mintlify/api/og/v2?division=Inst%C3%A2ncias\u0026amp;title=Migrando+o+Tipo+de+Conex%C3%A3o\u0026amp;description=Migra+a+inst%C3%A2ncia+entre+a+conex%C3%A3o+n%C3%A3o+oficial+%28QR+Code%29+e+a+API+oficial+%28WABA%29%2C+preservando+o+ID%2C+os+webhooks+e+as+configura%C3%A7%C3%B5es.%0A\u0026amp;theme=6d793348c5ecf1343e906422\u0026amp;signature=fd03ee9a5b56d364d4d33637fe0577e4f8307122c8b6f9bb2166205988d246fe\">\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/zapsterapi/cT0sfMuuEnMLr0h-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Zapster API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pt-BR/v1/api-reference/instance/migrate-instance.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.zapsterapi.com/#organization\",\"name\":\"Zapster API\",\"url\":\"https://developer.zapsterapi.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/zapsterapi/hkJBRd8211Vh6izL/logo/light.svg?fit=max\u0026auto=format\u0026n=hkJBRd8211Vh6izL\u0026q=85\u0026s=7f89e972a4a31e307a18ba827099ba54\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.zapsterapi.com#website\",\"name\":\"Zapster API\",\"url\":\"https://developer.zapsterapi.com\",\"publisher\":{\"@id\":\"https://developer.zapsterapi.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance#webpage\",\"url\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance\",\"name\":\"Migrando o Tipo de Conexão\",\"description\":\"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\",\"dateModified\":\"2026-08-09T03:17:07.249Z\",\"isPartOf\":{\"@id\":\"https://developer.zapsterapi.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Instâncias\",\"item\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/list-instances\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrando o Tipo de Conexão\",\"item\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance#apireference\",\"headline\":\"Migrando o Tipo de Conexão\",\"name\":\"Migrando o Tipo de Conexão\",\"description\":\"Migra a instância entre a conexão não oficial (QR Code) e a API oficial (WABA), preservando o ID, os webhooks e as configurações.\",\"url\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance\",\"mainEntityOfPage\":{\"@id\":\"https://developer.zapsterapi.com/pt-BR/v1/api-reference/instance/migrate-instance#webpage\"},\"dateModified\":\"2026-08-09T03:17:07.249Z\",\"publisher\":{\"@id\":\"https://developer.zapsterapi.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.zapsterapi.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Zapster API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Zapster API","nav":{"global":null,"languages":[{"language":"pt-BR","default":true,"tabs":[{"tab":"Visão Geral","icon":"book-open","pages":[{"title":"Visão Geral","href":"/pt-BR/v1/introduction"}]},{"tab":"Referência da API","icon":"square-terminal","pages":[{"group":"Instâncias","pages":[{"title":"Listando Instâncias","openapi":"GET /wa/instances","href":"/pt-BR/v1/api-reference/instance/list-instances"},{"title":"Criando Instância","openapi":"POST /wa/instances","href":"/pt-BR/v1/api-reference/instance/create-instance"},{"title":"Dados da Instância","openapi":"GET /wa/instances/{instance_id}","href":"/pt-BR/v1/api-reference/instance/instance-details"},{"title":"Excluindo Instância","openapi":"DELETE /wa/instances/{instance_id}","href":"/pt-BR/v1/api-reference/instance/delete-instance"},{"title":"Obtendo QR Code","openapi":"GET /wa/instances/{instance_id}/qrcode","href":"/pt-BR/v1/api-reference/instance/instance-qrcode"},{"title":"Obtendo Cód. Pareamento","openapi":"POST /wa/instances/{instance_id}/pairing-code","href":"/pt-BR/v1/api-reference/instance/pairing-code"},{"title":"Reconectando uma Instância WABA","openapi":"POST /wa/instances/{instance_id}/reconnect","description":"Reconecta uma instância WABA, rotacionando as credenciais ou apontando o mesmo ID para outro número, preservando os webhooks e as configurações.\n","href":"/pt-BR/v1/api-reference/instance/reconnect-instance"},{"title":"Migrando o Tipo de Conexão","openapi":"POST /wa/instances/{instance_id}/migrate","href":"/pt-BR/v1/api-reference/instance/migrate-instance"},{"title":"Criando Webhooks","openapi":"POST /wa/instances/{instance_id}/webhooks","description":null,"href":"/pt-BR/v1/api-reference/instance/create-webhook"},{"title":"Atualizando Webhooks","openapi":"PATCH /wa/instances/{instance_id}/webhooks/{webhook_id}","href":"/pt-BR/v1/api-reference/instance/update-webhook"},{"title":"Excluindo Webhooks","openapi":"DELETE /wa/instances/{instance_id}/webhooks/{webhook_id}","href":"/pt-BR/v1/api-reference/instance/delete-webhook"},{"title":"Ligando Instância","openapi":"POST /wa/instances/{instance_id}/power-on","href":"/pt-BR/v1/api-reference/instance/power-instance-on"},{"title":"Desligando Instância","openapi":"POST /wa/instances/{instance_id}/power-off","href":"/pt-BR/v1/api-reference/instance/power-instance-off"},{"title":"Reiniciando Instância","openapi":"POST /wa/instances/{instance_id}/restart","href":"/pt-BR/v1/api-reference/instance/restart-instance"},{"title":"Atualizando a Instância","openapi":"PATCH /wa/instances/{instance_id}","href":"/pt-BR/v1/api-reference/instance/update-instance"},{"title":"Atualizando Perfil","openapi":"PATCH /wa/instances/{instance_id}/profile","href":"/pt-BR/v1/api-reference/instance/update-profile"},{"title":"Atualizando Configurações","openapi":"PATCH /wa/instances/{instance_id}/settings","href":"/pt-BR/v1/api-reference/instance/update-settings"}]},{"group":"Confirmações","pages":[{"title":"Pré-autorizando uma Confirmação","openapi":"POST /confirmations","href":"/pt-BR/v1/api-reference/confirmations/issue-confirmation"}]},{"group":"Webhooks","pages":[{"title":"Listar Webhooks","openapi":"GET /webhooks","href":"/pt-BR/v1/api-reference/webhooks/list-webhooks"},{"title":"Atualizar Webhook","openapi":"PATCH /webhooks/{webhook_id}","href":"/pt-BR/v1/api-reference/webhooks/update-webhook"},{"title":"Excluir Webhook","openapi":"DELETE /webhooks/{webhook_id}","href":"/pt-BR/v1/api-reference/webhooks/delete-webhook"}]},{"group":"Mensagens","pages":[{"title":"Enviando Mensagens","openapi":"POST /wa/messages","href":"/pt-BR/v1/api-reference/messages/sending"},{"title":"Cancelar Mensagem Agendada","openapi":"DELETE /wa/messages/{id}","href":"/pt-BR/v1/api-reference/messages/cancel-message"},{"title":"Marcar Mensagem como Lida","openapi":"POST /wa/messages/{id}/read","href":"/pt-BR/v1/api-reference/messages/read-message"},{"title":"Marcar Mensagens como Lidas (Lote)","openapi":"POST /wa/messages/read","href":"/pt-BR/v1/api-reference/messages/read-messages-batch"},{"title":"Listar Mensagens","openapi":"GET /wa/messages","href":"/pt-BR/v1/api-reference/messages/list-messages"}]},{"group":"Para Grupos","pages":[{"title":"Listar Grupos","openapi":"GET /wa/instances/{instance_id}/groups","href":"/pt-BR/v1/api-reference/groups/fetch-all"},{"title":"Criar um Grupo","openapi":"POST /wa/instances/{instance_id}/groups","href":"/pt-BR/v1/api-reference/groups/create"},{"title":"Atualizar um Grupo","openapi":"PATCH /wa/instances/{instance_id}/groups/{group_id}","href":"/pt-BR/v1/api-reference/groups/update-data"},{"title":"Listar Participantes","openapi":"GET /wa/instances/{instance_id}/groups/{group_id}/participants","href":"/pt-BR/v1/api-reference/groups/fetch-participants"},{"title":"Adicionar Participantes","openapi":"POST /wa/instances/{instance_id}/groups/{group_id}/participants","href":"/pt-BR/v1/api-reference/groups/add-participants"},{"title":"Remover Participantes","openapi":"DELETE /wa/instances/{instance_id}/groups/{group_id}/participants","href":"/pt-BR/v1/api-reference/groups/delete-participants"},{"title":"Rebaixar Participantes","openapi":"DELETE /wa/instances/{instance_id}/groups/{group_id}/demote-participants","href":"/pt-BR/v1/api-reference/groups/demote-participants"},{"title":"Entrar em Grupos","openapi":"POST /wa/instances/{instance_id}/groups/join","href":"/pt-BR/v1/api-reference/groups/join-group"},{"title":"Promover Participantes","openapi":"POST /wa/instances/{instance_id}/groups/{group_id}/promote-participants","href":"/pt-BR/v1/api-reference/groups/promote-participants"}]},{"group":"Utilidades","pages":[{"title":"Verificação de Número (Sem Instância)","openapi":"GET /wa/recipients/{recipient}","href":"/pt-BR/v1/api-reference/utils/check-recipient"},{"title":"Verificação de Números em Lote (Sem Instância)","openapi":"POST /wa/recipients/batch","href":"/pt-BR/v1/api-reference/utils/check-recipient-batch"},{"title":"Verificação de Número","openapi":"GET /wa/instances/{instance_id}/recipients/{recipient}","href":"/pt-BR/v1/api-reference/utils/fetch-recipient"},{"title":"Verificação de Números em Lote","openapi":"POST /wa/instances/{instance_id}/recipients/batch","href":"/pt-BR/v1/api-reference/utils/fetch-recipient-batch"},{"title":"Atualização de Presença","openapi":"PATCH /wa/instances/{instance_id}/presence","href":"/pt-BR/v1/api-reference/utils/presence-update"},{"title":"Foto de Perfil do Destinatário","openapi":"GET /wa/recipients/{recipient}/pp","href":"/pt-BR/v1/api-reference/utils/recipient-profile-picture"}]}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/pt-BR/v1/cli/introduction"}]},{"tab":"Blog","icon":"newspaper","href":"https://blog.zapsterapi.com/?utm_source=Documentation\u0026utm_medium=DropdownNavigation"}]},{"language":"en","pages":[{"title":"en","href":"/en/v1/introduction"}]}]},"basePath":"","title":"Migrando o Tipo de Conexão - Zapster API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}