> ## Documentation Index
> Fetch the complete documentation index at: https://docs-zap.loce.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificar se números têm WhatsApp.

> Verifica quais números da lista possuem conta no WhatsApp. Plano free permite 20 verificações por dia (contadas por número); planos pagos possuem limites maiores. Máximo de 50 números por requisição.

<Badge size="lg" shape="rounded" color="green" stroke color="green">POST</Badge> /contact/check

Verifique quais números possuem conta no WhatsApp antes de disparar mensagens. Ideal para higienizar listas e evitar envios para números inválidos.

<Info>
  **Limite diário (anti-ban):** o plano free permite **20 verificações por dia**, contadas por número. Ao estourar, a requisição inteira é rejeitada com `429` e a mensagem informa quantas restam. Planos pagos possuem limites maiores. Máximo de **50 números por requisição**.
</Info>

<CodeGroup>
  ```javascript Node.js theme={null}
  const { results, summary } = await zap.checkContacts('my-session-id', {
    phones: ['5564999999999', '5511888888888'],
  });

  console.log(summary); // { total: 2, exists: 1, notExists: 1 }

  for (const contact of results) {
    if (contact.exists) {
      console.log(`${contact.phone} tem WhatsApp:`, contact.jid);
    }
  }
  ```

  ```python python.py theme={null}
  import requests

  response = requests.post(
      "https://apizap.loce.io/v1/contact/check",
      headers={"Authorization": "Bearer lz_xxxxxxxxxx"},
      json={
          "sessionId": "SESSION_ID",
          "phones": ["5564999999999", "5511888888888"],
      },
  )

  data = response.json()
  print(data["summary"])  # {"total": 2, "exists": 1, "notExists": 1}
  ```

  ```curl curl theme={null}
  curl --request POST \
    --url https://apizap.loce.io/v1/contact/check \
    --header 'Authorization: Bearer lz_xxxxxxxxxx' \
    --header 'Content-Type: application/json'
    --data '{
    "sessionId": "string",
    "phones": ["5564999999999", "5511888888888"]
  }'
  ```
</CodeGroup>

Cada item de `results` traz `{ phone, exists, jid, lid }`, onde `phone` é exatamente o número enviado e `jid`/`lid` só vêm preenchidos quando `exists` é `true`.


## OpenAPI

````yaml POST /contact/check
openapi: 3.1.0
info:
  title: Loce Zap API
  description: >-
    API REST para conectar sessões do WhatsApp e enviar mensagens de texto,
    mídia e automações via Loce Zap.
  version: 1.0.0
servers:
  - url: https://apizap.loce.io/v1
    description: Ambiente de produção
security:
  - bearerAuth: []
paths:
  /contact/check:
    post:
      summary: Verificar números
      description: >-
        Verifica quais números da lista possuem conta no WhatsApp. Plano free
        permite 20 verificações por dia (contadas por número); planos pagos
        possuem limites maiores. Máximo de 50 números por requisição.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckContactsRequest'
      responses:
        '200':
          description: Resultado da verificação.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckContactsResponse'
        '429':
          description: >-
            Limite diário de verificações atingido (a mensagem informa quantas
            restam).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CheckContactsRequest:
      type: object
      required:
        - sessionId
        - phones
      properties:
        sessionId:
          type: string
          description: ID externo de uma sessão conectada.
        phones:
          type: array
          minItems: 1
          maxItems: 50
          items:
            type: string
          description: >-
            Lista de números com DDI (formato E.164 sem o '+', 6 a 15 dígitos).
            Não aceita groupId (@g.us). Máximo de 50 por requisição.
          example:
            - '5511999999999'
            - '5511888888888'
    CheckContactsResponse:
      type: object
      properties:
        success:
          type: boolean
        results:
          type: array
          items:
            $ref: '#/components/schemas/ContactCheckResult'
        summary:
          type: object
          properties:
            total:
              type: integer
            exists:
              type: integer
            notExists:
              type: integer
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        details:
          type: object
          additionalProperties: true
    ContactCheckResult:
      type: object
      properties:
        phone:
          type: string
          description: Número exatamente como foi enviado.
        exists:
          type: boolean
          description: Se o número tem WhatsApp.
        jid:
          type:
            - string
            - 'null'
          description: JID normalizado pelo servidor quando existe, senão null.
        lid:
          type:
            - string
            - 'null'
          description: LID do contato quando disponível, senão null.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key

````