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

# Mensagem de Localização

> Envie localizações no mapa com nome e endereço opcionais

# Mensagem de Localização

O tipo `LOCATION` permite enviar um ponto no mapa para o destinatário, com nome do local e endereço opcionais. O destinatário poderá visualizar o ponto no mapa integrado do aplicativo.

## Payload

```json theme={null}
{
  "channelId": "uuid-do-canal",
  "content": {
    "type": "LOCATION",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "latitude": -23.561684,
    "longitude": -46.655981,
    "name": "Av. Paulista, 1578",
    "address": "Bela Vista, Sao Paulo - SP, 01310-200"
  }
}
```

## Campos

<ParamField body="content.type" type="string" required>
  Deve ser `"LOCATION"`.
</ParamField>

<ParamField body="content.to" type="Address" required>
  Endereço do destinatário. Veja [formatos de endereço](/mensagens/visao-geral#enderecamento-address).
</ParamField>

<ParamField body="content.latitude" type="double" required>
  Latitude do ponto no mapa. Valor entre -90 e 90.
</ParamField>

<ParamField body="content.longitude" type="double" required>
  Longitude do ponto no mapa. Valor entre -180 e 180.
</ParamField>

<ParamField body="content.name" type="string">
  Nome do local. Exibido como título do ponto no mapa. Opcional.
</ParamField>

<ParamField body="content.address" type="string">
  Endereço completo do local. Exibido abaixo do nome. Opcional.
</ParamField>

## Exemplos

### Localização com nome e endereço

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api-dev.messagefy.io/api/v1/message/SendMessage \
    -H "Content-Type: application/json" \
    -H "X-API-KEY: sua-api-key-aqui" \
    -d '{
      "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "content": {
        "type": "LOCATION",
        "to": {
          "type": "WHATSAPP",
          "number": "5511999999999"
        },
        "latitude": -23.561684,
        "longitude": -46.655981,
        "name": "Escritorio MessageFy",
        "address": "Av. Paulista, 1578 - Bela Vista, Sao Paulo - SP"
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-dev.messagefy.io/api/v1/message/SendMessage",
      headers={
          "Content-Type": "application/json",
          "X-API-KEY": "sua-api-key-aqui"
      },
      json={
          "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "content": {
              "type": "LOCATION",
              "to": {
                  "type": "WHATSAPP",
                  "number": "5511999999999"
              },
              "latitude": -23.561684,
              "longitude": -46.655981,
              "name": "Escritorio MessageFy",
              "address": "Av. Paulista, 1578 - Bela Vista, Sao Paulo - SP"
          }
      }
  )
  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api-dev.messagefy.io/api/v1/message/SendMessage",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "sua-api-key-aqui",
      },
      body: JSON.stringify({
        channelId: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        content: {
          type: "LOCATION",
          to: {
            type: "WHATSAPP",
            number: "5511999999999",
          },
          latitude: -23.561684,
          longitude: -46.655981,
          name: "Escritorio MessageFy",
          address: "Av. Paulista, 1578 - Bela Vista, Sao Paulo - SP",
        },
      }),
    }
  );
  const data = await response.json();
  console.log(data);
  ```
</CodeGroup>

### Localização somente com coordenadas

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "LOCATION",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "latitude": -22.906847,
    "longitude": -43.172896
  }
}
```

<Note>
  Quando `name` e `address` não são informados, o aplicativo do destinatário exibirá apenas o pin no mapa com as coordenadas. Alguns aplicativos tentam resolver o endereço automaticamente.
</Note>

