Pular para o conteúdo
ZapinApi

Documentação da API

API REST sob https://api.zapinapi.duckdns.org/v1, JSON, autenticada por Authorization: Bearer. Eventos chegam ao seu sistema por webhook assinado com HMAC. Referência gerada do contrato OpenAPI (ZapinApi v1).

Situação do serviço: página de status.

Início rápido

  1. 1. Crie a conta e uma instância

    No painel, em Instâncias → Criar instância. O token da instância (wai_…) aparece uma única vez: guarde-o como senha.

  2. 2. Leia o QR Code

    A tela mostra o QR Code ao vivo. No celular: WhatsApp → Dispositivos conectados → Conectar dispositivo. Quando conectar, o estado vira connected.

  3. 3. Envie a primeira mensagem

    Chame POST /v1/instances/{id}/messages/text com o token no Authorization.

  4. 4. Receba eventos

    Configure a URL do webhook (painel ou PUT /v1/instances/{id}/webhook) e valide a assinatura HMAC de cada entrega.

Estado e envio de textocurl
export TOKEN=wai_...          # token da instância
export INSTANCE_ID=inst_...    # ID público da instância

# Estado (connected quando o QR Code foi lido)
curl "https://api.zapinapi.duckdns.org/v1/instances/$INSTANCE_ID/status" -H "Authorization: Bearer $TOKEN"

# Enviar texto
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/$INSTANCE_ID/messages/text" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"to": "5511999999999", "text": "Olá!"}'

Para automatizar a criação de instâncias, use uma API key (crie em Painel → Integração):

Criar instância e baixar o QR Codecurl
# Com uma API key da organização (escopo instances:manage)
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Atendimento"}'
# 201 {"id":"inst_…","status":"disconnected","token":"wai_…", ...}  ← token só aqui

curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/$INSTANCE_ID/connect" -H "Authorization: Bearer $API_KEY"
curl "https://api.zapinapi.duckdns.org/v1/instances/$INSTANCE_ID/qrcode" -H "Authorization: Bearer $API_KEY" -o qr.png

Autenticação

Credenciais
CredencialFormatoPara quê
Token da instânciawai_<id>_…Integrações que operam um número: envio, conversas, contatos, grupos, webhook e estado daquela instância. Outra instância responde 404.
API key da organizaçãowa_live_…Automação da conta: criar e apagar instâncias, ler assinatura. Escopos: messages:send, messages:read, groups:write, contacts:read, instances:manage, billing:read. Aceita também X-Api-Key.
Sessão do painelJWT (10 min)Usada pelo painel. API keys e equipe só podem ser geridas com ela.

Credenciais aparecem uma única vez (ao criar ou rotacionar). No banco ficam só como hash. Escopo ausente responde 403 insufficient_scope.

Webhooks

Configure por instância a URL (https pública), os eventos (nenhum = todos) e receba um segredo whsec_… exibido uma vez. Cada evento é um POST com corpo JSON e os cabeçalhos:

