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

# Solicitar localização

> Peça ao cliente para compartilhar a localização com um botão.

Envia uma mensagem com um texto e um **botão para o cliente compartilhar a localização**. É útil para calcular frete, indicar a unidade mais próxima ou confirmar um endereço de entrega. A [janela de 24 horas](https://developers.datafyapi.com.br/api-reference/whatsapp/mensagens/introducao.md#janela-de-24-horas) precisa estar aberta.

> [!NOTE]
>
> O destinatário pode ser informado pelo **número de telefone** (`to`) ou pelo **ID do usuário** (`recipient`). Se os dois forem enviados, vale o `to`; para enviar pelo ID do usuário, deixe o `to` em branco. Veja a diferença em [Destinatário](https://developers.datafyapi.com.br/api-reference/whatsapp/mensagens/introducao.md#destinatário).

## Como montar o pedido

O pedido é uma mensagem interativa. Além do destinatário, ela tem só três partes:

| Campo | Valor |
| - | - |
| `interactive.type` | Sempre `location_request_message`. |
| `interactive.body.text` | Texto do pedido, com até **1.024 caracteres**. Pode conter URLs. |
| `interactive.action.name` | Sempre `send_location`. |

Ao tocar no botão, o cliente abre a tela do WhatsApp para escolher e enviar a localização.

No **Testar**, o texto do pedido já vem preenchido. Troque pelo texto que faz sentido para o seu atendimento.

## Resposta do cliente

Quando o cliente compartilha a localização, ela chega pelo [webhook](https://developers.datafyapi.com.br/api-reference/whatsapp/webhooks/eventos/mensagens.md) como uma mensagem do tipo `location`. O campo `context.id` aponta para o pedido que você enviou:

```json theme={null}
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "234567890123456",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "5541999999999",
              "phone_number_id": "123456789012345"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Camila Souza"
                },
                "wa_id": "5511999999999",
                "user_id": "BR.13491208655302741918"
              }
            ],
            "messages": [
              {
                "context": {
                  "from": "5541999999999",
                  "id": "wamid.HBgNNTUxMTk5OTk5OTk5ORUCABIYFjNFQjA="
                },
                "from": "5511999999999",
                "from_user_id": "BR.13491208655302741918",
                "id": "wamid.HBgNNTUxMTk5OTk5OTk5ORUCABIYFjJBQjE=",
                "timestamp": "1757955600",
                "location": {
                  "address": "Av. Paulista, 1578 - Bela Vista, São Paulo - SP",
                  "latitude": -23.561414,
                  "longitude": -46.655881,
                  "name": "MASP"
                },
                "type": "location"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
```

`latitude` e `longitude` sempre chegam. `name` e `address` só aparecem se o cliente escolher compartilhar um local com nome.

Veja mais detalhes na [documentação de pedido de localização da Meta](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/location-request-messages).


## OpenAPI

````yaml api-reference/whatsapp/specs/solicitar-localizacao.json POST /v1/{phone_number_id}/messages
openapi: 3.1.0
info:
  title: Datafy API — Solicitar localização
  version: 1.0.0
servers:
  - url: https://cloud.datafyapi.com.br
    description: Produção
security:
  - bearerAuth: []
paths:
  /v1/{phone_number_id}/messages:
    post:
      summary: Solicitar localização
      operationId: solicitarLocalizacao
      parameters:
        - name: phone_number_id
          in: path
          required: true
          schema:
            type: string
          description: ID do número que envia a mensagem. Descubra com `GET /me`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MensagemSolicitarLocalizacao'
            example:
              messaging_product: whatsapp
              recipient_type: individual
              to: '5511999999999'
              type: interactive
              interactive:
                type: location_request_message
                body:
                  text: Para calcularmos o frete, compartilhe a sua localização.
                action:
                  name: send_location
      responses:
        '200':
          description: Envio aceito pela Meta. Não confirma a entrega.
          content:
            application/json:
              example:
                messaging_product: whatsapp
                contacts:
                  - input: '5511999999999'
                    wa_id: '5511999999999'
                messages:
                  - id: wamid.HBgNNTUxMTk5OTk5OTk5ORUCABIYFjNFQjA=
        '400':
          description: Erro retornado pela Meta.
          content:
            application/json:
              example:
                error:
                  message: (#100) Invalid parameter
                  type: OAuthException
                  code: 100
                  fbtrace_id: AbCdEfGhIjK
        '401':
          description: Token ausente ou inválido.
          content:
            application/json:
              example:
                statusCode: 401
                message: Token inválido ou não encontrado.
components:
  schemas:
    MensagemSolicitarLocalizacao:
      type: object
      required:
        - messaging_product
        - to
        - type
        - interactive
      properties:
        messaging_product:
          type: string
          enum:
            - whatsapp
          default: whatsapp
          example: whatsapp
          description: Sempre `whatsapp`.
        recipient_type:
          type: string
          enum:
            - individual
          default: individual
          example: individual
          description: Sempre `individual`.
        to:
          type: string
          example: '5511999999999'
          description: >-
            Número do destinatário com código do país e DDD, como
            `5511999999999`. Tem prioridade sobre `recipient`: para enviar pelo
            ID do usuário, deixe em branco.
        recipient:
          type: string
          description: >-
            ID do usuário no WhatsApp (BSUID), recebido nos webhooks em
            `from_user_id` e `contacts[].user_id`, como
            `BR.13491208655302741918`. Usado quando `to` não é informado.
        type:
          type: string
          enum:
            - interactive
          default: interactive
          example: interactive
          description: Sempre `interactive`.
        interactive:
          type: object
          required:
            - type
            - body
            - action
          description: >-
            Pedido de localização com o texto e o botão para o cliente
            compartilhar onde está.
          properties:
            type:
              type: string
              enum:
                - location_request_message
              default: location_request_message
              example: location_request_message
              description: Sempre `location_request_message`.
            body:
              type: object
              required:
                - text
              properties:
                text:
                  type: string
                  maxLength: 1024
                  example: Para calcularmos o frete, compartilhe a sua localização.
                  description: Texto do pedido, com até 1.024 caracteres. Pode conter URLs.
            action:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  enum:
                    - send_location
                  default: send_location
                  example: send_location
                  description: Sempre `send_location`.
        context:
          type: object
          description: Responde citando uma mensagem anterior da conversa.
          properties:
            message_id:
              type: string
              description: ID (`wamid`) da mensagem que será citada.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Token gerado no painel da Datafy ao criar o canal. Formato:
        `sk_live_xxx`.

````

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