### Localização de entrega

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "correlationId": "entrega-pedido-789",
  "content": {
    "type": "LOCATION",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "latitude": -23.550520,
    "longitude": -46.633308,
    "name": "Ponto de Entrega",
    "address": "Praca da Se, s/n - Se, Sao Paulo - SP, 01001-000"
  }
}
```

<Tip>
  Combine o envio de localização com uma mensagem de texto para fornecer contexto adicional, como instruções de como chegar ou horário de funcionamento.
</Tip>

## Resposta

```json theme={null}
{
  "packageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

## Recebimento

Quando um contato compartilha uma localização com o seu canal, a MessageFy entrega um webhook com `content.type` igual a `"LOCATION"`. O conteúdo vem dentro do envelope `Package` (veja [Recebendo Eventos](/recebendo-eventos)).

```json theme={null}
{
  "packageId": "019a1234-5678-7abc-def0-123456789ac2",
  "channelId": "019a1258-177c-7286-b060-9ee02a0800c7",
  "correlationId": null,
  "content": {
    "type": "LOCATION",
    "from": {
      "type": "WHATSAPP",
      "jid": "5511999998888@s.whatsapp.net",
      "number": "5511999998888",
      "name": "Cliente"
    },
    "to": {
      "type": "WHATSAPP",
      "jid": "5511988887777@s.whatsapp.net",
      "number": "5511988887777",
      "name": "Minha Empresa"
    },
    "messageId": "3EB08209536937A66D8435",
    "latitude": -23.561684,
    "longitude": -46.655981,
    "name": "Avenida Paulista, 1000",
    "address": "Av. Paulista, 1000 - Bela Vista, Sao Paulo - SP",
    "isFromMe": false,
    "isGroupMessage": false,
    "isForwarded": false,
    "isStatusMessage": false,
    "isHistoryMessage": false,
    "timestamp": "2025-12-01T14:45:00+00:00"
  },
  "timestamp": "2025-12-01T14:45:00.100+00:00",
  "echoMessage": false,
  "providerMetadata": null
}
```

<ResponseField name="content.type" type="string">
  Sempre `"LOCATION"` para localizações recebidas.
</ResponseField>

<ResponseField name="content.from" type="Address">
  Endereço de quem enviou a localização. Para WhatsApp: `jid`, `lid`, `number`, `name`.
</ResponseField>

<ResponseField name="content.to" type="Address">
  Endereço do destinatário (o seu canal ou o grupo/chat que recebeu a mensagem).
</ResponseField>

<ResponseField name="content.messageId" type="string">
  Identificador da mensagem no provedor. Guarde-o para responder ou reagir posteriormente.
</ResponseField>

<ResponseField name="content.latitude" type="double">
  Latitude do ponto compartilhado.
</ResponseField>

<ResponseField name="content.longitude" type="double">
  Longitude do ponto compartilhado.
</ResponseField>

<ResponseField name="content.name" type="string">
  Nome do local, quando informado pelo remetente.
</ResponseField>

<ResponseField name="content.address" type="string">
  Endereço completo do local, quando informado pelo remetente.
</ResponseField>

<ResponseField name="content.isGroupMessage" type="boolean">
  `true` quando a localização veio de um grupo. Nesse caso, `from` identifica o participante autor.
</ResponseField>

<ResponseField name="content.isForwarded" type="boolean">
  `true` quando a localização foi encaminhada.
</ResponseField>

<ResponseField name="content.isHistoryMessage" type="boolean">
  `true` quando a mensagem vem da sincronização de histórico do dispositivo.
</ResponseField>

<ResponseField name="content.isBroadcast" type="boolean">
  `true` se a mensagem foi enviada para uma lista de transmissão (broadcast list).
</ResponseField>

<ResponseField name="content.isAnnounceGroup" type="boolean">
  `true` se a mensagem foi enviada para um grupo de avisos da comunidade.
</ResponseField>

<ResponseField name="content.isCommunityNotices" type="boolean">
  `true` se a mensagem foi enviada para o grupo de avisos da comunidade.
</ResponseField>

<ResponseField name="content.isNewsletter" type="boolean">
  `true` se a mensagem foi enviada para um canal/newsletter.
</ResponseField>

<Note>
  Para compartilhamento de localização em tempo real (posição que se atualiza continuamente), veja [Localização ao Vivo](/mensagens/localizacao-ao-vivo), que usa o tipo `LIVE_LOCATION`.
</Note>