Cabeçalhos do webhook
CabeçalhoValor
X-Webhook-IdeventId (estável entre tentativas)
Idempotency-KeyeventId
X-Webhook-Timestampsegundos Unix desta tentativa
X-Webhook-Signaturesha256= + hex(HMAC-SHA256(segredo, timestamp + "." + corpo cru))
X-Instance-IdID público da instância
X-Webhook-Event / X-Webhook-Attemptnome do evento / número da tentativa (informativos)
Corpo (envelope)json
{
  "eventId": "8f0d1c9e-5d0b-4a43-9a52-1f7d2f3c6b11",
  "event": "message.received",
  "instanceId": "inst_3b7f0c2a9d8e4f6a8b1c2d3e4f5a6b7c",
  "sequence": 42,
  "timestamp": "2026-10-21T05:17:45.123Z",
  "data": {
    "messageId": "3EB0C4F1A2B3", "chatId": "5511988887777", "from": "5511988887777",
    "fromMe": false, "isGroup": false, "pushName": "Ana", "type": "text", "text": "Olá!",
    "timestamp": "2026-10-21T05:17:44Z"
  }
}
Eventos
EventoQuando
message.received / message.sentmensagem recebida ou enviada (texto, mídia, localização, contato, enquete)
message.statusentregue, lida ou reproduzida
message.reactionreação a uma mensagem
poll.votevoto em enquete
button.reply / list.replyresposta a botões ou lista
group.participants.updatedparticipante adicionado, removido, promovido ou rebaixado
instance.connected / instance.disconnected / instance.qrcodemudança de estado e QR Code novo (o QR em si só por GET …/qrcode)
  • Só HTTP 2xx confirma. 3xx (redirecionamentos não são seguidos), 4xx, 5xx, timeout e erro de rede voltam a tentar com backoff exponencial até 5 min.
  • Depois de 10 falhas a entrega vai para a DLQ e só é reenviada sob pedido (painel ou POST …/deliveries/{eventId}/retry).
  • Pelo menos uma vez: deduplique por eventId; a ordem de chegada não é garantida, ordene por sequence.
  • A URL não pode apontar para rede privada, loopback ou metadados de nuvem.
  • Rotacionar o segredo vale a partir da próxima tentativa, sem período de convivência.

Valide a assinatura sobre o corpo cru (antes de interpretar o JSON) e recuse timestamps com mais de 5 minutos de diferença:

Validação em Nodejs
import { createHmac, timingSafeEqual } from "node:crypto";

