> ## Documentation Index
> Fetch the complete documentation index at: https://developer.zapsterapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificação de Números em Lote (Sem Instância)

> Verifica em lote, sem instância conectada, se até 100 números existem no WhatsApp.

## Introdução

Este endpoint é similar à [Verificação de Número (Sem Instância)](https://developer.zapsterapi.com/pt-BR/v1/api-reference/utils/check-recipient.md), mas permite verificar **até 100 números** em uma única requisição, sem exigir nenhuma instância conectada. Assim como na versão single, a consulta é atendida por uma infraestrutura dedicada da Zapster com cache persistente.

> [!NOTE]
>
> **Endpoint público.** No momento, este endpoint pode ser usado sem autenticação. Por ser público, as requisições sem token ficam sujeitas a limites de uso gratuito, mais restritos e que podem mudar a qualquer momento. Com o token da sua conta, valem os limites da sua conta. Ao ultrapassar o limite, a resposta é `429` com o código `rate_limited` e o header `Retry-After` indica quando tentar de novo.

Para os detalhes sobre formato de número, nono dígito e a URL da foto de perfil, consulte os [Pontos de Atenção](https://developer.zapsterapi.com/pt-BR/v1/api-reference/utils/check-recipient.md#pontos-de-atencao) do endpoint single.

## Como funciona?

A resposta é sempre uma **lista de objetos**, na mesma ordem dos números enviados no corpo da requisição — um objeto por número consultado.

Cada número é avaliado quanto à sua **existência no WhatsApp** e se corresponde a uma conta **WhatsApp Business**. Números inválidos ou não encontrados retornam um objeto de erro no lugar dos dados do destinatário.

```json Exemplo de Resposta theme={null}
[
  {
    "exists": true,
    "id": "5511999999999",
    "is_business": false,
    "lid": "165423771234567",
    "original": "5511999999999",
    "profile_picture": "https://api.zapsterapi.com/v1/wa/recipients/5511999999999/pp"
  },
  {
    "exists": false,
    "original": "5511888888888",
    "error": {
      "code": "recipient_not_found",
      "message": "The specified recipient could not be found."
    }
  },
  {
    "original": "123",
    "error": {
      "code": "recipient_invalid_format",
      "message": "The recipient must be a phone number in international format (e.g. 5511999999999)."
    }
  }
]
```

## Três formatos de item na resposta

Cada item da lista assume um de três formatos, dependendo do resultado:

| Resultado | Campos |
| - | - |
| Encontrado | `exists: true`, `id`, `is_business`, `lid`, `original`, `profile_picture` e, só em conta comercial, `name` |
| Não encontrado | `exists: false`, `original`, `error` |
| Formato inválido | `original`, `error` (sem o campo `exists`) |

> [!NOTE]
>
> Um número com **formato inválido** (fora do E.164) não chega a ser consultado — por isso o item de resposta não tem o campo `exists`, só `original` e `error`. Já um número **não encontrado** foi de fato consultado e simplesmente não existe no WhatsApp, por isso vem com `exists: false`.

## Rate limit conta por destinatário

Diferente da maioria dos endpoints da API — que contam o [rate limit](https://developer.zapsterapi.com/pt-BR/v1/concepts/rate-limit.md) por requisição HTTP — este endpoint conta **por destinatário dentro do lote**. Um `POST` com 100 números válidos consome 100 unidades da sua cota, não 1.

Números com **formato inválido não consomem cota**, já que nem chegam a ser verificados no WhatsApp.

Um lote com mais números válidos do que o limite inteiro da sua janela é recusado com `429` sem consumir a cota. Nesse caso, divida a lista em lotes menores, de no máximo o valor de `X-RateLimit-Limit`.

Os valores do limite podem mudar a qualquer momento. Ao ultrapassar o limite, a API responde `429` com o código `rate_limited` e os headers `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` e `Retry-After`.


## OpenAPI

````yaml POST /wa/recipients/batch
openapi: 3.1.0
info:
  title: Zapster API
  description: ''
  version: 1.0.0
servers:
  - url: https://api.zapsterapi.com/v1
    description: Produção
security: []
tags: []
paths:
  /wa/recipients/batch:
    post:
      tags: []
      summary: Existência de Destinatário em Lote (Sem Instância)
      description: >-
        Verifica em lote, sem instância conectada, se até 100 números existem no
        WhatsApp.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - recipients
              properties:
                recipients:
                  type: array
                  minItems: 1
                  maxItems: 100
                  description: >-
                    Números em formato internacional (E.164), com ou sem `+`
                    inicial. Limite de 100 por requisição.
                  items:
                    type: string
                  example:
                    - '5511999999999'
                    - '5511888888888'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    exists:
                      type: boolean
                      description: >
                        `true` se o número existir e `false` se não foi
                        encontrado. Ausente quando `original` está fora do
                        formato internacional — nesse caso a resposta traz
                        apenas `original` e `error`.
                    error:
                      type: object
                      description: >-
                        Presente quando o número não é encontrado ou está fora
                        do formato internacional.
                      properties:
                        code:
                          type: string
                          description: Código de erro.
                          enum:
                            - recipient_not_found
                            - recipient_invalid_format
                          example: recipient_not_found
                        message:
                          type: string
                          description: Mensagem com detalhamento sobre o erro.
                          example: The specified recipient could not be found.
                    id:
                      type: string
                      description: ID ou número do destinatário.
                    is_business:
                      type: boolean
                      description: >-
                        Define se o `recipient` informado é um perfil do tipo
                        business ou normal.
                    lid:
                      type: string
                      description: Identificador LID do destinatário no WhatsApp.
                    name:
                      type: string
                      description: >-
                        Nome da conta comercial (WhatsApp Business), como
                        aparece no WhatsApp. Presente apenas quando
                        `is_business` é `true` e a conta tem um nome; contas
                        pessoais nunca trazem esse campo.
                      example: Padaria Pão Quente
                    profile_picture:
                      type: string
                      format: uri
                      example: >-
                        https://api.zapsterapi.com/v1/wa/recipients/5511999999999/pp
                      description: >-
                        Foto de perfil do destinatário. Sempre presente — é uma
                        URL estável que aponta para o endpoint de foto de perfil
                        (`GET /wa/recipients/{recipient}/pp`), então pode ser
                        usada diretamente em um `<img src>` e armazenada como
                        referência. Quando o número não tem foto disponível,
                        esse endpoint responde com um placeholder configurável.
                    original:
                      type: string
                      example: '5511999999999'
                      description: >-
                        Número exatamente como foi enviado na lista de consulta,
                        sem alterações.
                  required:
                    - original
        '400':
          description: >-
            Corpo de requisição inválido (por exemplo, mais de 100 números ou
            lista vazia)
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          example: validation_error
                        message:
                          type: string
                          example: >-
                            A maximum of 100 recipients can be checked per
                            request.
        '429':
          description: >
            Limite de consultas excedido. A cota é contada por destinatário do
            lote (um lote com 100 números válidos consome 100), não por
            requisição; números fora do formato internacional não consomem a
            cota. Os headers `X-RateLimit-Limit`, `X-RateLimit-Remaining`,
            `X-RateLimit-Reset` e `Retry-After` acompanham a resposta.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          example: rate_limited
                        message:
                          type: string
                          example: >-
                            You can only make 10 recipient checks every 60
                            seconds.
        '503':
          description: Pool de instâncias da Zapster temporariamente indisponível
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          example: recipient_pool_unavailable
                        message:
                          type: string
                          example: >-
                            The recipient verification service is temporarily
                            unavailable. Please try again shortly.
      deprecated: false
      security:
        - bearer: []
components:
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.