> ## 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.

# Localização ao Vivo

> Envie e atualize continuamente a posição em tempo real no mapa

# Localização ao Vivo

O tipo `LIVE_LOCATION` envia uma localização em tempo real, que é atualizada continuamente conforme a posição muda. Diferente do tipo [`LOCATION`](/mensagens/localizacao), que representa um ponto fixo no mapa, a localização ao vivo é um fluxo de atualizações: cada envio informa a posição mais recente do destinatário, permitindo acompanhar movimentações como entregas e deslocamentos.

## Payload

```json theme={null}
{
  "channelId": "uuid-do-canal",
  "content": {
    "type": "LIVE_LOCATION",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "latitude": -23.561684,
    "longitude": -46.655981,
    "caption": "Entregador a caminho",
    "sequenceNumber": 1
  }
}
```

## Campos

<ParamField body="content.type" type="string" required>
  Deve ser `"LIVE_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 da posição atual. Valor entre -90 e 90.
</ParamField>

<ParamField body="content.longitude" type="double" required>
  Longitude da posição atual. Valor entre -180 e 180.
</ParamField>

<ParamField body="content.caption" type="string">
  Legenda opcional exibida junto da localização ao vivo. Útil para dar contexto ao compartilhamento (ex.: identificar quem está sendo acompanhado).
</ParamField>

<ParamField body="content.sequenceNumber" type="integer">
  Número de sequência da atualização de localização ao vivo. Opcional. Use um valor crescente a cada nova posição enviada para o mesmo compartilhamento, permitindo ordenar as atualizações e descartar as que chegarem fora de ordem.
</ParamField>

## Exemplos

### Iniciar o compartilhamento

<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": "LIVE_LOCATION",
        "to": {
          "type": "WHATSAPP",
          "number": "5511999999999"
        },
        "latitude": -23.561684,
        "longitude": -46.655981,
        "caption": "Entregador a caminho",
        "sequenceNumber": 1
      }
    }'
  ```

  ```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": "LIVE_LOCATION",
              "to": {
                  "type": "WHATSAPP",
                  "number": "5511999999999"
              },
              "latitude": -23.561684,
              "longitude": -46.655981,
              "caption": "Entregador a caminho",
              "sequenceNumber": 1
          }
      }
  )
  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: "LIVE_LOCATION",
          to: {
            type: "WHATSAPP",
            number: "5511999999999",
          },
          latitude: -23.561684,
          longitude: -46.655981,
          caption: "Entregador a caminho",
          sequenceNumber: 1,
        },
      }),
    }
  );
  const data = await response.json();
  console.log(data);
  ```
</CodeGroup>

### Atualizar a posição

Para atualizar a localização, envie um novo pacote `LIVE_LOCATION` para o mesmo destinatário com as coordenadas mais recentes e um `sequenceNumber` maior que o anterior.

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "LIVE_LOCATION",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "latitude": -23.558210,
    "longitude": -46.660120,
    "caption": "Entregador a caminho",
    "sequenceNumber": 2
  }
}
```

### Somente coordenadas

O `caption` e o `sequenceNumber` são opcionais. O envio mínimo exige apenas o destinatário e as coordenadas.

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

<Note>
  A localização ao vivo é um fluxo de atualizações. Envie um novo pacote `LIVE_LOCATION` a cada mudança relevante de posição para manter o mapa do destinatário atualizado.
</Note>

<Tip>
  Incremente o `sequenceNumber` a cada atualização de uma mesma sessão de compartilhamento. Isso garante a ordem correta das posições mesmo que os pacotes cheguem fora de sequência.
</Tip>

<Warning>
  Envie atualizações em uma frequência razoável. Rajadas de atualizações muito próximas podem ser limitadas pelo provedor e não agregam precisão perceptível ao acompanhamento.
</Warning>

## Resposta

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