// rawBody: o corpo exatamente como recebido (string/Buffer), antes de JSON.parse
export function verify(secret, headers, rawBody) {
  const ts = headers["x-webhook-timestamp"];
  const sig = headers["x-webhook-signature"] ?? "";
  if (!/^\d+$/.test(ts ?? "") || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false; // replay
  const expected = "sha256=" + createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex");
  return expected.length === sig.length && timingSafeEqual(Buffer.from(expected), Buffer.from(sig));
}
Validação em C#csharp
using System.Security.Cryptography;
using System.Text;

static bool Verify(string secret, string timestamp, string signature, byte[] rawBody)
{
    if (!long.TryParse(timestamp, out var ts) ||
        Math.Abs(DateTimeOffset.UtcNow.ToUnixTimeSeconds() - ts) > 300) return false; // replay
    using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
    var prefix = Encoding.UTF8.GetBytes(timestamp + ".");
    var data = new byte[prefix.Length + rawBody.Length];
    prefix.CopyTo(data, 0);
    rawBody.CopyTo(data, prefix.Length);
    var expected = Encoding.ASCII.GetBytes("sha256=" + Convert.ToHexString(hmac.ComputeHash(data)).ToLowerInvariant());
    return CryptographicOperations.FixedTimeEquals(expected, Encoding.ASCII.GetBytes(signature ?? ""));
}

Erros

Todo erro é application/problem+json com type, title, status, detail e code. Trate pelo code; o texto pode mudar.

Exemplohttp
HTTP/1.1 402 Payment Required
Content-Type: application/problem+json

{
  "type": "https://docs.whatsapp-api.invalid/errors/instance_limit_reached",
  "title": "Payment Required",
  "status": 402,
  "detail": "Limite de instâncias do plano atingido.",
  "code": "instance_limit_reached"
}
Erros comuns
StatuscodeSignificado
400invalid_body, text_required, invalid_recipient…Corpo ou parâmetro inválido. Corrija antes de repetir.
401unauthorizedCredencial ausente, inválida, revogada ou expirada.
402instance_limit_reached, subscription_required, subscription_suspendedAssinatura não permite (cota de instâncias, sem plano, suspensa).
403insufficient_scope, pro_feature_required, instance_token_not_allowedCredencial sem permissão; recurso PRO traz upgradeUrl.
404instance_not_foundInexistente — ou de outra organização (resposta idêntica).
409instance_not_connected, idempotency_request_in_progressEstado não permite agora.
422idempotency_key_reusedMesma Idempotency-Key com corpo diferente.
429rate_limitedAcima do limite por minuto. Respeite Retry-After.
503 / 504node_unavailable, node_timeoutServidor da instância fora ou lento. 504 = desfecho incerto: não reenvie às cegas.

Paginação

Listas usam cursor: limit e after na consulta, nextCursor na resposta. Passe o nextCursor como after até ele vir null (ou 0 em conversas e entregas). Entregas aceitam também status (pending|processing|delivered|dead).

Cursorhttp
GET /v1/instances?limit=50
→ {"items":[…], "nextCursor":"inst_…"}

GET /v1/instances?limit=50&after=inst_…
→ {"items":[…], "nextCursor":null}      # fim

Idempotência

Envie Idempotency-Key (até 255 caracteres; um UUID por mensagem) em todo POST …/messages/* e DELETE …/messages/{messageId}. Por 24 h, repetir a mesma chave com o mesmo pedido devolve a mesma resposta com Idempotent-Replayed: true, sem novo envio. Corpo diferente: 422 idempotency_key_reused; ainda em andamento: 409 idempotency_request_in_progress. Respostas 4xx liberam a chave.

Um 504 é desfecho incerto (a mensagem pode ter saído): repita com a mesma chave, nunca com uma nova.

Limites

Limites por plano
PlanoRequisiçõesInstâncias
Teste grátis60 req/min1 instância
LITE60 req/minconforme a quantidade contratada
PRO120 req/minconforme a quantidade contratada
Escala300 req/minsob contrato
  • O limite é por organização. Acima dele: 429 rate_limited com Retry-After (segundos).
  • Assinatura sem pagamento, suspensa ou sem vaga: 402. Recursos PRO (enquete, lista, botões, Pix) num plano sem PRO: 403 pro_feature_required com upgradeUrl.
  • Corpo da requisição até 96 MiB; mídia até 64 MiB (em base64, ~86 MiB).
  • O QR Code se renova sozinho (60 s o primeiro, 20 s os seguintes, 6 códigos); esgotados, a instância fica disconnected com reason=qr_expired e um novo connect recomeça.
  • Uso responsável: nada de spam ou disparo em massa. O WhatsApp pode banir o número.

Referência

Clique numa rota para ver parâmetros, exemplo e respostas. {id} é o ID público da instância (inst_…).

Instâncias

Criar, conectar por QR Code, consultar estado, rotacionar token e apagar.

GET/v1/instances/{id}/statusEstado vivo da instancia no no

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/status
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/status" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/qrcodeQR Code de pareamento (image/png, ou JSON com ?format=base64)

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/qrcode
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/qrcode" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK (image/png)
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/connectConectar (gera QR se nao pareada)

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/connect
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/connect" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/disconnectDesconectar mantendo a sessao

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/disconnect
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/disconnect" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/logoutDesvincular o aparelho e apagar a sessao

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/logout
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/logout" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instancesListar instancias (after/nextCursor)

Autenticação: API key (instances:manage) ou sessão do painel

Parâmetros de GET /v1/instances
ParâmetroOndeTipoDescrição
afterquerystring
limitqueryinteger int32
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/instancesCriar instancia (inicia o teste gratis na primeira; token exibido uma vez)

Autenticação: API key (instances:manage) ou sessão do painel

Corpo (JSON): name: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Minha integração"}'
  • 201 Created
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}Consultar instancia

Autenticação: API key (instances:manage) ou sessão do painel

Parâmetros de GET /v1/instances/{id}
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
DELETE/v1/instances/{id}Apagar instancia (desconecta, libera a vaga e purga no no)

Autenticação: API key (instances:manage) ou sessão do painel

Parâmetros de DELETE /v1/instances/{id}
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID" \
  -H "Authorization: Bearer $TOKEN"
  • 204 No Content
POST/v1/instances/{id}/tokenRotacionar o token da instancia (o anterior deixa de valer; o novo aparece uma vez)

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/token
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/token" \
  -H "Authorization: Bearer $TOKEN"
  • 201 Created

Mensagens

Envio (aceita Idempotency-Key), apagar, marcar como lida e presença.

POST/v1/instances/{id}/messages/textTexto

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/text
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/text" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","text":"Olá! Seu pedido saiu para entrega."}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/imageImagem (URL ou base64)

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/image
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/image" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","url":"https://exemplo.com.br/foto.jpg","caption":"Comprovante"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/audioAudio ou nota de voz

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/audio
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/audio" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","url":"https://exemplo.com.br/audio.ogg","ptt":true}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/videoVideo

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/video
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/video" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","url":"https://exemplo.com.br/video.mp4","caption":"Tutorial"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/documentDocumento

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/document
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/document" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","url":"https://exemplo.com.br/boleto.pdf","fileName":"boleto.pdf"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/stickerFigurinha

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/sticker
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/sticker" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","url":"https://exemplo.com.br/figurinha.webp"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/locationLocalizacao

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/location
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/location" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","latitude":-23.5614,"longitude":-46.6559,"name":"Loja Paulista"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/contactContato (vCard)

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/contact
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/contact" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","name":"Suporte","phone":"5511988887777"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/replyResponder citando

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/reply
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/reply" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","text":"Combinado!","messageId":"3EB0C4F1A2B3"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/reactReagir

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/react
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/react" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","messageId":"3EB0C4F1A2B3","reaction":"👍"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/forwardEncaminhar

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/forward
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/forward" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","messageId":"3EB0C4F1A2B3"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/pollEnquete (PRO)PRO

Escopo exigido de API key ou token de instancia: `messages:send`. Recurso PRO: plano sem PRO recebe 403 pro_feature_required com upgradeUrl.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/poll
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/poll" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","question":"Melhor horário?","options":["Manhã","Tarde"],"selectableCount":1}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/listLista/menu (PRO)PRO

Escopo exigido de API key ou token de instancia: `messages:send`. Recurso PRO: plano sem PRO recebe 403 pro_feature_required com upgradeUrl.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/list
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/list" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","text":"Escolha uma opção","buttonText":"Ver opções","sections":[{"title":"Atendimento","rows":[{"id":"2via","title":"2ª via do boleto"},{"id":"humano","title":"Falar com atendente"}]}]}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/buttonsBotoes de acao (PRO)PRO

Escopo exigido de API key ou token de instancia: `messages:send`. Recurso PRO: plano sem PRO recebe 403 pro_feature_required com upgradeUrl.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/buttons
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/buttons" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","text":"Acompanhe seu pedido","buttons":[{"type":"url","text":"Rastrear","url":"https://exemplo.com.br/r/123"}]}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/reply-buttonsBotoes de resposta (PRO)PRO

Escopo exigido de API key ou token de instancia: `messages:send`. Recurso PRO: plano sem PRO recebe 403 pro_feature_required com upgradeUrl.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/reply-buttons
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/reply-buttons" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","text":"Confirma a visita amanhã?","buttons":[{"id":"sim","text":"Sim"},{"id":"nao","text":"Não"}]}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/messages/pixCobranca Pix (PRO)PRO

Escopo exigido de API key ou token de instancia: `messages:send`. Recurso PRO: plano sem PRO recebe 403 pro_feature_required com upgradeUrl.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/messages/pix
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/pix" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","amount":12990,"merchantName":"Minha Loja","pixKey":"financeiro@exemplo.com.br","pixKeyType":"EMAIL"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
DELETE/v1/instances/{id}/messages/{messageId}Apagar para todos

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de DELETE /v1/instances/{id}/messages/{messageId}
ParâmetroOndeTipoDescrição
id *pathstring
Idempotency-KeyheaderstringAte 255 caracteres. Mesma chave + mesmo pedido em 24 h devolve a mesma resposta (Idempotent-Replayed: true); pedido diferente → 422.
messageId *pathstring
Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/messages/$MESSAGEID" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/readMarcar como lidas

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/read
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/read" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","messageIds":["3EB0C4F1A2B3"]}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/presencePresenca (digitando, gravando, online)

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/presence
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/presence" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"state":"typing","to":"5511999999999"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json

Webhook e entregas

Configuração do webhook, log de entregas e reenvio (inclusive da DLQ).

GET/v1/instances/{id}/webhookConfiguracao do webhook (sem o segredo)

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/webhook
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/webhook" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
PUT/v1/instances/{id}/webhookConfigurar o webhook; o segredo aparece uma vez

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de PUT /v1/instances/{id}/webhook
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X PUT "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/webhook" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://seu-sistema.com.br/webhooks/whatsapp","events":["message.received","message.status"],"rotateSecret":false}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/deliveriesLog de entregas (after/nextCursor)

Escopo exigido de API key ou token de instancia: `messages:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/deliveries
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/deliveries" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/deliveries/{eventId}Uma entrega

Escopo exigido de API key ou token de instancia: `messages:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/deliveries/{eventId}
ParâmetroOndeTipoDescrição
id *pathstring
eventId *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/deliveries/$EVENTID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/deliveries/{eventId}/retryReenviar entrega (inclusive da DLQ)

Escopo exigido de API key ou token de instancia: `instances:manage`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/deliveries/{eventId}/retry
ParâmetroOndeTipoDescrição
id *pathstring
eventId *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/deliveries/$EVENTID/retry" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json

Conversas

Histórico recebido e enviado, paginado por cursor.

GET/v1/instances/{id}/chatsConversas (after/nextCursor)

Escopo exigido de API key ou token de instancia: `messages:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/chats
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/chats" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/chats/{phone}/messagesMensagens de uma conversa (after/nextCursor)

Escopo exigido de API key ou token de instancia: `messages:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/chats/{phone}/messages
ParâmetroOndeTipoDescrição
id *pathstring
phone *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/chats/$PHONE/messages" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json

Contatos

Contatos, verificação de número e bloqueio.

GET/v1/instances/{id}/contactsContatos

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/contacts
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/contacts" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/contacts/{phone}Um contato

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/contacts/{phone}
ParâmetroOndeTipoDescrição
id *pathstring
phone *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/contacts/$PHONE" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/contacts/{phone}/existsNumero tem WhatsApp?

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/contacts/{phone}/exists
ParâmetroOndeTipoDescrição
id *pathstring
phone *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/contacts/$PHONE/exists" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/contacts/{phone}/pictureFoto do contato

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/contacts/{phone}/picture
ParâmetroOndeTipoDescrição
id *pathstring
phone *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/contacts/$PHONE/picture" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/contacts/{phone}/blockBloquear

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/contacts/{phone}/block
ParâmetroOndeTipoDescrição
id *pathstring
phone *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/contacts/$PHONE/block" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/contacts/{phone}/unblockDesbloquear

Escopo exigido de API key ou token de instancia: `messages:send`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/contacts/{phone}/unblock
ParâmetroOndeTipoDescrição
id *pathstring
phone *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/contacts/$PHONE/unblock" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json

Grupos

Criar e administrar grupos.

GET/v1/instances/{id}/groupsGrupos

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/groups
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/groupsCriar grupo

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/groups
ParâmetroOndeTipoDescrição
id *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Clientes VIP","participants":["5511999999999"]}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/groups/{gid}Um grupo com participantes

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/groups/{gid}
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
PUT/v1/instances/{id}/groups/{gid}/subjectAssunto

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de PUT /v1/instances/{id}/groups/{gid}/subject
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X PUT "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/subject" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"subject":"Clientes VIP 2026"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
PUT/v1/instances/{id}/groups/{gid}/descriptionDescricao

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de PUT /v1/instances/{id}/groups/{gid}/description
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X PUT "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/description" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"description":"Avisos e promoções"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
GET/v1/instances/{id}/groups/{gid}/pictureFoto do grupo

Escopo exigido de API key ou token de instancia: `contacts:read`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de GET /v1/instances/{id}/groups/{gid}/picture
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/picture" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
PUT/v1/instances/{id}/groups/{gid}/pictureTrocar a foto

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de PUT /v1/instances/{id}/groups/{gid}/picture
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X PUT "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/picture" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://exemplo.com.br/logo.png"}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
PUT/v1/instances/{id}/groups/{gid}/settingsConfiguracoes (announce, locked)

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de PUT /v1/instances/{id}/groups/{gid}/settings
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X PUT "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/settings" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"announce":true,"locked":false}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/groups/{gid}/participantsParticipantes (add, remove, promote, demote)

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/groups/{gid}/participants
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/participants" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action":"add","participants":["5511999999999"]}'
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/groups/{gid}/invite-link/resetGerar outro link de convite

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/groups/{gid}/invite-link/reset
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/invite-link/reset" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json
POST/v1/instances/{id}/groups/{gid}/leaveSair do grupo

Escopo exigido de API key ou token de instancia: `groups:write`.

Autenticação: API key, token da instância (wai_…) ou sessão do painel

Parâmetros de POST /v1/instances/{id}/groups/{gid}/leave
ParâmetroOndeTipoDescrição
id *pathstring
gid *pathstring
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/instances/inst_SEU_ID/groups/$GID/leave" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 401 Unauthorized · problem+json
  • 402 Payment Required · problem+json
  • 403 Forbidden · problem+json
  • 404 Not Found · problem+json
  • 429 Too Many Requests · problem+json
  • 503 Service Unavailable · problem+json

API keys

Chaves da organização (exigem sessão do painel).

GET/v1/api-keysGET /v1/api-keys

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/api-keys" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/api-keysPOST /v1/api-keys

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): name: string, scopes: string[], expiresInDays: integer int32

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/api-keys" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Minha integração","scopes":["messages:send"],"expiresInDays":90}'
  • 200 OK
DELETE/v1/api-keys/{id}DELETE /v1/api-keys/{id}

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de DELETE /v1/api-keys/{id}
ParâmetroOndeTipoDescrição
id *pathstring uuid
Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/api-keys/inst_SEU_ID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/api-keys/{id}/rotatePOST /v1/api-keys/{id}/rotate

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de POST /v1/api-keys/{id}/rotate
ParâmetroOndeTipoDescrição
id *pathstring uuid

Corpo (JSON): gracePeriodHours: integer int32

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/api-keys/inst_SEU_ID/rotate" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"gracePeriodHours":24}'
  • 200 OK

Assinatura e faturas

Planos, assinatura e faturas (API key com billing:read para leitura).

GET/v1/plansGET /v1/plans

Autenticação: Pública

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/plans"
  • 200 OK
GET/v1/subscriptions/currentGET /v1/subscriptions/current

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/subscriptions/current" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/subscriptions/trialPOST /v1/subscriptions/trial

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/subscriptions/trial" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/subscriptionsPOST /v1/subscriptions

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): plan: string, quantity: integer int32, name: string, cpfCnpj: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/subscriptions" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan":"...","quantity":1,"name":"Minha integração","cpfCnpj":"..."}'
  • 200 OK
PATCH/v1/subscriptionsPATCH /v1/subscriptions

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): plan: string, quantity: integer int32

Exemplocurl
curl -X PATCH "https://api.zapinapi.duckdns.org/v1/subscriptions" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan":"...","quantity":1}'
  • 200 OK
DELETE/v1/subscriptionsDELETE /v1/subscriptions

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/subscriptions" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
GET/v1/invoicesGET /v1/invoices

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/invoices" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
GET/v1/invoices/{id}/pixGET /v1/invoices/{id}/pix

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de GET /v1/invoices/{id}/pix
ParâmetroOndeTipoDescrição
id *pathstring uuid
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/invoices/inst_SEU_ID/pix" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK

Organização e equipe

Organização ativa, membros e convites.

POST/v1/organizations/{id}/exportPedir exportacao dos dados da organizacao (LGPD; link de uso unico por 24 h)

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de POST /v1/organizations/{id}/export
ParâmetroOndeTipoDescrição
id *pathstring uuid
Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/organizations/inst_SEU_ID/export" \
  -H "Authorization: Bearer $TOKEN"
  • 202 Accepted
  • 403 Forbidden · problem+json
  • 409 Conflict · problem+json
GET/v1/organizations/{id}/exports/{exportId}Estado de uma exportacao (sem o link)

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de GET /v1/organizations/{id}/exports/{exportId}
ParâmetroOndeTipoDescrição
id *pathstring uuid
exportId *pathstring uuid
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/organizations/inst_SEU_ID/exports/$EXPORTID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
GET/v1/organizationGET /v1/organization

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/organization" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/invitations/acceptPOST /v1/invitations/accept

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): token: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/invitations/accept" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"token":"..."}'
  • 200 OK
POST/v1/auth/switch-organizationPOST /v1/auth/switch-organization

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): organizationId: string uuid, refreshToken: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/switch-organization" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"organizationId":"...","refreshToken":"..."}'
  • 200 OK
GET/v1/organizations/{id}/membersGET /v1/organizations/{id}/members

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de GET /v1/organizations/{id}/members
ParâmetroOndeTipoDescrição
id *pathstring uuid
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/organizations/inst_SEU_ID/members" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/organizations/{id}/membersPOST /v1/organizations/{id}/members

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de POST /v1/organizations/{id}/members
ParâmetroOndeTipoDescrição
id *pathstring uuid

Corpo (JSON): email: string, role: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/organizations/inst_SEU_ID/members" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@exemplo.com.br","role":"..."}'
  • 200 OK
DELETE/v1/organizations/{id}/members/{userId}DELETE /v1/organizations/{id}/members/{userId}

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de DELETE /v1/organizations/{id}/members/{userId}
ParâmetroOndeTipoDescrição
id *pathstring uuid
userId *pathstring uuid
Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/organizations/inst_SEU_ID/members/$USERID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
DELETE/v1/organizations/{id}/invitations/{invitationId}DELETE /v1/organizations/{id}/invitations/{invitationId}

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de DELETE /v1/organizations/{id}/invitations/{invitationId}
ParâmetroOndeTipoDescrição
id *pathstring uuid
invitationId *pathstring uuid
Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/organizations/inst_SEU_ID/invitations/$INVITATIONID" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK

Conta

Usuário, sessões ativas e exclusão de conta.

GET/v1/usageConsumo da organizacao: requisicoes e mensagens enviadas por instancia e por mes (from/to = AAAA-MM, padrao o mes atual; escopo billing:read)

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de GET /v1/usage
ParâmetroOndeTipoDescrição
fromquerystring
toquerystring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/usage" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 400 Bad Request · problem+json
  • 401 Unauthorized · problem+json
  • 403 Forbidden · problem+json
GET/v1/me/sessionsSessoes ativas (dispositivos conectados)

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/me/sessions" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
DELETE/v1/me/sessions/{familyId}Encerrar uma sessao

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de DELETE /v1/me/sessions/{familyId}
ParâmetroOndeTipoDescrição
familyId *pathstring uuid
Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/me/sessions/$FAMILYID" \
  -H "Authorization: Bearer $TOKEN"
  • 204 No Content
GET/v1/meGET /v1/me

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/me" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
DELETE/v1/meExcluir a conta (LGPD)

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): confirmEmail: string

Exemplocurl
curl -X DELETE "https://api.zapinapi.duckdns.org/v1/me" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"confirmEmail":"voce@exemplo.com.br"}'
  • 204 No Content
  • 409 Conflict · problem+json
POST/v1/me/passwordPOST /v1/me/password

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Corpo (JSON): currentPassword: string, newPassword: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/me/password" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"currentPassword":"sua-senha-forte","newPassword":"sua-senha-forte"}'
  • 200 OK

Autenticação

Cadastro, login, renovação e recuperação de senha (usadas pelo painel).

POST/v1/auth/registerPOST /v1/auth/register

Autenticação: Pública

Corpo (JSON): email: string, password: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/register" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@exemplo.com.br","password":"sua-senha-forte"}'
  • 200 OK
POST/v1/auth/loginPOST /v1/auth/login

Autenticação: Pública

Corpo (JSON): email: string, password: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/login" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@exemplo.com.br","password":"sua-senha-forte"}'
  • 200 OK
POST/v1/auth/refreshPOST /v1/auth/refresh

Autenticação: Pública

Corpo (JSON): refreshToken: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/refresh" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"refreshToken":"..."}'
  • 200 OK
POST/v1/auth/logoutPOST /v1/auth/logout

Autenticação: Pública

Corpo (JSON): refreshToken: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/logout" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"refreshToken":"..."}'
  • 200 OK
POST/v1/auth/logout-allPOST /v1/auth/logout-all

Autenticação: Pública

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/logout-all" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/auth/email/confirmPOST /v1/auth/email/confirm

Autenticação: Pública

Corpo (JSON): token: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/email/confirm" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"token":"..."}'
  • 200 OK
POST/v1/auth/email/resendPOST /v1/auth/email/resend

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/email/resend" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/auth/password/forgotPOST /v1/auth/password/forgot

Autenticação: Pública

Corpo (JSON): email: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/password/forgot" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@exemplo.com.br"}'
  • 200 OK
POST/v1/auth/password/resetPOST /v1/auth/password/reset

Autenticação: Pública

Corpo (JSON): token: string, newPassword: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/password/reset" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"token":"...","newPassword":"sua-senha-forte"}'
  • 200 OK
GET/v1/auth/oauth/{provider}/startGET /v1/auth/oauth/{provider}/start

Autenticação: Pública

Parâmetros de GET /v1/auth/oauth/{provider}/start
ParâmetroOndeTipoDescrição
provider *pathstring
redirect_uriquerystring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/auth/oauth/$PROVIDER/start" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
GET/v1/auth/oauth/{provider}/callbackGET /v1/auth/oauth/{provider}/callback

Autenticação: Pública

Parâmetros de GET /v1/auth/oauth/{provider}/callback
ParâmetroOndeTipoDescrição
provider *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/auth/oauth/$PROVIDER/callback" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
POST/v1/auth/oauth/{provider}/exchangePOST /v1/auth/oauth/{provider}/exchange

Autenticação: Pública

Parâmetros de POST /v1/auth/oauth/{provider}/exchange
ParâmetroOndeTipoDescrição
provider *pathstring

Corpo (JSON): code: string, state: string, codeVerifier: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/oauth/$PROVIDER/exchange" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"...","state":"...","codeVerifier":"..."}'
  • 200 OK
POST/v1/auth/oauth/link/confirmPOST /v1/auth/oauth/link/confirm

Autenticação: Pública

Corpo (JSON): token: string

Exemplocurl
curl -X POST "https://api.zapinapi.duckdns.org/v1/auth/oauth/link/confirm" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"token":"..."}'
  • 200 OK

Sistema

Saúde e chaves públicas de verificação do JWT.

GET/v1/exports/{token}Baixar a exportacao (o token do link e a credencial; uso unico)

Autenticação: Bearer (sessão do painel ou API key, conforme o escopo)

Parâmetros de GET /v1/exports/{token}
ParâmetroOndeTipoDescrição
token *pathstring
Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/v1/exports/$TOKEN" \
  -H "Authorization: Bearer $TOKEN"
  • 200 OK
  • 202 Accepted
  • 404 Not Found · problem+json
  • 410 Gone · problem+json
GET/healthGET /health

Autenticação: Pública

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/health"
  • 200 OK
GET/.well-known/jwks.jsonGET /.well-known/jwks.json

Autenticação: Pública

Exemplocurl
curl -X GET "https://api.zapinapi.duckdns.org/.well-known/jwks.json"
  • 200 OK