⚠️ Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground. Cada número custa o preço mensal cheio (R33,90paraworkspacesemBRL,US 33.90 em USD), descontado primeiro dos créditos da sua carteira e depois do seu cartão salvo, e vira uma linha telefônica do seu workspace, ACTIVE e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com PAYMENT_FAILED.
Compra de 1 a 10 números obtidos em GET /v1/phone-lines/available. Os números são independentes: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha não desfaz os outros. Por isso a requisição responde 200 quando foi processada, com um resultado por número — um 200 não significa que você comprou alguma coisa; sempre leia results[i].ok. Um item que falhou traz code e um error bilíngue, mas nenhum status HTTP próprio:
code do item
O que aconteceu
Cobrado?
REQUEST_ALREADY_PROCESSED
Esta Idempotency-Key já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa.
Não por esta requisição.
NUMBER_UNAVAILABLE
O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais.
Não — ou estornado para a carteira.
PAYMENT_FAILED
Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída.
Não — os créditos descontados foram devolvidos.
PAYMENT_PROVIDER_ERROR
O processador do cartão não respondeu. O cartão pode ter sido cobrado.
Carteira: não. Cartão: confira a fatura.
PURCHASE_NOT_COMPLETED
Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado.
Estornado para a carteira.
SUPPLIER_UNAVAILABLE
A operadora falhou ao adquirir o número.
Estornado para a carteira.
Um estorno depois de uma cobrança sempre vai para a carteira, inclusive a parte paga com cartão.
Qualquer resposta diferente de 200 significa que nenhum número foi tentado, com uma exceção: um 500 (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita a mesma requisição com a mesma Idempotency-Key e depois liste suas linhas com GET /v1/phone-lines.
Idempotência (header obrigatório). A chave é rastreada por número, durante uma hora: a mesma chave com o mesmo número não cobra nada e responde ok: false, REQUEST_ALREADY_PROCESSED — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave nova. Uma requisição recusada por inteiro (400/403) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras.
Verificação do titular antes. O titular da conta precisa ser verificado (por /v1/phone-lines/verification ou no painel): nunca iniciada ou não concluída → 403 VERIFICATION_REQUIRED; recusada → 403 VERIFICATION_REJECTED; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada.
Permissões: com um token OAuth / MCP, só o Proprietário do workspace pode comprar (phone_lines:purchase) — caso contrário, 403 PERMISSION_DENIED.
Todo endpoint /v1/phone-lines aceita só uma chave com escopo de tenant: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe 403 NUMBER_SCOPE_NOT_ALLOWED antes de qualquer verificação de papel. Um 403 PERMISSION_DENIED / WORKSPACE_MEMBERSHIP_REQUIRED é enviado com Cache-Control: no-store.
{ "results": [ { "number": "551148637200", "ok": true, "lineId": "cmg5k2l1n0001pl8example9x" }, { "number": "551148637201", "ok": false, "code": "PAYMENT_FAILED", "error": "The payment did not go through. Add balance or check your card. | O pagamento não foi concluído. Adicione saldo ou confira seu cartão." } ]}
Esta é uma compra real. Cada número custa o preço mensal cheio, tirado primeiro dos créditos da carteira e depois do cartão salvo. Use um Idempotency-Key novo para cada compra e repita uma key só para tentar de novo a mesma compra. Veja Comprar linhas.
Obrigatório. Qualquer string de até 255 caracteres sem caracteres de controle — um UUID por compra é a escolha comum. Rastreada por número durante uma hora, restrita ao seu workspace: uma nova tentativa com a mesma chave nunca cobra duas vezes pelo mesmo número (o item responde REQUEST_ALREADY_PROCESSED). Ausente, vazia ou só com espaços em branco → 400 IDEMPOTENCY_KEY_REQUIRED; longa demais ou com caractere de controle (incluindo tab) → 400 IDEMPOTENCY_KEY_INVALID. É um header, nunca um campo do corpo.
De 1 a 10 números distintos, cada um exatamente como GET /v1/phone-lines/available o devolveu em number: dígitos E.164 sem o + — 55, um DDD de dois dígitos começando por 1–9 e depois 8 dígitos (551148637200). Números de DDDs diferentes podem ir na mesma requisição. numbers é o único campo aceito: qualquer outro é recusado com 400 UNKNOWN_FIELDS (o requestId do painel não existe aqui).
Required array length: 1 - 10 elements
Pattern: ^55[1-9][0-9][0-9]{8}$
Exemplo:
["551148637200", "551148637201"]
Resposta
Processada: um resultado por número, na ordem de envio. Leia results[i].ok — todos os itens podem ter falhado.
{ "results": [ { "number": "551148637200", "ok": true, "lineId": "cmg5k2l1n0001pl8example9x" }, { "number": "551148637201", "ok": false, "code": "PAYMENT_FAILED", "error": "The payment did not go through. Add balance or check your card. | O pagamento não foi concluído. Adicione saldo ou confira seu cartão." } ]}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Pilot Status","description":"Pilot Status — WhatsApp API \u0026 messaging infrastructure. Send and receive WhatsApp messages via REST API, webhooks, MCP server, and dashboard. Official (Meta Cloud API) and unofficial connections.","colors":{"primary":"#19E17D","light":"#2EE98C","dark":"#19E17D"},"logo":{"light":"https://mintcdn.com/iaxp/bFY4-GIf_icRI6gv/images/wordmark-light.svg?fit=max\u0026auto=format\u0026n=bFY4-GIf_icRI6gv\u0026q=85\u0026s=956be78168490eaf8ae153ff8c58b4a7","dark":"https://mintcdn.com/iaxp/OICBZy4RbSGLpCw_/images/wordmark-dark.svg?fit=max\u0026auto=format\u0026n=OICBZy4RbSGLpCw_\u0026q=85\u0026s=9ce419fd878af00cc2d3c22f36da8e23"},"favicon":"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg","api":{"playground":{"display":"interactive"}},"background":{"color":{"light":"#FCF5E9","dark":"#0B1419"}},"navbar":{"links":[{"href":"https://wa.me/5585936180633","label":"Support"}],"primary":{"type":"button","label":"Get Started Free","href":"https://pilotstatus.com.br"}},"footer":{"socials":{"x":"https://x.com/pilotstatus"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"pt-BR","href":"pt-BR/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"iaxp","hasAudioNarration":false,"actualSubdomain":"iaxp","customDomains":["docs.pilotstatus.com.br"],"gitSource":{"type":"github","owner":"oismaelash","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"1ec0cc30-3ab4-4035-9e9f-8ffb50946e0f","liveDeploymentHistoryId":"6ae4382b4d82e9245e12b590","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4382b4d82e9245e12b590"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae4382b4d82e9245e12b590","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"en","tag":"Playground","count":315},{"language":"pt-BR","tag":"Playground","count":315},{"language":"en","tag":"Endpoints","count":294},{"language":"pt-BR","tag":"Endpoints","count":294},{"language":"en","tag":"Evolution GO","count":72},{"language":"pt-BR","tag":"Evolution GO","count":72},{"language":"en","tag":"Evolution V2","count":69},{"language":"pt-BR","tag":"Evolution V2","count":69},{"language":"en","tag":"API Reference","count":62},{"language":"pt-BR","tag":"Referência da API","count":62},{"language":"en","tag":"Documentation","count":50},{"language":"pt-BR","tag":"Documentação","count":50},{"language":"en","tag":"Phone Lines","count":30},{"language":"en","tag":"Meta Cloud API","count":26},{"language":"pt-BR","tag":"Meta Cloud API","count":26},{"language":"pt-BR","tag":"Linhas telefônicas","count":22},{"language":"en","tag":"Workspace","count":21},{"language":"pt-BR","tag":"Workspace","count":21},{"language":"en","tag":"Numbers","count":18},{"language":"pt-BR","tag":"Números","count":18}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"contato@ismaelnascimento.com"}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"pt-BR/playground/phone-lines/comprar-linhas","slug":"/pt-BR/playground/phone-lines/comprar-linhas","pageMetadata":{"title":"Comprar linhas","sidebarTitle":"Comprar linhas","openapi":"openapi.pt.json POST /v1/phone-lines","description":"⚠️ **Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground.** Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado **primeiro dos créditos da sua carteira** e depois do seu **cartão salvo**, e vira uma linha telefônica do seu workspace, `ACTIVE` e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com `PAYMENT_FAILED`.\n\nCompra de **1 a 10** números obtidos em `GET /v1/phone-lines/available`. Os números são **independentes**: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha **não** desfaz os outros. Por isso a requisição responde **`200`** quando foi processada, com um resultado por número — **um `200` não significa que você comprou alguma coisa**; sempre leia `results[i].ok`. Um item que falhou traz `code` e um `error` bilíngue, mas nenhum status HTTP próprio:\n\n| `code` do item | O que aconteceu | Cobrado? |\n| --- | --- | --- |\n| `REQUEST_ALREADY_PROCESSED` | Esta `Idempotency-Key` já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. |\n| `NUMBER_UNAVAILABLE` | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. |\n| `PAYMENT_FAILED` | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. |\n| `PAYMENT_PROVIDER_ERROR` | O processador do cartão não respondeu. O cartão **pode** ter sido cobrado. | Carteira: não. Cartão: confira a fatura. |\n| `PURCHASE_NOT_COMPLETED` | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. |\n| `SUPPLIER_UNAVAILABLE` | A operadora falhou ao adquirir o número. | Estornado para a carteira. |\n\nUm estorno depois de uma cobrança sempre vai para a **carteira**, inclusive a parte paga com cartão.\n\nQualquer resposta diferente de `200` significa que **nenhum número foi tentado**, com uma exceção: um `500` (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita **a mesma requisição com a mesma `Idempotency-Key`** e depois liste suas linhas com `GET /v1/phone-lines`.\n\n**Idempotência (header obrigatório).** A chave é rastreada **por número, durante uma hora**: a mesma chave com o mesmo número não cobra nada e responde `ok: false`, `REQUEST_ALREADY_PROCESSED` — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave **nova**. Uma requisição recusada por inteiro (`400`/`403`) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras.\n\n**Verificação do titular antes.** O titular da conta precisa ser verificado (por `/v1/phone-lines/verification` ou no painel): nunca iniciada ou não concluída → `403 VERIFICATION_REQUIRED`; recusada → `403 VERIFICATION_REJECTED`; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada.\n\nPermissões: com um token OAuth / MCP, só o **Proprietário** do workspace pode comprar (`phone_lines:purchase`) — caso contrário, `403 PERMISSION_DENIED`.\n\nTodo endpoint `/v1/phone-lines` aceita só uma chave **com escopo de tenant**: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe `403 NUMBER_SCOPE_NOT_ALLOWED` antes de qualquer verificação de papel. Um `403 PERMISSION_DENIED` / `WORKSPACE_MEMBERSHIP_REQUIRED` é enviado com `Cache-Control: no-store`.\n\n**Requer uma chave com escopo de tenant.**","href":"/pt-BR/playground/phone-lines/comprar-linhas"},"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 annotation: \"annotation\",\n code: \"code\",\n math: \"math\",\n mi: \"mi\",\n mn: \"mn\",\n mo: \"mo\",\n mrow: \"mrow\",\n p: \"p\",\n semantics: \"semantics\",\n span: \"span\",\n strong: \"strong\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"⚠️ \", _jsx(_components.strong, {\n children: \"Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground.\"\n }), \" Cada número custa o preço mensal cheio (R\", _jsxs(_components.span, {\n className: \"katex\",\n children: [_jsx(_components.span, {\n className: \"katex-mathml\",\n children: _jsx(_components.math, {\n xmlns: \"http://www.w3.org/1998/Math/MathML\",\n children: _jsxs(_components.semantics, {\n children: [_jsxs(_components.mrow, {\n children: [_jsx(_components.mn, {\n children: \"33\"\n }), _jsx(_components.mo, {\n separator: \"true\",\n children: \",\"\n }), _jsx(_components.mn, {\n children: \"90\"\n }), _jsx(_components.mi, {\n children: \"p\"\n }), _jsx(_components.mi, {\n children: \"a\"\n }), _jsx(_components.mi, {\n children: \"r\"\n }), _jsx(_components.mi, {\n children: \"a\"\n }), _jsx(_components.mi, {\n children: \"w\"\n }), _jsx(_components.mi, {\n children: \"o\"\n }), _jsx(_components.mi, {\n children: \"r\"\n }), _jsx(_components.mi, {\n children: \"k\"\n }), _jsx(_components.mi, {\n children: \"s\"\n }), _jsx(_components.mi, {\n children: \"p\"\n }), _jsx(_components.mi, {\n children: \"a\"\n }), _jsx(_components.mi, {\n children: \"c\"\n }), _jsx(_components.mi, {\n children: \"e\"\n }), _jsx(_components.mi, {\n children: \"s\"\n }), _jsx(_components.mi, {\n children: \"e\"\n }), _jsx(_components.mi, {\n children: \"m\"\n }), _jsx(_components.mi, {\n children: \"B\"\n }), _jsx(_components.mi, {\n children: \"R\"\n }), _jsx(_components.mi, {\n children: \"L\"\n }), _jsx(_components.mo, {\n separator: \"true\",\n children: \",\"\n }), _jsx(_components.mi, {\n children: \"U\"\n }), _jsx(_components.mi, {\n children: \"S\"\n })]\n }), _jsx(_components.annotation, {\n encoding: \"application/x-tex\",\n children: \" 33,90 para workspaces em BRL, US\"\n })]\n })\n })\n }), _jsx(_components.span, {\n className: \"katex-html\",\n \"aria-hidden\": \"true\",\n children: _jsxs(_components.span, {\n className: \"base\",\n children: [_jsx(_components.span, {\n className: \"strut\",\n style: {\n height: \"0.8889em\",\n verticalAlign: \"-0.1944em\"\n }\n }), _jsx(_components.span, {\n className: \"mord\",\n children: \"33\"\n }), _jsx(_components.span, {\n className: \"mpunct\",\n children: \",\"\n }), _jsx(_components.span, {\n className: \"mspace\",\n style: {\n marginRight: \"0.1667em\"\n }\n }), _jsx(_components.span, {\n className: \"mord\",\n children: \"90\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"p\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"a\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0278em\"\n },\n children: \"r\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"a\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0269em\"\n },\n children: \"w\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0278em\"\n },\n children: \"or\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0315em\"\n },\n children: \"k\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"s\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"p\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"a\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"cese\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"m\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0502em\"\n },\n children: \"B\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0077em\"\n },\n children: \"R\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n children: \"L\"\n }), _jsx(_components.span, {\n className: \"mpunct\",\n children: \",\"\n }), _jsx(_components.span, {\n className: \"mspace\",\n style: {\n marginRight: \"0.1667em\"\n }\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.109em\"\n },\n children: \"U\"\n }), _jsx(_components.span, {\n className: \"mord mathnormal\",\n style: {\n marginRight: \"0.0576em\"\n },\n children: \"S\"\n })]\n })\n })]\n }), \" 33.90 em USD), descontado \", _jsx(_components.strong, {\n children: \"primeiro dos créditos da sua carteira\"\n }), \" e depois do seu \", _jsx(_components.strong, {\n children: \"cartão salvo\"\n }), \", e vira uma linha telefônica do seu workspace, \", _jsx(_components.code, {\n children: \"ACTIVE\"\n }), \" e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com \", _jsx(_components.code, {\n children: \"PAYMENT_FAILED\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Compra de \", _jsx(_components.strong, {\n children: \"1 a 10\"\n }), \" números obtidos em \", _jsx(_components.code, {\n children: \"GET /v1/phone-lines/available\"\n }), \". Os números são \", _jsx(_components.strong, {\n children: \"independentes\"\n }), \": cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha \", _jsx(_components.strong, {\n children: \"não\"\n }), \" desfaz os outros. Por isso a requisição responde \", _jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"200\"\n })\n }), \" quando foi processada, com um resultado por número — \", _jsxs(_components.strong, {\n children: [\"um \", _jsx(_components.code, {\n children: \"200\"\n }), \" não significa que você comprou alguma coisa\"]\n }), \"; sempre leia \", _jsx(_components.code, {\n children: \"results[i].ok\"\n }), \". Um item que falhou traz \", _jsx(_components.code, {\n children: \"code\"\n }), \" e um \", _jsx(_components.code, {\n children: \"error\"\n }), \" bilíngue, mas nenhum status HTTP próprio:\"]\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsxs(_components.th, {\n children: [_jsx(_components.code, {\n children: \"code\"\n }), \" do item\"]\n }), _jsx(_components.th, {\n children: \"O que aconteceu\"\n }), _jsx(_components.th, {\n children: \"Cobrado?\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"REQUEST_ALREADY_PROCESSED\"\n })\n }), _jsxs(_components.td, {\n children: [\"Esta \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa.\"]\n }), _jsx(_components.td, {\n children: \"Não por esta requisição.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"NUMBER_UNAVAILABLE\"\n })\n }), _jsx(_components.td, {\n children: \"O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais.\"\n }), _jsx(_components.td, {\n children: \"Não — ou estornado para a carteira.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"PAYMENT_FAILED\"\n })\n }), _jsx(_components.td, {\n children: \"Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída.\"\n }), _jsx(_components.td, {\n children: \"Não — os créditos descontados foram devolvidos.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"PAYMENT_PROVIDER_ERROR\"\n })\n }), _jsxs(_components.td, {\n children: [\"O processador do cartão não respondeu. O cartão \", _jsx(_components.strong, {\n children: \"pode\"\n }), \" ter sido cobrado.\"]\n }), _jsx(_components.td, {\n children: \"Carteira: não. Cartão: confira a fatura.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"PURCHASE_NOT_COMPLETED\"\n })\n }), _jsx(_components.td, {\n children: \"Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado.\"\n }), _jsx(_components.td, {\n children: \"Estornado para a carteira.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"SUPPLIER_UNAVAILABLE\"\n })\n }), _jsx(_components.td, {\n children: \"A operadora falhou ao adquirir o número.\"\n }), _jsx(_components.td, {\n children: \"Estornado para a carteira.\"\n })]\n })]\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Um estorno depois de uma cobrança sempre vai para a \", _jsx(_components.strong, {\n children: \"carteira\"\n }), \", inclusive a parte paga com cartão.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Qualquer resposta diferente de \", _jsx(_components.code, {\n children: \"200\"\n }), \" significa que \", _jsx(_components.strong, {\n children: \"nenhum número foi tentado\"\n }), \", com uma exceção: um \", _jsx(_components.code, {\n children: \"500\"\n }), \" (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita \", _jsxs(_components.strong, {\n children: [\"a mesma requisição com a mesma \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n })]\n }), \" e depois liste suas linhas com \", _jsx(_components.code, {\n children: \"GET /v1/phone-lines\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Idempotência (header obrigatório).\"\n }), \" A chave é rastreada \", _jsx(_components.strong, {\n children: \"por número, durante uma hora\"\n }), \": a mesma chave com o mesmo número não cobra nada e responde \", _jsx(_components.code, {\n children: \"ok: false\"\n }), \", \", _jsx(_components.code, {\n children: \"REQUEST_ALREADY_PROCESSED\"\n }), \" — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave \", _jsx(_components.strong, {\n children: \"nova\"\n }), \". Uma requisição recusada por inteiro (\", _jsx(_components.code, {\n children: \"400\"\n }), \"/\", _jsx(_components.code, {\n children: \"403\"\n }), \") não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Verificação do titular antes.\"\n }), \" O titular da conta precisa ser verificado (por \", _jsx(_components.code, {\n children: \"/v1/phone-lines/verification\"\n }), \" ou no painel): nunca iniciada ou não concluída → \", _jsx(_components.code, {\n children: \"403 VERIFICATION_REQUIRED\"\n }), \"; recusada → \", _jsx(_components.code, {\n children: \"403 VERIFICATION_REJECTED\"\n }), \"; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Permissões: com um token OAuth / MCP, só o \", _jsx(_components.strong, {\n children: \"Proprietário\"\n }), \" do workspace pode comprar (\", _jsx(_components.code, {\n children: \"phone_lines:purchase\"\n }), \") — caso contrário, \", _jsx(_components.code, {\n children: \"403 PERMISSION_DENIED\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Todo endpoint \", _jsx(_components.code, {\n children: \"/v1/phone-lines\"\n }), \" aceita só uma chave \", _jsx(_components.strong, {\n children: \"com escopo de tenant\"\n }), \": a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe \", _jsx(_components.code, {\n children: \"403 NUMBER_SCOPE_NOT_ALLOWED\"\n }), \" antes de qualquer verificação de papel. Um \", _jsx(_components.code, {\n children: \"403 PERMISSION_DENIED\"\n }), \" / \", _jsx(_components.code, {\n children: \"WORKSPACE_MEMBERSHIP_REQUIRED\"\n }), \" é enviado com \", _jsx(_components.code, {\n children: \"Cache-Control: no-store\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Requer uma chave com escopo de tenant.\"\n })\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Esta é uma compra real.`}),` Cada número custa o preço mensal cheio, tirado primeiro dos créditos da carteira e depois do cartão salvo. Use um `,_jsx(_components.code,{children:`Idempotency-Key`}),` novo para cada compra e repita uma key só para tentar de novo a mesma compra. Veja `,_jsx(_components.a,{href:`/pt-BR/api/phone-lines/purchase`,children:`Comprar linhas`}),`.`]})})}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":"Comprar linhas","sidebarTitle":"Comprar linhas","openapi":"openapi.pt.json POST /v1/phone-lines","description":"⚠️ **Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground.** Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado **primeiro dos créditos da sua carteira** e depois do seu **cartão salvo**, e vira uma linha telefônica do seu workspace, `ACTIVE` e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com `PAYMENT_FAILED`.\n\nCompra de **1 a 10** números obtidos em `GET /v1/phone-lines/available`. Os números são **independentes**: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha **não** desfaz os outros. Por isso a requisição responde **`200`** quando foi processada, com um resultado por número — **um `200` não significa que você comprou alguma coisa**; sempre leia `results[i].ok`. Um item que falhou traz `code` e um `error` bilíngue, mas nenhum status HTTP próprio:\n\n| `code` do item | O que aconteceu | Cobrado? |\n| --- | --- | --- |\n| `REQUEST_ALREADY_PROCESSED` | Esta `Idempotency-Key` já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. |\n| `NUMBER_UNAVAILABLE` | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. |\n| `PAYMENT_FAILED` | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. |\n| `PAYMENT_PROVIDER_ERROR` | O processador do cartão não respondeu. O cartão **pode** ter sido cobrado. | Carteira: não. Cartão: confira a fatura. |\n| `PURCHASE_NOT_COMPLETED` | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. |\n| `SUPPLIER_UNAVAILABLE` | A operadora falhou ao adquirir o número. | Estornado para a carteira. |\n\nUm estorno depois de uma cobrança sempre vai para a **carteira**, inclusive a parte paga com cartão.\n\nQualquer resposta diferente de `200` significa que **nenhum número foi tentado**, com uma exceção: um `500` (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita **a mesma requisição com a mesma `Idempotency-Key`** e depois liste suas linhas com `GET /v1/phone-lines`.\n\n**Idempotência (header obrigatório).** A chave é rastreada **por número, durante uma hora**: a mesma chave com o mesmo número não cobra nada e responde `ok: false`, `REQUEST_ALREADY_PROCESSED` — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave **nova**. Uma requisição recusada por inteiro (`400`/`403`) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras.\n\n**Verificação do titular antes.** O titular da conta precisa ser verificado (por `/v1/phone-lines/verification` ou no painel): nunca iniciada ou não concluída → `403 VERIFICATION_REQUIRED`; recusada → `403 VERIFICATION_REJECTED`; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada.\n\nPermissões: com um token OAuth / MCP, só o **Proprietário** do workspace pode comprar (`phone_lines:purchase`) — caso contrário, `403 PERMISSION_DENIED`.\n\nTodo endpoint `/v1/phone-lines` aceita só uma chave **com escopo de tenant**: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe `403 NUMBER_SCOPE_NOT_ALLOWED` antes de qualquer verificação de papel. Um `403 PERMISSION_DENIED` / `WORKSPACE_MEMBERSHIP_REQUIRED` é enviado com `Cache-Control: no-store`.\n\n**Requer uma chave com escopo de tenant.**","href":"/pt-BR/playground/phone-lines/comprar-linhas"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Comprar linhas telefônicas","description":"⚠️ **Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground.** Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado **primeiro dos créditos da sua carteira** e depois do seu **cartão salvo**, e vira uma linha telefônica do seu workspace, `ACTIVE` e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com `PAYMENT_FAILED`.\n\nCompra de **1 a 10** números obtidos em `GET /v1/phone-lines/available`. Os números são **independentes**: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha **não** desfaz os outros. Por isso a requisição responde **`200`** quando foi processada, com um resultado por número — **um `200` não significa que você comprou alguma coisa**; sempre leia `results[i].ok`. Um item que falhou traz `code` e um `error` bilíngue, mas nenhum status HTTP próprio:\n\n| `code` do item | O que aconteceu | Cobrado? |\n| --- | --- | --- |\n| `REQUEST_ALREADY_PROCESSED` | Esta `Idempotency-Key` já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. |\n| `NUMBER_UNAVAILABLE` | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. |\n| `PAYMENT_FAILED` | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. |\n| `PAYMENT_PROVIDER_ERROR` | O processador do cartão não respondeu. O cartão **pode** ter sido cobrado. | Carteira: não. Cartão: confira a fatura. |\n| `PURCHASE_NOT_COMPLETED` | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. |\n| `SUPPLIER_UNAVAILABLE` | A operadora falhou ao adquirir o número. | Estornado para a carteira. |\n\nUm estorno depois de uma cobrança sempre vai para a **carteira**, inclusive a parte paga com cartão.\n\nQualquer resposta diferente de `200` significa que **nenhum número foi tentado**, com uma exceção: um `500` (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita **a mesma requisição com a mesma `Idempotency-Key`** e depois liste suas linhas com `GET /v1/phone-lines`.\n\n**Idempotência (header obrigatório).** A chave é rastreada **por número, durante uma hora**: a mesma chave com o mesmo número não cobra nada e responde `ok: false`, `REQUEST_ALREADY_PROCESSED` — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave **nova**. Uma requisição recusada por inteiro (`400`/`403`) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras.\n\n**Verificação do titular antes.** O titular da conta precisa ser verificado (por `/v1/phone-lines/verification` ou no painel): nunca iniciada ou não concluída → `403 VERIFICATION_REQUIRED`; recusada → `403 VERIFICATION_REJECTED`; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada.\n\nPermissões: com um token OAuth / MCP, só o **Proprietário** do workspace pode comprar (`phone_lines:purchase`) — caso contrário, `403 PERMISSION_DENIED`.\n\nTodo endpoint `/v1/phone-lines` aceita só uma chave **com escopo de tenant**: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe `403 NUMBER_SCOPE_NOT_ALLOWED` antes de qualquer verificação de papel. Um `403 PERMISSION_DENIED` / `WORKSPACE_MEMBERSHIP_REQUIRED` é enviado com `Cache-Control: no-store`.\n\n**Requer uma chave com escopo de tenant.**","tags":["Phone Lines"],"operationId":"post_phone_lines","parameters":["ea5505a0-0d09-40c7-8997-709c1c5a2e14"],"requestBody":"d9795b7d-11d9-4316-a351-a9f41e4927d4","responses":{"200":"310cae7d-a400-442c-8fb7-562ddec277f9","400":"3a57f7e3-252b-41d7-ba07-e35355ceaeaa","401":"b996d1e6-8a63-4e5c-a72a-5b627a188f59","403":"81645027-e0b2-45f1-818e-acd36a23f96f","404":"a7c9b9db-09d5-4ff8-896b-e48642886ad2","500":"56cf9d44-94d9-4669-a27b-60f5a75f7750","503":"d62d5fa2-b40e-4731-9f99-a6a77bb79b8f"},"method":"post","type":"path","servers":["1ba6474d-0921-4218-9fb0-3c32c889d4fc"],"security":["a31d1d74-461a-4e47-a7cd-aa1b6a90c248","40d1c058-9774-4a41-b5de-da67e113ac1e"],"path":"/v1/phone-lines","baseUrlOptions":["https://pilotstatus.com.br"],"title":"Comprar linhas telefônicas","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ea5505a0-0d09-40c7-8997-709c1c5a2e14":{"name":"Idempotency-Key","in":"header","required":true,"description":"**Obrigatório.** Qualquer string de até **255 caracteres** sem caracteres de controle — um UUID por compra é a escolha comum. Rastreada por número durante uma hora, restrita ao seu workspace: uma nova tentativa com a mesma chave nunca cobra duas vezes pelo mesmo número (o item responde `REQUEST_ALREADY_PROCESSED`). Ausente, vazia ou só com espaços em branco → **400 `IDEMPOTENCY_KEY_REQUIRED`**; longa demais ou com caractere de controle (incluindo tab) → **400 `IDEMPOTENCY_KEY_INVALID`**. É um header, nunca um campo do corpo.","schema":{"type":"string","minLength":1,"maxLength":255,"isRequired":true,"description":"**Obrigatório.** Qualquer string de até **255 caracteres** sem caracteres de controle — um UUID por compra é a escolha comum. Rastreada por número durante uma hora, restrita ao seu workspace: uma nova tentativa com a mesma chave nunca cobra duas vezes pelo mesmo número (o item responde `REQUEST_ALREADY_PROCESSED`). Ausente, vazia ou só com espaços em branco → **400 `IDEMPOTENCY_KEY_REQUIRED`**; longa demais ou com caractere de controle (incluindo tab) → **400 `IDEMPOTENCY_KEY_INVALID`**. É um header, nunca um campo do corpo.","uniqueKey":"","typeLabel":"string"},"example":"6f1c2a0e-7b1d-4c2e-9a5f-3d8e1b2c4a70"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["numbers"],"additionalProperties":false,"properties":{"numbers":{"type":"array","minItems":1,"maxItems":10,"uniqueItems":true,"items":{"type":"string","pattern":"^55[1-9][0-9][0-9]{8}$","uniqueKey":"numbers.items.[INDEX]","typeLabel":"string"},"description":"De 1 a 10 números distintos, cada um exatamente como `GET /v1/phone-lines/available` o devolveu em `number`: dígitos E.164 **sem** o `+` — `55`, um DDD de dois dígitos começando por 1–9 e depois 8 dígitos (`551148637200`). Números de DDDs diferentes podem ir na mesma requisição. `numbers` é o **único** campo aceito: qualquer outro é recusado com `400 UNKNOWN_FIELDS` (o `requestId` do painel não existe aqui).","example":["551148637200","551148637201"],"isRequired":true,"uniqueKey":"numbers","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"numbers":["551148637200","551148637201"]},"examples":{"Example":{"title":"Example","value":{"numbers":["551148637200","551148637201"]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"310cae7d-a400-442c-8fb7-562ddec277f9":{"description":"Processada: um resultado por número, na ordem de envio. Leia `results[i].ok` — todos os itens podem ter falhado.","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","description":"Uma entrada por número, na ordem de envio.","items":{"type":"object","required":["number","ok"],"properties":{"number":{"type":"string","description":"O número, como você o enviou.","example":"551148637200","isRequired":true,"uniqueKey":"results.items.[INDEX].number","typeLabel":"string"},"ok":{"type":"boolean","description":"`true` quando a linha foi comprada por esta requisição.","example":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].ok","typeLabel":"boolean"},"lineId":{"type":"string","description":"Só quando `ok: true`. O `id` da nova linha, para `GET /v1/phone-lines/{id}` e para os endpoints de código de ativação.","example":"cmg5k2l1n0001pl8example9x","uniqueKey":"results.items.[INDEX].lineId","typeLabel":"string"},"code":{"type":"string","description":"Só quando `ok: false`. Por que este número falhou: `REQUEST_ALREADY_PROCESSED`, `NUMBER_UNAVAILABLE`, `PAYMENT_FAILED`, `PAYMENT_PROVIDER_ERROR`, `PURCHASE_NOT_COMPLETED` ou `SUPPLIER_UNAVAILABLE`.","enum":["REQUEST_ALREADY_PROCESSED","NUMBER_UNAVAILABLE","PAYMENT_FAILED","PAYMENT_PROVIDER_ERROR","PURCHASE_NOT_COMPLETED","SUPPLIER_UNAVAILABLE"],"example":"PAYMENT_FAILED","uniqueKey":"results.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"error":{"type":"string","description":"Só quando `ok: false`. Mensagem bilíngue (`English | Portuguese`) para esse `code`.","example":"The payment did not go through. Add balance or check your card. | O pagamento não foi concluído. Adicione saldo ou confira seu cartão.","uniqueKey":"results.items.[INDEX].error","typeLabel":"string"}},"uniqueKey":"results.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"mixed":{"title":"mixed","value":{"results":[{"number":"551148637200","ok":true,"lineId":"cmg5k2l1n0001pl8example9x"},{"number":"551148637201","ok":false,"code":"PAYMENT_FAILED","error":"The payment did not go through. Add balance or check your card. | O pagamento não foi concluído. Adicione saldo ou confira seu cartão."}]}},"replay":{"title":"replay","value":{"results":[{"number":"551148637200","ok":false,"code":"REQUEST_ALREADY_PROCESSED","error":"This request was already processed. Check your lines, or send a new request id (Idempotency-Key in the API) to try again. | Este pedido já foi processado. Confira suas linhas, ou envie um novo id de pedido (Idempotency-Key na API) para tentar de novo."},{"number":"551148637201","ok":false,"code":"REQUEST_ALREADY_PROCESSED","error":"This request was already processed. Check your lines, or send a new request id (Idempotency-Key in the API) to try again. | Este pedido já foi processado. Confira suas linhas, ou envie um novo id de pedido (Idempotency-Key na API) para tentar de novo."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"3a57f7e3-252b-41d7-ba07-e35355ceaeaa":{"description":"Requisição recusada por inteiro — nada foi tentado nem cobrado. As mensagens de validação são bilíngues e podem trazer `details` (`maxLength`, `unknownFields`, `invalidNumbers`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"idempotencyKeyRequired":{"title":"idempotencyKeyRequired","value":{"error":"Send an Idempotency-Key header (for example a UUID) so a retry cannot buy twice. | Envie o header Idempotency-Key (por exemplo um UUID) para que uma nova tentativa não compre duas vezes.","code":"IDEMPOTENCY_KEY_REQUIRED"}},"idempotencyKeyInvalid":{"title":"idempotencyKeyInvalid","value":{"error":"Idempotency-Key must have at most 255 characters and no control characters. | Idempotency-Key deve ter no máximo 255 caracteres e nenhum caractere de controle.","code":"IDEMPOTENCY_KEY_INVALID","details":{"maxLength":255}}},"invalidBody":{"title":"invalidBody","value":{"error":"Send a JSON object: { \"numbers\": [\"551148637200\"] }. | Envie um objeto JSON: { \"numbers\": [\"551148637200\"] }.","code":"INVALID_BODY"}},"unknownFields":{"title":"unknownFields","value":{"error":"Unknown field(s): requestId. This endpoint accepts only \"numbers\"; the idempotency key goes in the Idempotency-Key header. | Campo(s) desconhecido(s): requestId. Este endpoint aceita apenas \"numbers\"; a chave de idempotência vai no header Idempotency-Key.","code":"UNKNOWN_FIELDS","details":{"unknownFields":["requestId"]}}},"numbersNotArray":{"title":"numbersNotArray","value":{"error":"\"numbers\" must be an array of strings. | \"numbers\" deve ser uma lista de textos.","code":"INVALID_NUMBERS"}},"invalidNumbers":{"title":"invalidNumbers","value":{"error":"Not a number from GET /v1/phone-lines/available: +551148637201, 11948637202. Use E.164 digits without \"+\", e.g. 551148637200. | Não é um número de GET /v1/phone-lines/available: +551148637201, 11948637202. Use os dígitos E.164 sem \"+\", ex.: 551148637200.","code":"INVALID_NUMBERS","details":{"invalidNumbers":["+551148637201","11948637202"]}}},"invalidSelection":{"title":"invalidSelection","value":{"error":"Pick between 1 and 10 numbers from the search. | Escolha entre 1 e 10 números da busca.","code":"INVALID_SELECTION"}}},"exampleType":"examples"}},"exampleType":"examples"},"b996d1e6-8a63-4e5c-a72a-5b627a188f59":{"description":"Credencial ausente ou inválida (`x-api-key`, `x-api-key-id` ou `Authorization: Bearer`). O corpo traz só `error`, sem `code`.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"missing":{"title":"missing","value":{"error":"Missing x-api-key, x-api-key-id or Authorization Bearer token"}},"invalid":{"title":"invalid","value":{"error":"Invalid API key"}}},"exampleType":"examples"}},"exampleType":"examples"},"81645027-e0b2-45f1-818e-acd36a23f96f":{"description":"Recusada por inteiro, nada tentado: escopo da chave, papel, workspace arquivado, ou titular da conta não verificado / recusado. `TENANT_REQUIRED`: credencial sem workspace","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"numberScope":{"title":"numberScope","value":{"error":"This endpoint requires a tenant-scoped API key","code":"NUMBER_SCOPE_NOT_ALLOWED"}},"permissionDenied":{"title":"permissionDenied","value":{"error":"Your workspace role does not allow this action (phone_lines:purchase).","code":"PERMISSION_DENIED"}},"notMember":{"title":"notMember","value":{"error":"The user behind this token is not an active member of this workspace.","code":"WORKSPACE_MEMBERSHIP_REQUIRED"}},"archived":{"title":"archived","value":{"error":"This workspace has been archived and its API is closed. | Este workspace foi arquivado e sua API está encerrada.","code":"WORKSPACE_ARCHIVED"}},"verificationRequired":{"title":"verificationRequired","value":{"error":"Verify the account holder before buying a line. | Verifique o titular da conta antes de comprar uma linha.","code":"VERIFICATION_REQUIRED"}},"verificationRejected":{"title":"verificationRejected","value":{"error":"The account holder verification was rejected. | A verificação do titular foi recusada.","code":"VERIFICATION_REJECTED"}},"tenantRequired":{"title":"tenantRequired","value":{"error":"This credential is not bound to a workspace.","code":"TENANT_REQUIRED"}}},"exampleType":"examples"}},"exampleType":"examples"},"a7c9b9db-09d5-4ff8-896b-e48642886ad2":{"description":"Foi enviado um header `x-whatsapp-number-id` que não indica nenhum número de WhatsApp da sua conta (`NUMBER_NOT_FOUND`). Este endpoint não precisa desse header — remova-o.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"x-whatsapp-number-id does not name a WhatsApp number of this account | x-whatsapp-number-id não indica um número de WhatsApp desta conta","code":"NUMBER_NOT_FOUND"},"examples":{"Example":{"title":"Example","value":{"error":"x-whatsapp-number-id does not name a WhatsApp number of this account | x-whatsapp-number-id não indica um número de WhatsApp desta conta","code":"NUMBER_NOT_FOUND"}}},"exampleType":"examples"}},"exampleType":"examples"},"56cf9d44-94d9-4669-a27b-60f5a75f7750":{"description":"Falha inesperada (`INTERNAL_ERROR`). **Não prova que nada aconteceu**: números anteriores podem já ter sido cobrados e comprados. Repita a mesma requisição com a **mesma** `Idempotency-Key` e depois liste suas linhas.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Unexpected error. | Erro inesperado.","code":"INTERNAL_ERROR"},"examples":{"Example":{"title":"Example","value":{"error":"Unexpected error. | Erro inesperado.","code":"INTERNAL_ERROR"}}},"exampleType":"examples"}},"exampleType":"examples"},"d62d5fa2-b40e-4731-9f99-a6a77bb79b8f":{"description":"A integração com a operadora está indisponível antes de qualquer número ser tentado (`SUPPLIER_UNAVAILABLE`). Nada foi cobrado. (Falhas da operadora durante uma compra voltam por item, dentro de um `200`.)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Phone lines are temporarily unavailable. Try again in a few minutes. | As linhas estão temporariamente indisponíveis. Tente de novo em alguns minutos.","code":"SUPPLIER_UNAVAILABLE"},"examples":{"Example":{"title":"Example","value":{"error":"Phone lines are temporarily unavailable. Try again in a few minutes. | As linhas estão temporariamente indisponíveis. Tente de novo em alguns minutos.","code":"SUPPLIER_UNAVAILABLE"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"a31d1d74-461a-4e47-a7cd-aa1b6a90c248":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Sua chave de API ps_","scopes":[],"schemeName":"apiKey"}},"40d1c058-9774-4a41-b5de-da67e113ac1e":{"apiKeyId":{"type":"apiKey","in":"header","name":"x-api-key-id","description":"Id da chave de API (alternativa ao x-api-key)","scopes":[],"schemeName":"apiKeyId"}}},"servers":{"1ba6474d-0921-4218-9fb0-3c32c889d4fc":{"url":"https://pilotstatus.com.br"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Sua chave de API ps_","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","description":"Sua chave de API ps_","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key-id","description":"Id da chave de API (alternativa ao x-api-key)","scopes":[],"schemeName":"apiKeyId"},"schema":{"title":"x-api-key-id","type":"string","description":"Id da chave de API (alternativa ao x-api-key)","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyId","name":"x-api-key-id"}],"title":"apiKeyId"}]},"originalFileLocation":"openapi.pt.json"},"subdomain":"iaxp","siteName":"Pilot Status","title":"Comprar linhas - Pilot Status","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/introduction","matchLevel":4},"pt-BR":{"href":"/pt-BR/playground/phone-lines/comprar-linhas","matchLevel":0}}},"lastModified":"2026-10-27T12:13:15.523Z","originalFileLocation":"pt-BR/playground/phone-lines/comprar-linhas.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=\"⚠️ Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground. Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado primeiro dos créditos da sua carteira e depois do seu cartão salvo, e vira uma linha telefônica do seu workspace, ACTIVE e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com PAYMENT_FAILED. Compra de 1 a 10 números obtidos em GET /v1/phone-lines/available. Os números são independentes: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha não desfaz os outros. Por isso a requisição responde 200 quando foi processada, com um resultado por número — um 200 não significa que você comprou alguma coisa; sempre leia results[i].ok. Um item que falhou traz code e um error bilíngue, mas nenhum status HTTP próprio: | code do item | O que aconteceu | Cobrado? | | --- | --- | --- | | REQUEST_ALREADY_PROCESSED | Esta Idempotency-Key já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. | | NUMBER_UNAVAILABLE | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. | | PAYMENT_FAILED | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. | | PAYMENT_PROVIDER_ERROR | O processador do cartão não respondeu. O cartão pode ter sido cobrado. | Carteira: não. Cartão: confira a fatura. | | PURCHASE_NOT_COMPLETED | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. | | SUPPLIER_UNAVAILABLE | A operadora falhou ao adquirir o número. | Estornado para a carteira. | Um estorno depois de uma cobrança sempre vai para a carteira, inclusive a parte paga com cartão. Qualquer resposta diferente de 200 significa que nenhum número foi tentado, com uma exceção: um 500 (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita a mesma requisição com a mesma Idempotency-Key e depois liste suas linhas com GET /v1/phone-lines. Idempotência (header obrigatório). A chave é rastreada por número, durante uma hora: a mesma chave com o mesmo número não cobra nada e responde ok: false, REQUEST_ALREADY_PROCESSED — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave nova. Uma requisição recusada por inteiro (400/403) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras. Verificação do titular antes. O titular da conta precisa ser verificado (por /v1/phone-lines/verification ou no painel): nunca iniciada ou não concluída → 403 VERIFICATION_REQUIRED; recusada → 403 VERIFICATION_REJECTED; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada. Permissões: com um token OAuth / MCP, só o Proprietário do workspace pode comprar (phone_lines:purchase) — caso contrário, 403 PERMISSION_DENIED. Todo endpoint /v1/phone-lines aceita só uma chave com escopo de tenant: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe 403 NUMBER_SCOPE_NOT_ALLOWED antes de qualquer verificação de papel. Um 403 PERMISSION_DENIED / WORKSPACE_MEMBERSHIP_REQUIRED é enviado com Cache-Control: no-store. Requer uma chave com escopo de tenant.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Pilot Status\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/svg+xml\" sizes=\"180x180\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003cmeta data-mint-head property=\"og:title\" content=\"Comprar linhas - Pilot Status\">\u003cmeta data-mint-head property=\"og:description\" content=\"⚠️ Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground. Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado primeiro dos créditos da sua carteira e depois do seu cartão salvo, e vira uma linha telefônica do seu workspace, ACTIVE e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com PAYMENT_FAILED. Compra de 1 a 10 números obtidos em GET /v1/phone-lines/available. Os números são independentes: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha não desfaz os outros. Por isso a requisição responde 200 quando foi processada, com um resultado por número — um 200 não significa que você comprou alguma coisa; sempre leia results[i].ok. Um item que falhou traz code e um error bilíngue, mas nenhum status HTTP próprio: | code do item | O que aconteceu | Cobrado? | | --- | --- | --- | | REQUEST_ALREADY_PROCESSED | Esta Idempotency-Key já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. | | NUMBER_UNAVAILABLE | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. | | PAYMENT_FAILED | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. | | PAYMENT_PROVIDER_ERROR | O processador do cartão não respondeu. O cartão pode ter sido cobrado. | Carteira: não. Cartão: confira a fatura. | | PURCHASE_NOT_COMPLETED | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. | | SUPPLIER_UNAVAILABLE | A operadora falhou ao adquirir o número. | Estornado para a carteira. | Um estorno depois de uma cobrança sempre vai para a carteira, inclusive a parte paga com cartão. Qualquer resposta diferente de 200 significa que nenhum número foi tentado, com uma exceção: um 500 (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita a mesma requisição com a mesma Idempotency-Key e depois liste suas linhas com GET /v1/phone-lines. Idempotência (header obrigatório). A chave é rastreada por número, durante uma hora: a mesma chave com o mesmo número não cobra nada e responde ok: false, REQUEST_ALREADY_PROCESSED — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave nova. Uma requisição recusada por inteiro (400/403) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras. Verificação do titular antes. O titular da conta precisa ser verificado (por /v1/phone-lines/verification ou no painel): nunca iniciada ou não concluída → 403 VERIFICATION_REQUIRED; recusada → 403 VERIFICATION_REJECTED; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada. Permissões: com um token OAuth / MCP, só o Proprietário do workspace pode comprar (phone_lines:purchase) — caso contrário, 403 PERMISSION_DENIED. Todo endpoint /v1/phone-lines aceita só uma chave com escopo de tenant: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe 403 NUMBER_SCOPE_NOT_ALLOWED antes de qualquer verificação de papel. Um 403 PERMISSION_DENIED / WORKSPACE_MEMBERSHIP_REQUIRED é enviado com Cache-Control: no-store. Requer uma chave com escopo de tenant.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Pilot Status\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://iaxp.mintlify.app/_mintlify/api/og/v2?division=Linhas+telef%C3%B4nicas\u0026amp;title=Comprar+linhas\u0026amp;description=%E2%9A%A0%EF%B8%8F+**Efeito+colateral+real%3A+esta+chamada+cobra+dinheiro+%E2%80%94+N%C3%83O+%C3%A9+uma+simula%C3%A7%C3%A3o%2C+inclusive+pelo+playground.**+Cada+n%C3%BAmero+custa+o+pre%C3%A7o+mensal+cheio+%28R%24+33%2C90+par\u0026amp;theme=35ef0efd94d4b104966e83c5\u0026amp;signature=99a04e778dadb68cce1c7cee1d667636c9a4802eb020208d9326c23d331a2e8f\">\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=\"Comprar linhas - Pilot Status\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"⚠️ Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground. Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado primeiro dos créditos da sua carteira e depois do seu cartão salvo, e vira uma linha telefônica do seu workspace, ACTIVE e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com PAYMENT_FAILED. Compra de 1 a 10 números obtidos em GET /v1/phone-lines/available. Os números são independentes: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha não desfaz os outros. Por isso a requisição responde 200 quando foi processada, com um resultado por número — um 200 não significa que você comprou alguma coisa; sempre leia results[i].ok. Um item que falhou traz code e um error bilíngue, mas nenhum status HTTP próprio: | code do item | O que aconteceu | Cobrado? | | --- | --- | --- | | REQUEST_ALREADY_PROCESSED | Esta Idempotency-Key já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. | | NUMBER_UNAVAILABLE | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. | | PAYMENT_FAILED | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. | | PAYMENT_PROVIDER_ERROR | O processador do cartão não respondeu. O cartão pode ter sido cobrado. | Carteira: não. Cartão: confira a fatura. | | PURCHASE_NOT_COMPLETED | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. | | SUPPLIER_UNAVAILABLE | A operadora falhou ao adquirir o número. | Estornado para a carteira. | Um estorno depois de uma cobrança sempre vai para a carteira, inclusive a parte paga com cartão. Qualquer resposta diferente de 200 significa que nenhum número foi tentado, com uma exceção: um 500 (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita a mesma requisição com a mesma Idempotency-Key e depois liste suas linhas com GET /v1/phone-lines. Idempotência (header obrigatório). A chave é rastreada por número, durante uma hora: a mesma chave com o mesmo número não cobra nada e responde ok: false, REQUEST_ALREADY_PROCESSED — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave nova. Uma requisição recusada por inteiro (400/403) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras. Verificação do titular antes. O titular da conta precisa ser verificado (por /v1/phone-lines/verification ou no painel): nunca iniciada ou não concluída → 403 VERIFICATION_REQUIRED; recusada → 403 VERIFICATION_REJECTED; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada. Permissões: com um token OAuth / MCP, só o Proprietário do workspace pode comprar (phone_lines:purchase) — caso contrário, 403 PERMISSION_DENIED. Todo endpoint /v1/phone-lines aceita só uma chave com escopo de tenant: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe 403 NUMBER_SCOPE_NOT_ALLOWED antes de qualquer verificação de papel. Um 403 PERMISSION_DENIED / WORKSPACE_MEMBERSHIP_REQUIRED é enviado com Cache-Control: no-store. Requer uma chave com escopo de tenant.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://iaxp.mintlify.app/_mintlify/api/og/v2?division=Linhas+telef%C3%B4nicas\u0026amp;title=Comprar+linhas\u0026amp;description=%E2%9A%A0%EF%B8%8F+**Efeito+colateral+real%3A+esta+chamada+cobra+dinheiro+%E2%80%94+N%C3%83O+%C3%A9+uma+simula%C3%A7%C3%A3o%2C+inclusive+pelo+playground.**+Cada+n%C3%BAmero+custa+o+pre%C3%A7o+mensal+cheio+%28R%24+33%2C90+par\u0026amp;theme=35ef0efd94d4b104966e83c5\u0026amp;signature=99a04e778dadb68cce1c7cee1d667636c9a4802eb020208d9326c23d331a2e8f\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/iaxp/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Pilot Status\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#19E17D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pt-BR/playground/phone-lines/comprar-linhas.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.pilotstatus.com.br/#organization\",\"name\":\"Pilot Status\",\"url\":\"https://docs.pilotstatus.com.br\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/iaxp/bFY4-GIf_icRI6gv/images/wordmark-light.svg?fit=max\u0026auto=format\u0026n=bFY4-GIf_icRI6gv\u0026q=85\u0026s=956be78168490eaf8ae153ff8c58b4a7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.pilotstatus.com.br#website\",\"name\":\"Pilot Status\",\"url\":\"https://docs.pilotstatus.com.br\",\"publisher\":{\"@id\":\"https://docs.pilotstatus.com.br/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas#webpage\",\"url\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas\",\"name\":\"Comprar linhas\",\"description\":\"⚠️ Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground. Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado primeiro dos créditos da sua carteira e depois do seu cartão salvo, e vira uma linha telefônica do seu workspace, ACTIVE e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com PAYMENT_FAILED. Compra de 1 a 10 números obtidos em GET /v1/phone-lines/available. Os números são independentes: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha não desfaz os outros. Por isso a requisição responde 200 quando foi processada, com um resultado por número — um 200 não significa que você comprou alguma coisa; sempre leia results[i].ok. Um item que falhou traz code e um error bilíngue, mas nenhum status HTTP próprio: | code do item | O que aconteceu | Cobrado? | | --- | --- | --- | | REQUEST_ALREADY_PROCESSED | Esta Idempotency-Key já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. | | NUMBER_UNAVAILABLE | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. | | PAYMENT_FAILED | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. | | PAYMENT_PROVIDER_ERROR | O processador do cartão não respondeu. O cartão pode ter sido cobrado. | Carteira: não. Cartão: confira a fatura. | | PURCHASE_NOT_COMPLETED | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. | | SUPPLIER_UNAVAILABLE | A operadora falhou ao adquirir o número. | Estornado para a carteira. | Um estorno depois de uma cobrança sempre vai para a carteira, inclusive a parte paga com cartão. Qualquer resposta diferente de 200 significa que nenhum número foi tentado, com uma exceção: um 500 (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita a mesma requisição com a mesma Idempotency-Key e depois liste suas linhas com GET /v1/phone-lines. Idempotência (header obrigatório). A chave é rastreada por número, durante uma hora: a mesma chave com o mesmo número não cobra nada e responde ok: false, REQUEST_ALREADY_PROCESSED — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave nova. Uma requisição recusada por inteiro (400/403) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras. Verificação do titular antes. O titular da conta precisa ser verificado (por /v1/phone-lines/verification ou no painel): nunca iniciada ou não concluída → 403 VERIFICATION_REQUIRED; recusada → 403 VERIFICATION_REJECTED; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada. Permissões: com um token OAuth / MCP, só o Proprietário do workspace pode comprar (phone_lines:purchase) — caso contrário, 403 PERMISSION_DENIED. Todo endpoint /v1/phone-lines aceita só uma chave com escopo de tenant: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe 403 NUMBER_SCOPE_NOT_ALLOWED antes de qualquer verificação de papel. Um 403 PERMISSION_DENIED / WORKSPACE_MEMBERSHIP_REQUIRED é enviado com Cache-Control: no-store. Requer uma chave com escopo de tenant.\",\"dateModified\":\"2026-10-27T12:13:15.523Z\",\"isPartOf\":{\"@id\":\"https://docs.pilotstatus.com.br#website\"},\"breadcrumb\":{\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.pilotstatus.com.br/pt-BR/playground/numbers/listar-n-meros\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linhas telefônicas\",\"item\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/buscar-numeros-disponiveis\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comprar linhas\",\"item\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas#apireference\",\"headline\":\"Comprar linhas\",\"name\":\"Comprar linhas\",\"description\":\"⚠️ Efeito colateral real: esta chamada cobra dinheiro — NÃO é uma simulação, inclusive pelo playground. Cada número custa o preço mensal cheio (R$ 33,90 para workspaces em BRL, US$ 33.90 em USD), descontado primeiro dos créditos da sua carteira e depois do seu cartão salvo, e vira uma linha telefônica do seu workspace, ACTIVE e com o primeiro mês pago. Não há proporcional nem link de checkout: sem créditos e sem cartão salvo, o item falha com PAYMENT_FAILED. Compra de 1 a 10 números obtidos em GET /v1/phone-lines/available. Os números são independentes: cada um é cobrado e adquirido separadamente, na ordem em que você os enviou, e um que falha não desfaz os outros. Por isso a requisição responde 200 quando foi processada, com um resultado por número — um 200 não significa que você comprou alguma coisa; sempre leia results[i].ok. Um item que falhou traz code e um error bilíngue, mas nenhum status HTTP próprio: | code do item | O que aconteceu | Cobrado? | | --- | --- | --- | | REQUEST_ALREADY_PROCESSED | Esta Idempotency-Key já foi usada para este número na última hora — qualquer que tenha sido o resultado daquela tentativa. | Não por esta requisição. | | NUMBER_UNAVAILABLE | O número já pertence a uma linha (de qualquer workspace, inclusive o seu), está sendo comprado em outra requisição neste momento, ou a operadora não o tem mais. | Não — ou estornado para a carteira. | | PAYMENT_FAILED | Créditos mais cartão salvo não cobriram o preço, ou a cobrança no cartão não foi concluída. | Não — os créditos descontados foram devolvidos. | | PAYMENT_PROVIDER_ERROR | O processador do cartão não respondeu. O cartão pode ter sido cobrado. | Carteira: não. Cartão: confira a fatura. | | PURCHASE_NOT_COMPLETED | Cobrado e adquirido, mas não foi possível registrar a linha do nosso lado. | Estornado para a carteira. | | SUPPLIER_UNAVAILABLE | A operadora falhou ao adquirir o número. | Estornado para a carteira. | Um estorno depois de uma cobrança sempre vai para a carteira, inclusive a parte paga com cartão. Qualquer resposta diferente de 200 significa que nenhum número foi tentado, com uma exceção: um 500 (ou um timeout) pode vir depois que números anteriores já foram cobrados e comprados — repita a mesma requisição com a mesma Idempotency-Key e depois liste suas linhas com GET /v1/phone-lines. Idempotência (header obrigatório). A chave é rastreada por número, durante uma hora: a mesma chave com o mesmo número não cobra nada e responde ok: false, REQUEST_ALREADY_PROCESSED — tanto se a primeira tentativa comprou o número quanto se ela falhou (uma repetição não devolve o resultado original). Para tentar de novo um número que falhou, use uma chave nova. Uma requisição recusada por inteiro (400/403) não registra nada, então pode ser reenviada com a mesma chave. A chave é restrita ao seu workspace. Se o cache de idempotência estiver indisponível, a proteção deixa de ser aplicada, para não bloquear as compras. Verificação do titular antes. O titular da conta precisa ser verificado (por /v1/phone-lines/verification ou no painel): nunca iniciada ou não concluída → 403 VERIFICATION_REQUIRED; recusada → 403 VERIFICATION_REJECTED; em análise manual → segue, mas as linhas compradas durante a análise são devolvidas, com as cobranças estornadas para a carteira, se ela for recusada. Permissões: com um token OAuth / MCP, só o Proprietário do workspace pode comprar (phone_lines:purchase) — caso contrário, 403 PERMISSION_DENIED. Todo endpoint /v1/phone-lines aceita só uma chave com escopo de tenant: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe 403 NUMBER_SCOPE_NOT_ALLOWED antes de qualquer verificação de papel. Um 403 PERMISSION_DENIED / WORKSPACE_MEMBERSHIP_REQUIRED é enviado com Cache-Control: no-store. Requer uma chave com escopo de tenant.\",\"url\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/phone-lines/comprar-linhas#webpage\"},\"dateModified\":\"2026-10-27T12:13:15.523Z\",\"publisher\":{\"@id\":\"https://docs.pilotstatus.com.br/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.pilotstatus.com.br#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Pilot Status\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Pilot Status","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/introduction"}]},{"language":"pt-BR","tabs":[{"tab":"Documentação","pages":[{"title":"Documentação","href":"/pt-BR/introduction"}]},{"tab":"Referência da API","pages":[{"title":"Referência da API","href":"/pt-BR/api/overview"}]},{"tab":"Playground","groups":[{"group":"Endpoints","pages":[{"group":"Números","pages":[{"title":"Listar números","sidebarTitle":"Listar números","openapi":"openapi.pt.json GET /v1/numbers","href":"/pt-BR/playground/numbers/listar-n-meros"},{"title":"Criar número (PILOT_STATUS)","sidebarTitle":"Criar número","openapi":"openapi.pt.json POST /v1/numbers","href":"/pt-BR/playground/numbers/criar-n-mero-pilot-status"},{"title":"Pareamento remoto (link de conexão)","sidebarTitle":"Pareamento remoto","openapi":"openapi.pt.json POST /v1/numbers/remote-pairing","href":"/pt-BR/playground/numbers/pareamento-remoto-link-de-conex-o"},{"title":"Remover número","sidebarTitle":"Remover número","openapi":"openapi.pt.json DELETE /v1/numbers/{id}","href":"/pt-BR/playground/numbers/remover-n-mero"},{"title":"Restaurar número","sidebarTitle":"Restaurar número","openapi":"openapi.pt.json POST /v1/numbers/{id}/restore","href":"/pt-BR/playground/numbers/restaurar-n-mero"},{"title":"Purgar número","sidebarTitle":"Purgar número","openapi":"openapi.pt.json DELETE /v1/numbers/{id}/purge","href":"/pt-BR/playground/numbers/purgar-n-mero"},{"title":"Status de conexão do número","sidebarTitle":"Status de conexão do número","openapi":"openapi.pt.json GET /v1/numbers/{id}/status","href":"/pt-BR/playground/numbers/status-de-conex-o-do-n-mero"},{"title":"Reconectar número (QR / pairing)","sidebarTitle":"Reconectar número","openapi":"openapi.pt.json GET /v1/numbers/{id}/connect","href":"/pt-BR/playground/numbers/reconectar-n-mero-qr-pairing"},{"title":"Desconectar Instância WhatsApp","openapi":"openapi.pt.json POST /v1/numbers/{id}/logout","href":"/pt-BR/playground/numbers/desconectar-inst-ncia"},{"title":"Pagar número extra","sidebarTitle":"Pagar número extra","openapi":"openapi.pt.json POST /v1/numbers/{id}/pay","href":"/pt-BR/playground/numbers/pagar-n-mero-extra"},{"title":"Atualizar número (privacidade + settings)","sidebarTitle":"Atualizar número","openapi":"openapi.pt.json PATCH /v1/numbers/{id}","href":"/pt-BR/playground/numbers/atualizar-n-mero"}]},{"group":"Meta","pages":[{"title":"Criar número Meta (Cloud API)","sidebarTitle":"Criar número Meta","openapi":"openapi.pt.json POST /v1/numbers/meta","href":"/pt-BR/playground/numbers/criar-n-mero-meta-cloud-api"},{"title":"Concluir Embedded Signup (Meta)","sidebarTitle":"Concluir Embedded Signup","openapi":"openapi.pt.json POST /v1/meta-embedded/{token}/complete","href":"/pt-BR/playground/meta-onboarding/concluir-embedded-signup-meta"},{"title":"Obter número (detalhes Meta)","sidebarTitle":"Obter número","openapi":"openapi.pt.json GET /v1/numbers/{id}","href":"/pt-BR/playground/numbers/obter-n-mero-detalhes-meta"},{"title":"Baixar mídia (Meta)","sidebarTitle":"Baixar mídia","openapi":"openapi.pt.json GET /v1/media/{mediaId}","href":"/pt-BR/playground/media/baixar-m-dia-meta"}]},{"group":"Assinatura","pages":[{"title":"Prévia de comprar número extra (On Demand)","sidebarTitle":"Prévia de comprar número ex…","openapi":"openapi.pt.json GET /v1/subscription/extra-numbers","href":"/pt-BR/playground/subscription/pr-via-de-comprar-n-mero-extra-on-demand"},{"title":"Comprar número extra (On Demand)","sidebarTitle":"Comprar número extra","openapi":"openapi.pt.json POST /v1/subscription/extra-numbers","href":"/pt-BR/playground/subscription/comprar-n-mero-extra-on-demand"},{"title":"Remover número extra (On Demand)","sidebarTitle":"Remover número extra","openapi":"openapi.pt.json DELETE /v1/subscription/extra-numbers","href":"/pt-BR/playground/subscription/remover-numero-extra-on-demand"}]},{"group":"Cobrança","pages":[{"title":"Recarga da carteira (cartão ou Pix) / adicionar cartão","sidebarTitle":"Recarga / adicionar cartão","openapi":"openapi.pt.json POST /v1/billing/checkout","href":"/pt-BR/playground/billing/gerar-link-de-checkout-stripe"},{"title":"Consultar um pedido de recarga","sidebarTitle":"Consultar um pedido de recarga","openapi":"openapi.pt.json GET /v1/billing/topups/{id}","href":"/pt-BR/playground/billing/consultar-recarga"},{"title":"Iniciar o salvamento de cartão (Stripe Elements)","sidebarTitle":"Iniciar o salvamento de cartão (Stripe Elements)","openapi":"openapi.pt.json POST /v1/billing/card/setup-intent","href":"/pt-BR/playground/billing/iniciar-salvamento-de-cartao"},{"title":"Sincronizar o salvamento de cartão","sidebarTitle":"Sincronizar o salvamento de cartão","openapi":"openapi.pt.json POST /v1/billing/card/setup-intent/{id}/sync","href":"/pt-BR/playground/billing/sincronizar-salvamento-de-cartao"},{"title":"Iniciar uma recarga com cartão (Stripe Elements)","sidebarTitle":"Iniciar uma recarga com cartão (Stripe Elements)","openapi":"openapi.pt.json POST /v1/billing/payment-intents","href":"/pt-BR/playground/billing/iniciar-recarga-com-cartao"},{"title":"Sincronizar uma recarga com cartão","sidebarTitle":"Sincronizar uma recarga com cartão","openapi":"openapi.pt.json POST /v1/billing/payment-intents/{id}/sync","href":"/pt-BR/playground/billing/sincronizar-recarga-com-cartao"}]},{"group":"Preços","pages":[{"title":"Obter preços de mensagens","sidebarTitle":"Obter preços de mensagens","openapi":"openapi.pt.json GET /v1/meta/pricing","href":"/pt-BR/playground/pricing/obter-precos-de-mensagens"}]},{"group":"Mensagens","pages":[{"title":"Enviar mensagem","sidebarTitle":"Enviar mensagem","openapi":"openapi.pt.json POST /v1/messages/send","href":"/pt-BR/playground/messages/enviar-mensagem"},{"title":"Obter mensagem","sidebarTitle":"Obter mensagem","openapi":"openapi.pt.json GET /v1/messages/{id}","href":"/pt-BR/playground/messages/obter-mensagem"},{"title":"Cancelar mensagens agendadas","sidebarTitle":"Cancelar mensagens agendadas","openapi":"openapi.pt.json DELETE /v1/messages/cancel","href":"/pt-BR/playground/messages/cancelar-mensagens-agendadas"},{"title":"Status da janela de atendimento","sidebarTitle":"Status da janela de atendimento","openapi":"openapi.pt.json GET /v1/service-window","href":"/pt-BR/playground/messages/janela-de-atendimento"}]},{"group":"Conversas","pages":[{"title":"Listar conversas","sidebarTitle":"Listar conversas","openapi":"openapi.pt.json GET /v1/conversations","href":"/pt-BR/playground/conversations/listar-conversas"},{"title":"Mensagens de grupos","sidebarTitle":"Mensagens de grupos","openapi":"openapi.pt.json GET /v1/messages/group","href":"/pt-BR/playground/conversations/mensagens-de-grupos"},{"title":"Histórico de mensagens","sidebarTitle":"Histórico de mensagens","openapi":"openapi.pt.json GET /v1/messages/history","href":"/pt-BR/playground/conversations/hist-rico-de-mensagens"},{"title":"Mensagens não lidas","sidebarTitle":"Mensagens não lidas","openapi":"openapi.pt.json GET /v1/messages/unread","href":"/pt-BR/playground/conversations/mensagens-n-o-lidas"},{"title":"Origens de anúncio (CTWA)","sidebarTitle":"Origens de anúncio","openapi":"openapi.pt.json GET /v1/referrals","href":"/pt-BR/playground/conversations/origens-de-anuncio"},{"title":"Resumo de anúncios (CTWA)","sidebarTitle":"Resumo de anúncios","openapi":"openapi.pt.json GET /v1/referrals/summary","href":"/pt-BR/playground/conversations/resumo-de-anuncios"},{"title":"Leads do Meta Lead Ads","sidebarTitle":"Leads (Lead Ads)","openapi":"openapi.pt.json GET /v1/leads","href":"/pt-BR/playground/conversations/leads"},{"title":"Obter um lead (Lead Ads)","sidebarTitle":"Obter um lead","openapi":"openapi.pt.json GET /v1/leads/{id}","href":"/pt-BR/playground/conversations/obter-lead"}]},{"group":"Anúncios","pages":[{"title":"Listar contas de anúncios","sidebarTitle":"Listar contas de anúncios","openapi":"openapi.pt.json GET /v1/ads/accounts","href":"/pt-BR/playground/ads/listar-contas-de-anuncios"},{"title":"Vincular conta de anúncios","sidebarTitle":"Vincular conta de anúncios","openapi":"openapi.pt.json POST /v1/ads/accounts","href":"/pt-BR/playground/ads/vincular-conta-de-anuncios"},{"title":"Desvincular conta de anúncios","sidebarTitle":"Desvincular conta de anúncios","openapi":"openapi.pt.json DELETE /v1/ads/accounts/{adAccountId}","href":"/pt-BR/playground/ads/desvincular-conta-de-anuncios"},{"title":"Resumo por anúncio","sidebarTitle":"Resumo por anúncio","openapi":"openapi.pt.json GET /v1/ads/summary","href":"/pt-BR/playground/ads/resumo-por-anuncio"},{"title":"Listar Páginas do Lead Ads","sidebarTitle":"Listar Páginas do Lead Ads","openapi":"openapi.pt.json GET /v1/lead-pages","href":"/pt-BR/playground/ads/listar-paginas-do-lead-ads"},{"title":"Vincular Página do Lead Ads","sidebarTitle":"Vincular Página do Lead Ads","openapi":"openapi.pt.json POST /v1/lead-pages","href":"/pt-BR/playground/ads/vincular-pagina-do-lead-ads"},{"title":"Mover Página do Lead Ads","sidebarTitle":"Mover Página do Lead Ads","openapi":"openapi.pt.json PATCH /v1/lead-pages/{pageLinkId}","href":"/pt-BR/playground/ads/mover-pagina-do-lead-ads"},{"title":"Desvincular Página do Lead Ads","sidebarTitle":"Desvincular Página do Lead Ads","openapi":"openapi.pt.json DELETE /v1/lead-pages/{pageLinkId}","href":"/pt-BR/playground/ads/desvincular-pagina-do-lead-ads"},{"title":"Ressincronizar Página do Lead Ads","sidebarTitle":"Ressincronizar Página do Lead Ads","openapi":"openapi.pt.json POST /v1/lead-pages/{pageLinkId}/resync","href":"/pt-BR/playground/ads/ressincronizar-pagina-do-lead-ads"},{"title":"Listar Formulários Instantâneos","sidebarTitle":"Listar Formulários Instantâneos","openapi":"openapi.pt.json GET /v1/lead-pages/{pageLinkId}/forms","href":"/pt-BR/playground/ads/listar-formularios-do-lead-ads"},{"title":"Configurar Formulário Instantâneo","sidebarTitle":"Configurar Formulário Instantâneo","openapi":"openapi.pt.json PUT /v1/lead-pages/{pageLinkId}/forms/{formId}","href":"/pt-BR/playground/ads/configurar-formulario-do-lead-ads"}]},{"group":"Grupos","pages":[{"title":"Listar grupos","sidebarTitle":"Listar grupos","openapi":"openapi.pt.json GET /v1/groups","href":"/pt-BR/playground/groups/listar-grupos"}]},{"group":"Canais","pages":[{"title":"Listar canais (newsletters)","sidebarTitle":"Listar canais","openapi":"openapi.pt.json GET /v1/newsletters","href":"/pt-BR/playground/newsletters/listar-canais-newsletters"}]},{"group":"Templates","pages":[{"title":"Listar templates","sidebarTitle":"Listar templates","openapi":"openapi.pt.json GET /v1/templates","href":"/pt-BR/playground/templates/listar-templates"},{"title":"Criar template","sidebarTitle":"Criar template","openapi":"openapi.pt.json POST /v1/templates","href":"/pt-BR/playground/templates/criar-template"},{"title":"Atualizar template","sidebarTitle":"Atualizar template","openapi":"openapi.pt.json PUT /v1/templates/{id}","href":"/pt-BR/playground/templates/atualizar-template"},{"title":"Obter template","sidebarTitle":"Obter template","openapi":"openapi.pt.json GET /v1/templates/{id}","href":"/pt-BR/playground/templates/obter-template"},{"title":"Obter insights do template","sidebarTitle":"Obter insights do template","openapi":"openapi.pt.json GET /v1/templates/{id}/insights","href":"/pt-BR/playground/templates/obter-insights-template"},{"title":"Remover template","sidebarTitle":"Remover template","openapi":"openapi.pt.json DELETE /v1/templates/{id}","href":"/pt-BR/playground/templates/remover-template"}]},{"group":"Flows","pages":[{"title":"Listar Flows","sidebarTitle":"Listar Flows","openapi":"openapi.pt.json GET /v1/flows","href":"/pt-BR/playground/flows/listar-flows"},{"title":"Criar ou clonar Flow","sidebarTitle":"Criar ou clonar Flow","openapi":"openapi.pt.json POST /v1/flows","href":"/pt-BR/playground/flows/criar-flow"},{"title":"Atualizar Flow","sidebarTitle":"Atualizar Flow","openapi":"openapi.pt.json PATCH /v1/flows/{id}","href":"/pt-BR/playground/flows/atualizar-flow"},{"title":"Apagar Flow","sidebarTitle":"Apagar Flow","openapi":"openapi.pt.json DELETE /v1/flows/{id}","href":"/pt-BR/playground/flows/remover-flow"},{"title":"Subir o Flow JSON","sidebarTitle":"Subir o Flow JSON","openapi":"openapi.pt.json POST /v1/flows/{id}/json","href":"/pt-BR/playground/flows/subir-flow-json"},{"title":"Ver a chave de endpoint do Flow","sidebarTitle":"Ver a chave de endpoint do Flow","openapi":"openapi.pt.json GET /v1/numbers/{id}/flow-endpoint-key","href":"/pt-BR/playground/numbers/ver-chave-endpoint-flow"},{"title":"Gerar ou importar a chave de endpoint do Flow","sidebarTitle":"Gerar ou importar a chave de endpoint do Flow","openapi":"openapi.pt.json POST /v1/numbers/{id}/flow-endpoint-key","href":"/pt-BR/playground/numbers/gerar-chave-endpoint-flow"},{"title":"Ver config do endpoint do Flow","sidebarTitle":"Ver config do endpoint do Flow","openapi":"openapi.pt.json GET /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/ver-config-endpoint-flow"},{"title":"Definir destino do endpoint do Flow","sidebarTitle":"Definir destino do endpoint do Flow","openapi":"openapi.pt.json PUT /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/definir-destino-endpoint-flow"},{"title":"Definir destino do endpoint do Flow (alias de PUT)","sidebarTitle":"Definir destino do endpoint do Flow (alias de PUT)","openapi":"openapi.pt.json PATCH /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/definir-destino-endpoint-flow-patch"},{"title":"Registrar o endpoint do Flow na Meta","sidebarTitle":"Registrar o endpoint do Flow na Meta","openapi":"openapi.pt.json POST /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/registar-endpoint-flow-meta"},{"title":"Publicar Flow","sidebarTitle":"Publicar Flow","openapi":"openapi.pt.json POST /v1/flows/{id}/publish","href":"/pt-BR/playground/flows/publicar-flow"},{"title":"Depreciar Flow","sidebarTitle":"Depreciar Flow","openapi":"openapi.pt.json POST /v1/flows/{id}/deprecate","href":"/pt-BR/playground/flows/depreciar-flow"},{"title":"Listar respostas do Flow","sidebarTitle":"Listar respostas do Flow","openapi":"openapi.pt.json GET /v1/flows/{id}/responses","href":"/pt-BR/playground/flows/listar-respostas-flow"}]},{"group":"Analytics","pages":[{"title":"Dashboard de analytics","sidebarTitle":"Dashboard de analytics","openapi":"openapi.pt.json GET /v1/analytics/dashboard","href":"/pt-BR/playground/analytics/dashboard-de-analytics"}]},{"group":"API Keys","pages":[{"title":"Listar API keys","sidebarTitle":"Listar API keys","openapi":"openapi.pt.json GET /v1/api-keys","href":"/pt-BR/playground/api-keys/listar-api-keys"},{"title":"Regenerar API key de um número","sidebarTitle":"Regenerar API key de um núm…","openapi":"openapi.pt.json POST /v1/api-keys","href":"/pt-BR/playground/api-keys/regenerar-api-key-de-um-n-mero"},{"title":"Rotacionar API key","sidebarTitle":"Rotacionar API key","openapi":"openapi.pt.json POST /v1/api-keys/regenerate","href":"/pt-BR/playground/api-keys/rotacionar-api-key"}]},{"group":"Webhooks","pages":[{"title":"Listar webhooks","sidebarTitle":"Listar webhooks","openapi":"openapi.pt.json GET /v1/webhooks","href":"/pt-BR/playground/webhooks/listar-webhooks"},{"title":"Criar webhook","sidebarTitle":"Criar webhook","openapi":"openapi.pt.json POST /v1/webhooks","href":"/pt-BR/playground/webhooks/criar-webhook"},{"title":"Detalhar webhook","sidebarTitle":"Detalhar webhook","openapi":"openapi.pt.json GET /v1/webhooks/{id}","href":"/pt-BR/playground/webhooks/detalhar-webhook"},{"title":"Atualizar webhook","sidebarTitle":"Atualizar webhook","openapi":"openapi.pt.json PATCH /v1/webhooks/{id}","href":"/pt-BR/playground/webhooks/atualizar-webhook"},{"title":"Excluir webhook","sidebarTitle":"Excluir webhook","openapi":"openapi.pt.json DELETE /v1/webhooks/{id}","href":"/pt-BR/playground/webhooks/excluir-webhook"},{"title":"Eventos de entrega do webhook","sidebarTitle":"Eventos de entrega do webho…","openapi":"openapi.pt.json GET /v1/webhooks/{id}/logs","href":"/pt-BR/playground/webhooks/eventos-de-entrega-do-webhook"}]},{"group":"Chatwoot","pages":[{"title":"Status do Chatwoot","sidebarTitle":"Status do Chatwoot","openapi":"openapi.pt.json GET /v1/chatwoot","href":"/pt-BR/playground/chatwoot/status-do-chatwoot"},{"title":"Conectar o Chatwoot","sidebarTitle":"Conectar o Chatwoot","openapi":"openapi.pt.json POST /v1/chatwoot","href":"/pt-BR/playground/chatwoot/conectar-chatwoot"},{"title":"Atualizar o Chatwoot","sidebarTitle":"Atualizar o Chatwoot","openapi":"openapi.pt.json PATCH /v1/chatwoot","href":"/pt-BR/playground/chatwoot/atualizar-chatwoot"},{"title":"Desconectar o Chatwoot","sidebarTitle":"Desconectar o Chatwoot","openapi":"openapi.pt.json DELETE /v1/chatwoot","href":"/pt-BR/playground/chatwoot/desconectar-chatwoot"},{"title":"Testar credenciais do Chatwoot","sidebarTitle":"Testar credenciais do Chatwoot","openapi":"openapi.pt.json POST /v1/chatwoot/test","href":"/pt-BR/playground/chatwoot/testar-credenciais-do-chatwoot"}]},{"group":"Pareamento Remoto","pages":[{"title":"Info do pareamento remoto","sidebarTitle":"Info do pareamento remoto","openapi":"openapi.pt.json GET /v1/remote-pairing/{token}","href":"/pt-BR/playground/remote-pairing/info-do-pareamento-remoto"},{"title":"Conectar via token (QR / pairing)","sidebarTitle":"Conectar via token","openapi":"openapi.pt.json POST /v1/remote-pairing/{token}/connect","href":"/pt-BR/playground/remote-pairing/conectar-via-token-qr-pairing"},{"title":"Status do pareamento remoto","sidebarTitle":"Status do pareamento remoto","openapi":"openapi.pt.json GET /v1/remote-pairing/{token}/status","href":"/pt-BR/playground/remote-pairing/status-do-pareamento-remoto"}]},{"group":"Marca","pages":[{"title":"Ler a marca do tenant","sidebarTitle":"Ler a marca do tenant","openapi":"openapi.pt.json GET /v1/branding","href":"/pt-BR/playground/branding/ler-a-marca-do-tenant"},{"title":"Atualizar a marca do tenant","sidebarTitle":"Atualizar a marca do tenant","openapi":"openapi.pt.json PUT /v1/branding","href":"/pt-BR/playground/branding/atualizar-a-marca-do-tenant"},{"title":"Marca resolvida da página de conexão","sidebarTitle":"Marca resolvida da página d…","openapi":"openapi.pt.json GET /v1/connect/{token}/branding","href":"/pt-BR/playground/branding/marca-resolvida-da-p-gina-de-conex-o"}]},{"group":"Embed","pages":[{"title":"Criar sessão de embed","sidebarTitle":"Criar sessão de embed","openapi":"openapi.pt.json POST /v1/embed/sessions","href":"/pt-BR/playground/embed/criar-sess-o-de-embed"}]},{"group":"Chamadas","pages":[{"title":"Listar chamadas","sidebarTitle":"Listar chamadas","openapi":"openapi.pt.json GET /v1/calls","href":"/pt-BR/playground/calls/listar-chamadas"},{"title":"Iniciar chamada (BIC)","sidebarTitle":"Iniciar chamada","openapi":"openapi.pt.json POST /v1/calls","href":"/pt-BR/playground/calls/iniciar-chamada-bic"},{"title":"Detalhe da chamada","sidebarTitle":"Detalhe da chamada","openapi":"openapi.pt.json GET /v1/calls/{callId}","href":"/pt-BR/playground/calls/detalhe-da-chamada"},{"title":"Pré-aceitar chamada (opcional)","sidebarTitle":"Pré-aceitar chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/pre-accept","href":"/pt-BR/playground/calls/pr-aceitar-chamada-opcional"},{"title":"Atender chamada","sidebarTitle":"Atender chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/accept","href":"/pt-BR/playground/calls/atender-chamada"},{"title":"Rejeitar chamada","sidebarTitle":"Rejeitar chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/reject","href":"/pt-BR/playground/calls/rejeitar-chamada"},{"title":"Encerrar chamada","sidebarTitle":"Encerrar chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/terminate","href":"/pt-BR/playground/calls/encerrar-chamada"},{"title":"Tocar áudio na chamada (web)","sidebarTitle":"Tocar áudio na chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/play","href":"/pt-BR/playground/calls/tocar-udio-na-chamada-web"},{"title":"Sessão de mídia em tempo real (web)","sidebarTitle":"Sessão de mídia em tempo re…","openapi":"openapi.pt.json POST /v1/calls/{callId}/realtime-session","href":"/pt-BR/playground/calls/sess-o-de-m-dia-em-tempo-real-web"},{"title":"Ler configurações de chamadas","sidebarTitle":"Ler configurações de chamad…","openapi":"openapi.pt.json GET /v1/calls/settings","href":"/pt-BR/playground/calls/ler-configura-es-de-chamadas"},{"title":"Atualizar configurações de chamadas","sidebarTitle":"Atualizar configurações de…","openapi":"openapi.pt.json PUT /v1/calls/settings","href":"/pt-BR/playground/calls/atualizar-configura-es-de-chamadas"},{"title":"Consultar permissão de chamada","sidebarTitle":"Consultar permissão de cham…","openapi":"openapi.pt.json GET /v1/calls/permissions","href":"/pt-BR/playground/calls/consultar-permiss-o-de-chamada"},{"title":"Pedir permissão de chamada","sidebarTitle":"Pedir permissão de chamada","openapi":"openapi.pt.json POST /v1/calls/permissions/request","href":"/pt-BR/playground/calls/pedir-permiss-o-de-chamada"}]},{"group":"Linhas telefônicas","pages":[{"title":"Buscar números disponíveis","sidebarTitle":"Buscar números disponíveis","openapi":"openapi.pt.json GET /v1/phone-lines/available","description":"Lista os números fixos que podem ser comprados agora em um DDD brasileiro. É o primeiro passo de uma compra: o `number` de cada resultado é exatamente o que `POST /v1/phone-lines` recebe.\n\n- **Buscar não é reservar.** Um número listado pode ser comprado por outra pessoa antes que a sua compra chegue a ele; nesse caso, ele volta nos resultados da compra como `NUMBER_UNAVAILABLE`.\n- **Toda busca chega à nossa operadora** e consome uma cota de requisições compartilhada por toda a plataforma. Busque uma vez, mostre a lista e reutilize-a — não consulte este endpoint periodicamente. Quando a cota se esgota, o endpoint responde `503 SUPPLIER_UNAVAILABLE`.\n- A verificação do titular **não** é necessária para buscar — só para comprar.\n\nPermissões: com um token OAuth / MCP, só o **Proprietário** do workspace pode buscar (`phone_lines:purchase`, a mesma permissão da compra) — caso contrário, `403 PERMISSION_DENIED`. Uma chave `ps_` clássica de tenant não tem usuário nem papel: a autoridade dela é o escopo.\n\nTodo endpoint `/v1/phone-lines` aceita só uma chave **com escopo de tenant**: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe `403 NUMBER_SCOPE_NOT_ALLOWED` antes de qualquer verificação de papel. Um `403 PERMISSION_DENIED` / `WORKSPACE_MEMBERSHIP_REQUIRED` é enviado com `Cache-Control: no-store`.\n\n**Requer uma chave com escopo de tenant.**","href":"/pt-BR/playground/phone-lines/buscar-numeros-disponiveis"},{"title":"Comprar linhas","sidebarTitle":"Comprar linhas","openapi":"openapi.pt.json POST /v1/phone-lines","href":"/pt-BR/playground/phone-lines/comprar-linhas"},{"title":"Listar linhas","sidebarTitle":"Listar linhas","openapi":"openapi.pt.json GET /v1/phone-lines","description":"Retorna as linhas do workspace da chave, **da compra mais recente para a mais antiga**. Por padrão, só as linhas que você ainda mantém (`ACTIVE`, `PAYMENT_PENDING`, `SUSPENDED`); adicione `includeClosed=true` para incluir as encerradas (`RETURNED`, `CANCELED`). A lista **não é paginada**: ela sempre retorna todas as linhas correspondentes. Cada item é o mesmo objeto linha que `GET /v1/phone-lines/{id}` retorna.\n\nPermissões: com um token OAuth / MCP, o usuário precisa ser **Proprietário ou Administrador** (`phone_lines:read`) — caso contrário, `403 PERMISSION_DENIED`.\n\nTodo endpoint `/v1/phone-lines` aceita só uma chave **com escopo de tenant**: a linha pertence ao workspace, não a um número de WhatsApp, então uma chave com escopo de número (ou uma concessão OAuth por número) recebe `403 NUMBER_SCOPE_NOT_ALLOWED` antes de qualquer verificação de papel. Um `403 PERMISSION_DENIED` / `WORKSPACE_MEMBERSHIP_REQUIRED` é enviado com `Cache-Control: no-store`.\n\n**Requer uma chave com escopo de tenant.**","href":"/pt-BR/playground/phone-lines/listar-linhas"},{"title":"Obter linha","sidebarTitle":"Obter linha","openapi":"openapi.pt.json GET /v1/phone-lines/{id}","href":"/pt-BR/playground/phone-lines/obter-linha"},{"title":"Cancelar linha","sidebarTitle":"Cancelar linha","openapi":"openapi.pt.json DELETE /v1/phone-lines/{id}","href":"/pt-BR/playground/phone-lines/cancelar-linha"},{"title":"Ler verificação do titular","sidebarTitle":"Ler verificação do titular","openapi":"openapi.pt.json GET /v1/phone-lines/verification","href":"/pt-BR/playground/phone-lines/ler-verificacao"},{"title":"Enviar verificação do titular","sidebarTitle":"Enviar verificação do titular","openapi":"openapi.pt.json POST /v1/phone-lines/verification","href":"/pt-BR/playground/phone-lines/enviar-verificacao"},{"title":"Enviar código de contato","sidebarTitle":"Enviar código de contato","openapi":"openapi.pt.json POST /v1/phone-lines/verification/contact/{channel}/send","href":"/pt-BR/playground/phone-lines/enviar-codigo-de-contato"},{"title":"Confirmar código de contato","sidebarTitle":"Confirmar código de contato","openapi":"openapi.pt.json POST /v1/phone-lines/verification/contact/{channel}/confirm","href":"/pt-BR/playground/phone-lines/confirmar-codigo-de-contato"},{"title":"Enviar novo documento","sidebarTitle":"Enviar novo documento","openapi":"openapi.pt.json POST /v1/phone-lines/verification/document","href":"/pt-BR/playground/phone-lines/enviar-novo-documento"},{"title":"Solicitar código de ativação","sidebarTitle":"Solicitar código de ativação","openapi":"openapi.pt.json POST /v1/phone-lines/{id}/activations","href":"/pt-BR/playground/phone-lines/solicitar-codigo-de-ativacao"},{"title":"Consultar ativação","sidebarTitle":"Consultar ativação","openapi":"openapi.pt.json GET /v1/phone-lines/activations/{activationId}","href":"/pt-BR/playground/phone-lines/consultar-ativacao"},{"title":"Baixar gravação da chamada","sidebarTitle":"Baixar gravação da chamada","openapi":"openapi.pt.json GET /v1/phone-lines/activations/{activationId}/audio","href":"/pt-BR/playground/phone-lines/baixar-gravacao-da-chamada"},{"title":"Histórico de códigos","sidebarTitle":"Histórico de códigos","openapi":"openapi.pt.json GET /v1/phone-lines/{id}/activations","href":"/pt-BR/playground/phone-lines/historico-de-codigos"},{"title":"Cancelar espera de ativação","sidebarTitle":"Cancelar espera de ativação","openapi":"openapi.pt.json POST /v1/phone-lines/{id}/activations/{activationId}/cancel","href":"/pt-BR/playground/phone-lines/cancelar-espera-de-ativacao"},{"title":"Listar webhooks das linhas","sidebarTitle":"Listar webhooks das linhas","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks","href":"/pt-BR/playground/phone-lines/listar-webhooks-das-linhas"},{"title":"Criar webhook de linha","sidebarTitle":"Criar webhook de linha","openapi":"openapi.pt.json POST /v1/phone-lines/webhooks","href":"/pt-BR/playground/phone-lines/criar-webhook-de-linha"},{"title":"Obter webhook de linha","sidebarTitle":"Obter webhook de linha","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks/{id}","href":"/pt-BR/playground/phone-lines/obter-webhook-de-linha"},{"title":"Atualizar webhook de linha","sidebarTitle":"Atualizar webhook de linha","openapi":"openapi.pt.json PATCH /v1/phone-lines/webhooks/{id}","href":"/pt-BR/playground/phone-lines/atualizar-webhook-de-linha"},{"title":"Excluir webhook de linha","sidebarTitle":"Excluir webhook de linha","openapi":"openapi.pt.json DELETE /v1/phone-lines/webhooks/{id}","href":"/pt-BR/playground/phone-lines/excluir-webhook-de-linha"},{"title":"Listar entregas do webhook de linha","sidebarTitle":"Listar entregas do webhook","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks/{id}/deliveries","href":"/pt-BR/playground/phone-lines/listar-entregas-do-webhook"},{"title":"Obter entrega do webhook de linha","sidebarTitle":"Obter entrega do webhook","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks/{id}/deliveries/{deliveryId}","href":"/pt-BR/playground/phone-lines/obter-entrega-do-webhook"}]},{"group":"Evolution GO","pages":[{"title":"Iniciar chamada de saída","openapi":"openapi.evolution-go.pt.json POST /call/start","href":"/pt-BR/playground/evolution-go/call-start"},{"title":"Listar chamadas ativas","openapi":"openapi.evolution-go.pt.json GET /call/list","href":"/pt-BR/playground/evolution-go/call-list"},{"title":"Obter chamada por id","openapi":"openapi.evolution-go.pt.json POST /call/get","href":"/pt-BR/playground/evolution-go/call-get"},{"title":"Atender chamada recebida","openapi":"openapi.evolution-go.pt.json POST /call/answer","href":"/pt-BR/playground/evolution-go/call-answer"},{"title":"Rejeitar chamada","openapi":"openapi.evolution-go.pt.json POST /call/reject","href":"/pt-BR/playground/evolution-go/call-reject"},{"title":"Rejeitar chamada monitorada","openapi":"openapi.evolution-go.pt.json POST /call/reject/by-id","href":"/pt-BR/playground/evolution-go/call-reject-by-id"},{"title":"Rejeitar última oferta","openapi":"openapi.evolution-go.pt.json POST /call/reject/latest","href":"/pt-BR/playground/evolution-go/call-reject-latest"},{"title":"Encerrar chamada","openapi":"openapi.evolution-go.pt.json POST /call/hangup","href":"/pt-BR/playground/evolution-go/call-hangup"},{"title":"Reproduzir áudio na chamada","openapi":"openapi.evolution-go.pt.json POST /call/media/play","href":"/pt-BR/playground/evolution-go/call-media-play"},{"title":"Criar sessão em tempo real","openapi":"openapi.evolution-go.pt.json POST /call/media/realtime/session","href":"/pt-BR/playground/evolution-go/call-media-realtime-session"},{"title":"Fixar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/pin","href":"/pt-BR/playground/evolution-go/chat-pin"},{"title":"Desafixar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/unpin","href":"/pt-BR/playground/evolution-go/chat-unpin"},{"title":"Arquivar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/archive","href":"/pt-BR/playground/evolution-go/chat-archive"},{"title":"Desarquivar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/unarchive","href":"/pt-BR/playground/evolution-go/chat-unarchive"},{"title":"Silenciar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/mute","href":"/pt-BR/playground/evolution-go/chat-mute"},{"title":"Reativar notificações de uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/unmute","href":"/pt-BR/playground/evolution-go/chat-unmute"},{"title":"Solicitar sincronização de histórico","openapi":"openapi.evolution-go.pt.json POST /chat/history-sync","href":"/pt-BR/playground/evolution-go/chat-history-sync"},{"title":"Criar comunidade","openapi":"openapi.evolution-go.pt.json POST /community/create","href":"/pt-BR/playground/evolution-go/community-create"},{"title":"Adicionar grupos","openapi":"openapi.evolution-go.pt.json POST /community/add","href":"/pt-BR/playground/evolution-go/community-add"},{"title":"Remover grupos","openapi":"openapi.evolution-go.pt.json POST /community/remove","href":"/pt-BR/playground/evolution-go/community-remove"},{"title":"Listar grupos dos quais participa","openapi":"openapi.evolution-go.pt.json GET /group/list","href":"/pt-BR/playground/evolution-go/group-list"},{"title":"Obter informações do grupo","openapi":"openapi.evolution-go.pt.json POST /group/info","href":"/pt-BR/playground/evolution-go/group-info"},{"title":"Obter link de convite","openapi":"openapi.evolution-go.pt.json POST /group/invitelink","href":"/pt-BR/playground/evolution-go/group-invitelink"},{"title":"Definir foto do grupo","openapi":"openapi.evolution-go.pt.json POST /group/photo","href":"/pt-BR/playground/evolution-go/group-photo"},{"title":"Definir nome do grupo","openapi":"openapi.evolution-go.pt.json POST /group/name","href":"/pt-BR/playground/evolution-go/group-name"},{"title":"Definir descrição do grupo","openapi":"openapi.evolution-go.pt.json POST /group/description","href":"/pt-BR/playground/evolution-go/group-description"},{"title":"Criar grupo","openapi":"openapi.evolution-go.pt.json POST /group/create","href":"/pt-BR/playground/evolution-go/group-create"},{"title":"Atualizar participantes","openapi":"openapi.evolution-go.pt.json POST /group/participant","href":"/pt-BR/playground/evolution-go/group-participant"},{"title":"Listar grupos próprios","openapi":"openapi.evolution-go.pt.json GET /group/myall","href":"/pt-BR/playground/evolution-go/group-myall"},{"title":"Entrar via convite","openapi":"openapi.evolution-go.pt.json POST /group/join","href":"/pt-BR/playground/evolution-go/group-join"},{"title":"Sair do grupo","openapi":"openapi.evolution-go.pt.json POST /group/leave","href":"/pt-BR/playground/evolution-go/group-leave"},{"title":"Adicionar etiqueta à conversa","openapi":"openapi.evolution-go.pt.json POST /label/chat","href":"/pt-BR/playground/evolution-go/label-chat"},{"title":"Adicionar etiqueta à mensagem","openapi":"openapi.evolution-go.pt.json POST /label/message","href":"/pt-BR/playground/evolution-go/label-message"},{"title":"Editar etiqueta","openapi":"openapi.evolution-go.pt.json POST /label/edit","href":"/pt-BR/playground/evolution-go/label-edit"},{"title":"Listar todas as etiquetas","openapi":"openapi.evolution-go.pt.json GET /label/list","href":"/pt-BR/playground/evolution-go/label-list"},{"title":"Remover etiqueta da conversa","openapi":"openapi.evolution-go.pt.json POST /unlabel/chat","href":"/pt-BR/playground/evolution-go/unlabel-chat"},{"title":"Remover etiqueta da mensagem","openapi":"openapi.evolution-go.pt.json POST /unlabel/message","href":"/pt-BR/playground/evolution-go/unlabel-message"},{"title":"Reagir a uma mensagem","openapi":"openapi.evolution-go.pt.json POST /message/react","href":"/pt-BR/playground/evolution-go/message-react"},{"title":"Enviar presença na conversa","openapi":"openapi.evolution-go.pt.json POST /message/presence","href":"/pt-BR/playground/evolution-go/message-presence"},{"title":"Marcar mensagens como lidas","openapi":"openapi.evolution-go.pt.json POST /message/markread","href":"/pt-BR/playground/evolution-go/message-markread"},{"title":"Baixar mídia","openapi":"openapi.evolution-go.pt.json POST /message/downloadmedia","href":"/pt-BR/playground/evolution-go/message-downloadmedia"},{"title":"Obter status da mensagem","openapi":"openapi.evolution-go.pt.json POST /message/status","href":"/pt-BR/playground/evolution-go/message-status"},{"title":"Apagar para todos","openapi":"openapi.evolution-go.pt.json POST /message/delete","href":"/pt-BR/playground/evolution-go/message-delete"},{"title":"Editar uma mensagem","openapi":"openapi.evolution-go.pt.json POST /message/edit","href":"/pt-BR/playground/evolution-go/message-edit"},{"title":"Criar newsletter","openapi":"openapi.evolution-go.pt.json POST /newsletter/create","href":"/pt-BR/playground/evolution-go/newsletter-create"},{"title":"Listar newsletters","openapi":"openapi.evolution-go.pt.json GET /newsletter/list","href":"/pt-BR/playground/evolution-go/newsletter-list"},{"title":"Obter newsletter","openapi":"openapi.evolution-go.pt.json POST /newsletter/info","href":"/pt-BR/playground/evolution-go/newsletter-info"},{"title":"Resolver convite","openapi":"openapi.evolution-go.pt.json POST /newsletter/link","href":"/pt-BR/playground/evolution-go/newsletter-link"},{"title":"Inscrever-se para atualizações ao vivo","openapi":"openapi.evolution-go.pt.json POST /newsletter/subscribe","href":"/pt-BR/playground/evolution-go/newsletter-subscribe"},{"title":"Obter mensagens da newsletter","openapi":"openapi.evolution-go.pt.json POST /newsletter/messages","href":"/pt-BR/playground/evolution-go/newsletter-messages"},{"title":"Enviar mensagem de texto","openapi":"openapi.evolution-go.pt.json POST /send/text","href":"/pt-BR/playground/evolution-go/send-text"},{"title":"Enviar pré-visualização de link","openapi":"openapi.evolution-go.pt.json POST /send/link","href":"/pt-BR/playground/evolution-go/send-link"},{"title":"Enviar mensagem de mídia","openapi":"openapi.evolution-go.pt.json POST /send/media","href":"/pt-BR/playground/evolution-go/send-media"},{"title":"Enviar enquete","openapi":"openapi.evolution-go.pt.json POST /send/poll","href":"/pt-BR/playground/evolution-go/send-poll"},{"title":"Enviar figurinha","openapi":"openapi.evolution-go.pt.json POST /send/sticker","href":"/pt-BR/playground/evolution-go/send-sticker"},{"title":"Enviar localização","openapi":"openapi.evolution-go.pt.json POST /send/location","href":"/pt-BR/playground/evolution-go/send-location"},{"title":"Enviar cartão de contato","openapi":"openapi.evolution-go.pt.json POST /send/contact","href":"/pt-BR/playground/evolution-go/send-contact"},{"title":"Enviar botões interativos","openapi":"openapi.evolution-go.pt.json POST /send/button","href":"/pt-BR/playground/evolution-go/send-button"},{"title":"Enviar menu de lista","openapi":"openapi.evolution-go.pt.json POST /send/list","href":"/pt-BR/playground/evolution-go/send-list"},{"title":"Enviar cartões de carrossel","openapi":"openapi.evolution-go.pt.json POST /send/carousel","href":"/pt-BR/playground/evolution-go/send-carousel"},{"title":"Obter informações do usuário","openapi":"openapi.evolution-go.pt.json POST /user/info","href":"/pt-BR/playground/evolution-go/user-info"},{"title":"Verificar no WhatsApp","openapi":"openapi.evolution-go.pt.json POST /user/check","href":"/pt-BR/playground/evolution-go/user-check"},{"title":"Obter avatar do usuário","openapi":"openapi.evolution-go.pt.json POST /user/avatar","href":"/pt-BR/playground/evolution-go/user-avatar"},{"title":"Listar contatos","openapi":"openapi.evolution-go.pt.json GET /user/contacts","href":"/pt-BR/playground/evolution-go/user-contacts"},{"title":"Obter configurações de privacidade","openapi":"openapi.evolution-go.pt.json GET /user/privacy","href":"/pt-BR/playground/evolution-go/user-privacy"},{"title":"Definir configurações de privacidade","openapi":"openapi.evolution-go.pt.json POST /user/privacy","href":"/pt-BR/playground/evolution-go/user-privacy-post"},{"title":"Bloquear um contato","openapi":"openapi.evolution-go.pt.json POST /user/block","href":"/pt-BR/playground/evolution-go/user-block"},{"title":"Desbloquear um contato","openapi":"openapi.evolution-go.pt.json POST /user/unblock","href":"/pt-BR/playground/evolution-go/user-unblock"},{"title":"Listar contatos bloqueados","openapi":"openapi.evolution-go.pt.json GET /user/blocklist","href":"/pt-BR/playground/evolution-go/user-blocklist"},{"title":"Definir foto de perfil","openapi":"openapi.evolution-go.pt.json POST /user/profilePicture","href":"/pt-BR/playground/evolution-go/user-profilepicture"},{"title":"Definir nome de perfil","openapi":"openapi.evolution-go.pt.json POST /user/profileName","href":"/pt-BR/playground/evolution-go/user-profilename"},{"title":"Definir status de perfil","openapi":"openapi.evolution-go.pt.json POST /user/profileStatus","href":"/pt-BR/playground/evolution-go/user-profilestatus"}]},{"group":"Evolution V2","pages":[{"title":"Oferecer uma chamada","openapi":"openapi.evolution-v2.pt.json POST /call/offer/{instance}","href":"/pt-BR/playground/evolution-v2/call-offer"},{"title":"Buscar catálogo de produtos","openapi":"openapi.evolution-v2.pt.json POST /business/getCatalog/{instance}","href":"/pt-BR/playground/evolution-v2/business-getcatalog"},{"title":"Buscar coleções","openapi":"openapi.evolution-v2.pt.json POST /business/getCollections/{instance}","href":"/pt-BR/playground/evolution-v2/business-getcollections"},{"title":"Verificar números de WhatsApp","openapi":"openapi.evolution-v2.pt.json POST /chat/whatsappNumbers/{instance}","href":"/pt-BR/playground/evolution-v2/chat-whatsappnumbers"},{"title":"Marcar mensagens como lidas","openapi":"openapi.evolution-v2.pt.json POST /chat/markMessageAsRead/{instance}","href":"/pt-BR/playground/evolution-v2/chat-markmessageasread"},{"title":"Arquivar ou desarquivar conversa","openapi":"openapi.evolution-v2.pt.json POST /chat/archiveChat/{instance}","href":"/pt-BR/playground/evolution-v2/chat-archivechat"},{"title":"Marcar conversa como não lida","openapi":"openapi.evolution-v2.pt.json POST /chat/markChatUnread/{instance}","href":"/pt-BR/playground/evolution-v2/chat-markchatunread"},{"title":"Apagar mensagem para todos","openapi":"openapi.evolution-v2.pt.json DELETE /chat/deleteMessageForEveryone/{instance}","href":"/pt-BR/playground/evolution-v2/chat-deletemessageforeveryone"},{"title":"Obter mídia como base64","openapi":"openapi.evolution-v2.pt.json POST /chat/getBase64FromMediaMessage/{instance}","href":"/pt-BR/playground/evolution-v2/chat-getbase64frommediamessage"},{"title":"Editar mensagem enviada","openapi":"openapi.evolution-v2.pt.json POST /chat/updateMessage/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updatemessage"},{"title":"Enviar atualização de presença","openapi":"openapi.evolution-v2.pt.json POST /chat/sendPresence/{instance}","href":"/pt-BR/playground/evolution-v2/chat-sendpresence"},{"title":"Bloquear ou desbloquear contato","openapi":"openapi.evolution-v2.pt.json POST /chat/updateBlockStatus/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateblockstatus"},{"title":"Buscar conversa por JID","openapi":"openapi.evolution-v2.pt.json GET /chat/findChatByRemoteJid/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findchatbyremotejid"},{"title":"Buscar contatos","openapi":"openapi.evolution-v2.pt.json POST /chat/findContacts/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findcontacts"},{"title":"Buscar mensagens","openapi":"openapi.evolution-v2.pt.json POST /chat/findMessages/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findmessages"},{"title":"Buscar status de mensagens","openapi":"openapi.evolution-v2.pt.json POST /chat/findStatusMessage/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findstatusmessage"},{"title":"Buscar conversas","openapi":"openapi.evolution-v2.pt.json POST /chat/findChats/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findchats"},{"title":"Criar grupo","openapi":"openapi.evolution-v2.pt.json POST /group/create/{instance}","href":"/pt-BR/playground/evolution-v2/group-create"},{"title":"Atualizar assunto","openapi":"openapi.evolution-v2.pt.json POST /group/updateGroupSubject/{instance}","href":"/pt-BR/playground/evolution-v2/group-updategroupsubject"},{"title":"Atualizar foto","openapi":"openapi.evolution-v2.pt.json POST /group/updateGroupPicture/{instance}","href":"/pt-BR/playground/evolution-v2/group-updategrouppicture"},{"title":"Atualizar descrição","openapi":"openapi.evolution-v2.pt.json POST /group/updateGroupDescription/{instance}","href":"/pt-BR/playground/evolution-v2/group-updategroupdescription"},{"title":"Obter informações do grupo","openapi":"openapi.evolution-v2.pt.json GET /group/findGroupInfos/{instance}","href":"/pt-BR/playground/evolution-v2/group-findgroupinfos"},{"title":"Listar todos os grupos","openapi":"openapi.evolution-v2.pt.json GET /group/fetchAllGroups/{instance}","href":"/pt-BR/playground/evolution-v2/group-fetchallgroups"},{"title":"Listar participantes","openapi":"openapi.evolution-v2.pt.json GET /group/participants/{instance}","href":"/pt-BR/playground/evolution-v2/group-participants"},{"title":"Obter código de convite","openapi":"openapi.evolution-v2.pt.json GET /group/inviteCode/{instance}","href":"/pt-BR/playground/evolution-v2/group-invitecode"},{"title":"Obter informações do convite","openapi":"openapi.evolution-v2.pt.json GET /group/inviteInfo/{instance}","href":"/pt-BR/playground/evolution-v2/group-inviteinfo"},{"title":"Aceitar convite","openapi":"openapi.evolution-v2.pt.json GET /group/acceptInviteCode/{instance}","href":"/pt-BR/playground/evolution-v2/group-acceptinvitecode"},{"title":"Enviar convite","openapi":"openapi.evolution-v2.pt.json POST /group/sendInvite/{instance}","href":"/pt-BR/playground/evolution-v2/group-sendinvite"},{"title":"Revogar convite","openapi":"openapi.evolution-v2.pt.json POST /group/revokeInviteCode/{instance}","href":"/pt-BR/playground/evolution-v2/group-revokeinvitecode"},{"title":"Atualizar participantes","openapi":"openapi.evolution-v2.pt.json POST /group/updateParticipant/{instance}","href":"/pt-BR/playground/evolution-v2/group-updateparticipant"},{"title":"Atualizar configuração","openapi":"openapi.evolution-v2.pt.json POST /group/updateSetting/{instance}","href":"/pt-BR/playground/evolution-v2/group-updatesetting"},{"title":"Atualizar modo de adição de membros","openapi":"openapi.evolution-v2.pt.json POST /group/updateMemberAddMode/{instance}","href":"/pt-BR/playground/evolution-v2/group-updatememberaddmode"},{"title":"Alternar mensagens temporárias","openapi":"openapi.evolution-v2.pt.json POST /group/toggleEphemeral/{instance}","href":"/pt-BR/playground/evolution-v2/group-toggleephemeral"},{"title":"Sair do grupo","openapi":"openapi.evolution-v2.pt.json DELETE /group/leaveGroup/{instance}","href":"/pt-BR/playground/evolution-v2/group-leavegroup"},{"title":"Listar etiquetas","openapi":"openapi.evolution-v2.pt.json GET /label/findLabels/{instance}","href":"/pt-BR/playground/evolution-v2/label-findlabels"},{"title":"Adicionar ou remover etiqueta","openapi":"openapi.evolution-v2.pt.json POST /label/handleLabel/{instance}","href":"/pt-BR/playground/evolution-v2/label-handlelabel"},{"title":"Enviar template","openapi":"openapi.evolution-v2.pt.json POST /message/sendTemplate/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendtemplate"},{"title":"Enviar texto","openapi":"openapi.evolution-v2.pt.json POST /message/sendText/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendtext"},{"title":"Enviar mídia","openapi":"openapi.evolution-v2.pt.json POST /message/sendMedia/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendmedia"},{"title":"Enviar nota de vídeo","openapi":"openapi.evolution-v2.pt.json POST /message/sendPtv/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendptv"},{"title":"Enviar áudio de voz","openapi":"openapi.evolution-v2.pt.json POST /message/sendWhatsAppAudio/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendwhatsappaudio"},{"title":"Enviar status","openapi":"openapi.evolution-v2.pt.json POST /message/sendStatus/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendstatus"},{"title":"Enviar figurinha","openapi":"openapi.evolution-v2.pt.json POST /message/sendSticker/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendsticker"},{"title":"Enviar localização","openapi":"openapi.evolution-v2.pt.json POST /message/sendLocation/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendlocation"},{"title":"Enviar contato","openapi":"openapi.evolution-v2.pt.json POST /message/sendContact/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendcontact"},{"title":"Enviar reação","openapi":"openapi.evolution-v2.pt.json POST /message/sendReaction/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendreaction"},{"title":"Enviar enquete","openapi":"openapi.evolution-v2.pt.json POST /message/sendPoll/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendpoll"},{"title":"Enviar lista","openapi":"openapi.evolution-v2.pt.json POST /message/sendList/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendlist"},{"title":"Enviar botões","openapi":"openapi.evolution-v2.pt.json POST /message/sendButtons/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendbuttons"},{"title":"Enviar carrossel","openapi":"openapi.evolution-v2.pt.json POST /message/sendCarousel/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendcarousel"},{"title":"Obter URL da foto de perfil","openapi":"openapi.evolution-v2.pt.json POST /chat/fetchProfilePictureUrl/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchprofilepictureurl"},{"title":"Obter perfil comercial","openapi":"openapi.evolution-v2.pt.json POST /chat/fetchBusinessProfile/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchbusinessprofile"},{"title":"Obter perfil do contato","openapi":"openapi.evolution-v2.pt.json POST /chat/fetchProfile/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchprofile"},{"title":"Atualizar o próprio nome de exibição","openapi":"openapi.evolution-v2.pt.json POST /chat/updateProfileName/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprofilename"},{"title":"Atualizar o próprio texto de status","openapi":"openapi.evolution-v2.pt.json POST /chat/updateProfileStatus/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprofilestatus"},{"title":"Atualizar a própria foto de perfil","openapi":"openapi.evolution-v2.pt.json POST /chat/updateProfilePicture/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprofilepicture"},{"title":"Remover a própria foto de perfil","openapi":"openapi.evolution-v2.pt.json DELETE /chat/removeProfilePicture/{instance}","href":"/pt-BR/playground/evolution-v2/chat-removeprofilepicture"},{"title":"Obter configurações de privacidade","openapi":"openapi.evolution-v2.pt.json GET /chat/fetchPrivacySettings/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchprivacysettings"},{"title":"Atualizar configurações de privacidade","openapi":"openapi.evolution-v2.pt.json POST /chat/updatePrivacySettings/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprivacysettings"},{"title":"Atualizar configurações","openapi":"openapi.evolution-v2.pt.json POST /settings/set/{instance}","href":"/pt-BR/playground/evolution-v2/settings-set"},{"title":"Ler configurações","openapi":"openapi.evolution-v2.pt.json GET /settings/find/{instance}","href":"/pt-BR/playground/evolution-v2/settings-find"},{"title":"Configurar proxy","openapi":"openapi.evolution-v2.pt.json POST /proxy/set/{instance}","href":"/pt-BR/playground/evolution-v2/proxy-set"},{"title":"Ler proxy","openapi":"openapi.evolution-v2.pt.json GET /proxy/find/{instance}","href":"/pt-BR/playground/evolution-v2/proxy-find"},{"title":"Listar mídias armazenadas","openapi":"openapi.evolution-v2.pt.json POST /s3/getMedia/{instance}","href":"/pt-BR/playground/evolution-v2/s3-getmedia"},{"title":"Obter URL de mídia pré-assinada","openapi":"openapi.evolution-v2.pt.json POST /s3/getMediaUrl/{instance}","href":"/pt-BR/playground/evolution-v2/s3-getmediaurl"},{"title":"Criar template","openapi":"openapi.evolution-v2.pt.json POST /template/create/{instance}","href":"/pt-BR/playground/evolution-v2/template-create"},{"title":"Editar template","openapi":"openapi.evolution-v2.pt.json POST /template/edit/{instance}","href":"/pt-BR/playground/evolution-v2/template-edit"},{"title":"Excluir template","openapi":"openapi.evolution-v2.pt.json DELETE /template/delete/{instance}","href":"/pt-BR/playground/evolution-v2/template-delete"},{"title":"Listar templates","openapi":"openapi.evolution-v2.pt.json GET /template/find/{instance}","href":"/pt-BR/playground/evolution-v2/template-find"}]},{"group":"Meta Cloud API","pages":[{"title":"Enviar mensagem","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/messages","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-messages"},{"title":"Marcar como lida / digitando","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/messages/status","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-messages-status"},{"title":"Enviar mídia (upload)","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/media","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-media"},{"title":"Criar sessão de upload","openapi":"openapi.meta.pt.json POST /{appId}/uploads","href":"/pt-BR/playground/meta-cloud-api/post-appid-uploads"},{"title":"Buscar por id","openapi":"openapi.meta.pt.json GET /{id}","href":"/pt-BR/playground/meta-cloud-api/get-id"},{"title":"Atualizar por id","openapi":"openapi.meta.pt.json POST /{id}","href":"/pt-BR/playground/meta-cloud-api/post-id"},{"title":"Excluir por id","openapi":"openapi.meta.pt.json DELETE /{id}","href":"/pt-BR/playground/meta-cloud-api/delete-id"},{"title":"Listar templates","openapi":"openapi.meta.pt.json GET /{wabaId}/message_templates","href":"/pt-BR/playground/meta-cloud-api/get-wabaid-message-templates"},{"title":"Criar template","openapi":"openapi.meta.pt.json POST /{wabaId}/message_templates","href":"/pt-BR/playground/meta-cloud-api/post-wabaid-message-templates"},{"title":"Excluir template","openapi":"openapi.meta.pt.json DELETE /{wabaId}/message_templates","href":"/pt-BR/playground/meta-cloud-api/delete-wabaid-message-templates"},{"title":"Listar números","openapi":"openapi.meta.pt.json GET /{wabaId}/phone_numbers","href":"/pt-BR/playground/meta-cloud-api/get-wabaid-phone-numbers"},{"title":"Ler perfil comercial","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/whatsapp_business_profile","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-whatsapp-business-profile"},{"title":"Atualizar perfil comercial","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/whatsapp_business_profile","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-whatsapp-business-profile"},{"title":"Criar grupo","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/groups","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-groups"},{"title":"Listar grupos","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/groups","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-groups"},{"title":"Adicionar participantes","openapi":"openapi.meta.pt.json POST /{groupId}/participants","href":"/pt-BR/playground/meta-cloud-api/post-groupid-participants"},{"title":"Remover participantes","openapi":"openapi.meta.pt.json DELETE /{groupId}/participants","href":"/pt-BR/playground/meta-cloud-api/delete-groupid-participants"},{"title":"Promover a admin","openapi":"openapi.meta.pt.json POST /{groupId}/admins","href":"/pt-BR/playground/meta-cloud-api/post-groupid-admins"},{"title":"Rebaixar admin","openapi":"openapi.meta.pt.json DELETE /{groupId}/admins","href":"/pt-BR/playground/meta-cloud-api/delete-groupid-admins"},{"title":"Obter link de convite","openapi":"openapi.meta.pt.json GET /{groupId}/invites","href":"/pt-BR/playground/meta-cloud-api/get-groupid-invites"},{"title":"Redefinir link de convite","openapi":"openapi.meta.pt.json POST /{groupId}/invites","href":"/pt-BR/playground/meta-cloud-api/post-groupid-invites"},{"title":"Fixar mensagem no grupo","openapi":"openapi.meta.pt.json POST /{groupId}/pins","href":"/pt-BR/playground/meta-cloud-api/post-groupid-pins"},{"title":"Ação de chamada","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/calls","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-calls"},{"title":"Ler configurações de chamada","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/settings","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-settings"},{"title":"Atualizar configurações de chamada","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/settings","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-settings"},{"title":"Consultar permissão de chamada","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/call_permissions","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-call-permissions"}]}]},{"group":"Workspace","pages":[{"title":"Ler o workspace","sidebarTitle":"Ler o workspace","openapi":"openapi.pt.json GET /v1/workspace","href":"/pt-BR/playground/workspace/ler-workspace"},{"title":"Listar membros","sidebarTitle":"Listar membros","openapi":"openapi.pt.json GET /v1/workspace/members","href":"/pt-BR/playground/workspace/listar-membros"},{"title":"Convidar membro","sidebarTitle":"Convidar membro","openapi":"openapi.pt.json POST /v1/workspace/members","href":"/pt-BR/playground/workspace/convidar-membro"},{"title":"Reenviar convite","sidebarTitle":"Reenviar convite","openapi":"openapi.pt.json POST /v1/workspace/members/{id}/resend","href":"/pt-BR/playground/workspace/reenviar-convite"},{"title":"Mudar papel do membro","sidebarTitle":"Mudar papel do membro","openapi":"openapi.pt.json PATCH /v1/workspace/members/{id}","href":"/pt-BR/playground/workspace/mudar-papel-do-membro"},{"title":"Definir quais números o membro vê","sidebarTitle":"Definir números do membro","openapi":"openapi.pt.json PATCH /v1/workspace/members/{id}/numbers","href":"/pt-BR/playground/workspace/definir-numeros-do-membro"},{"title":"Remover membro","sidebarTitle":"Remover membro","openapi":"openapi.pt.json DELETE /v1/workspace/members/{id}","href":"/pt-BR/playground/workspace/remover-membro"},{"title":"Listar seus workspaces","sidebarTitle":"Listar seus workspaces","openapi":"openapi.pt.json GET /v1/workspaces","href":"/pt-BR/playground/workspace/listar-workspaces"},{"title":"Criar um workspace","sidebarTitle":"Criar um workspace","openapi":"openapi.pt.json POST /v1/workspaces","href":"/pt-BR/playground/workspace/criar-workspace"},{"title":"Listar as chaves do workspace","sidebarTitle":"Listar as chaves do workspace","openapi":"openapi.pt.json GET /v1/workspaces/{workspaceId}/api-keys","href":"/pt-BR/playground/workspace/listar-chaves-do-workspace"},{"title":"Criar uma chave de workspace com nome","sidebarTitle":"Criar uma chave de workspace com nome","openapi":"openapi.pt.json POST /v1/workspaces/{workspaceId}/api-keys","href":"/pt-BR/playground/workspace/criar-chave-do-workspace"},{"title":"Revogar uma chave de workspace com nome","sidebarTitle":"Revogar uma chave de workspace com nome","openapi":"openapi.pt.json DELETE /v1/workspaces/{workspaceId}/api-keys/{keyId}","href":"/pt-BR/playground/workspace/revogar-chave-do-workspace"},{"title":"Vincular o cartão compartilhado","sidebarTitle":"Vincular o cartão compartilhado","openapi":"openapi.pt.json PUT /v1/workspaces/{workspaceId}/shared-card","href":"/pt-BR/playground/workspace/vincular-cartao-compartilhado"},{"title":"Desvincular o cartão compartilhado","sidebarTitle":"Desvincular o cartão compartilhado","openapi":"openapi.pt.json DELETE /v1/workspaces/{workspaceId}/shared-card","href":"/pt-BR/playground/workspace/desvincular-cartao-compartilhado"},{"title":"Listar os webhooks do workspace","sidebarTitle":"Listar os webhooks do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks","href":"/pt-BR/playground/workspace/listar-webhooks-do-workspace"},{"title":"Criar webhook do workspace","sidebarTitle":"Criar webhook do workspace","openapi":"openapi.pt.json POST /v1/workspace/webhooks","href":"/pt-BR/playground/workspace/criar-webhook-do-workspace"},{"title":"Obter webhook do workspace","sidebarTitle":"Obter webhook do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks/{id}","href":"/pt-BR/playground/workspace/obter-webhook-do-workspace"},{"title":"Atualizar webhook do workspace","sidebarTitle":"Atualizar webhook do workspace","openapi":"openapi.pt.json PATCH /v1/workspace/webhooks/{id}","href":"/pt-BR/playground/workspace/atualizar-webhook-do-workspace"},{"title":"Excluir webhook do workspace","sidebarTitle":"Excluir webhook do workspace","openapi":"openapi.pt.json DELETE /v1/workspace/webhooks/{id}","href":"/pt-BR/playground/workspace/excluir-webhook-do-workspace"},{"title":"Listar entregas do webhook do workspace","sidebarTitle":"Listar entregas do webhook do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks/{id}/deliveries","href":"/pt-BR/playground/workspace/listar-entregas-do-webhook-do-workspace"},{"title":"Obter entrega do webhook do workspace","sidebarTitle":"Obter entrega do webhook do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks/{id}/deliveries/{deliveryId}","href":"/pt-BR/playground/workspace/obter-entrega-do-webhook-do-workspace"}]}]}]}]},"title":"Comprar linhas - Pilot Status","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CT9uE8Ip.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","clsx-DMKzROTp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-1ms6tsT-.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Ke9xIMFx.js"]}