@wabox/sdk é o pacote oficial para TypeScript e JavaScript. Ele é gerado a partir do OpenAPI da API, então cada rota, body, parâmetro e resposta desta referência tem o tipo correspondente no editor. Toda página de endpoint mostra o equivalente em SDK na aba TypeScript.
Enviar e consultar
/send-text, /chats/{phone}, /groups): o SDK monta https://api.wabox.me/instances/{instance_id}/token/{token} por você. Parâmetros de rota e de query vão em params:
{ data, error, response }. data vem tipado quando a resposta é 2xx, error vem tipado como { error: { code, message } } nos demais casos, e response é o Response cru, com status e headers como Retry-After.
Preferir exceções
unwrap() devolve só o data e lança WaboxError (code, status, details) quando a API responde erro:
Receber webhooks
constructWebhookEvent verifica o X-Wabox-Signature (HMAC-SHA256 sobre o corpo cru, com janela de 5 minutos contra replay) e devolve o evento tipado, discriminado por type:
WaboxWebhookError.reason diz o motivo: invalid_signature (assinatura errada, ausente ou t fora da janela), invalid_json ou unknown_event. Se você só quer a verificação, use verifyWebhookSignature(secret, header, rawBody). Para processar sem verificar (não recomendado), use parseWebhookEvent(rawBody).
O secret (whsec_…) é por instância, ou do workspace quando a instância herda os webhooks dele. Você o encontra em GET /webhooks ou no painel, em Webhooks e configurações gerais.
Account API
Contas com plano criam, atualizam e excluem instâncias com uma API key do workspace, até o número de slots do plano (veja Account API). A key precisa das permissões das rotas que você chama, aquiinstances:read e instances:write. Sem elas, a API responde 403 insufficient_scope:
Tipos
O SDK exporta como tipos todos os schemas nomeados da referência, comoInstance, Chat, Contact, Group, SendResponse, QueueItem, WebhookReceived e WebhookDelivery, além de WebhookEvent (a união de todos os eventos). Para tipar o resto, use InstancePaths/AccountPaths (todas as rotas) e Schemas:
Opções
O SDK não faz retry nem fila. Trate
429 (Retry-After), 409 instance_not_connected e 402 como descrito em Rate limits e erros. Envios não são idempotentes, então confira GET /queue antes de repetir uma chamada que falhou por rede.