Pareamento

Conectar o número: QR Code, código por telefone ou passkey.

Basehttps://app.onzap.io/v1/instances/{instanceId}AuthX-Instance-Token: SEU_TOKEN

QR Code para conectar

GET/v1/instances/{instanceId}/qr-code
API OnZap

QR Code para ler em WhatsApp → Aparelhos conectados, disponível com a instância em SCAN_QR_CODE. format=image devolve PNG; format=raw, o texto do QR. O código muda a cada ~20 s.

Parâmetros de query

formatstringobrigatório
Requisição
curl "https://app.onzap.io/v1/instances/SUA_INSTANCIA/qr-code?format=VALOR" \
  -H "X-Instance-Token: $ONZAP_TOKEN"
Resposta
{
  "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
  "mimetype": "image/jpeg",
  "value": "valor"
}

Código de pareamento por telefone

POST/v1/instances/{instanceId}/pairing-code
API OnZap

Alternativa ao QR Code: gera um código de 8 caracteres (ex.: KFXC-T63T) para digitar no celular (WhatsApp → Aparelhos conectados → Conectar aparelho → Conectar com número de telefone). Envie em phoneNumber o número do WhatsApp que vai ser conectado, com DDI e DDD. Só funciona com a instância esperando conexão (SCAN_QR_CODE); o código vale por poucos minutos. No Brasil, se o celular disser que o número está errado, peça de novo sem o nono dígito (contas antigas podem estar registradas assim). Limitado a poucos pedidos a cada 10 minutos.

Corpo (JSON)

phoneNumberstringobrigatório
Mobile phone number in international format
methodstringopcional
How would you like to receive the one time code for registration? |sms|voice. Leave empty for Web pairing.
Requisição
curl -X POST "https://app.onzap.io/v1/instances/SUA_INSTANCIA/pairing-code" \
  -H "X-Instance-Token: $ONZAP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "5511999999999"
  }'
Resposta

Sucesso

Desafio de passkey pendente

GET/v1/instances/{instanceId}/passkey/challenge
API OnZap
Requisição
curl "https://app.onzap.io/v1/instances/SUA_INSTANCIA/passkey/challenge" \
  -H "X-Instance-Token: $ONZAP_TOKEN"
Resposta
{
  "allowCredentials": [
    {
      "id": "3EB0C0A1B2C3D4E5F6",
      "transports": [
        "internal",
        "hybrid"
      ],
      "type": "public-key"
    }
  ],
  "challenge": "texto",
  "extensions": {},
  "rpId": "web.whatsapp.com",
  "timeout": 60000,
  "userVerification": "required"
}

Enviar assinatura da passkey

POST/v1/instances/{instanceId}/passkey
API OnZap

Corpo (JSON)

idstringobrigatório
Credential ID, as returned by navigator.credentials.get().toJSON().
rawIdstringobrigatório
Base64url-encoded raw credential ID.
responseobjectobrigatório
response.authenticatorDatastringobrigatório
Base64url-encoded authenticatorData from the authenticator.
response.clientDataJSONstringobrigatório
Base64url-encoded clientDataJSON from the authenticator.
response.signaturestringobrigatório
Base64url-encoded signature from the authenticator.
response.userHandlestringopcional
Base64url-encoded user handle, if returned by the authenticator.
typestringobrigatório
Always "public-key".
Requisição
curl -X POST "https://app.onzap.io/v1/instances/SUA_INSTANCIA/passkey" \
  -H "X-Instance-Token: $ONZAP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "3EB0C0A1B2C3D4E5F6",
    "rawId": "1234567890",
    "response": {
      "authenticatorData": "texto",
      "clientDataJSON": "texto",
      "signature": "t=1767225600,v1=5d41402abc4b2a76b9719d911017c592…"
    },
    "type": "public-key"
  }'
Resposta

Sucesso

Código de confirmação da passkey

GET/v1/instances/{instanceId}/passkey/confirmation
API OnZap
Requisição
curl "https://app.onzap.io/v1/instances/SUA_INSTANCIA/passkey/confirmation" \
  -H "X-Instance-Token: $ONZAP_TOKEN"
Resposta
{
  "code": "1234"
}

Confirmar pareamento por passkey

POST/v1/instances/{instanceId}/passkey/confirm
API OnZap
Requisição
curl -X POST "https://app.onzap.io/v1/instances/SUA_INSTANCIA/passkey/confirm" \
  -H "X-Instance-Token: $ONZAP_TOKEN"
Resposta

Sucesso