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

# Verificação de localização: campos geolocation_checks

> Leia geolocation_checks e geolocation_attempts na decisão da Didit: posição, precisão, áreas, distâncias, anonimizadores, consentimento e avisos.

## Visão geral

A decisão da sessão retorna o resultado de cada etapa de Verificação de localização em duas listas: `geolocation_checks[]` contém a tentativa aceita de cada etapa, e `geolocation_attempts[]` lista todas as tentativas em ordem.
Ambas estão disponíveis em `GET /v3/session/{sessionId}/decision/` (consulte [Recuperar sessão](https://docs.didit.me/pt-br/sessions-api/retrieve-session.md)) e no webhook `status.updated`.
Um fluxo de verificação (workflow) sem etapa de Localização retorna `null` ou uma lista vazia para ambas.

```text theme={null}
GET /v3/session/{sessionId}/decision/
  --> { "geolocation_checks": [ { node_id, status, outcome, permission, latitude, longitude, accuracy_m, ... } ],
        "geolocation_attempts": [ { node_id, outcome, attempts, received_at, ... } ] }
```

## `geolocation_checks[]`

Um item por etapa de Localização (`node_id`), obtido da tentativa mais recente.

```json theme={null}
{
  "node_id": "geolocation_1",
  "status": "Declined",
  "outcome": "outside_geofence",
  "permission": "granted_precise",
  "latitude": 48.8566,
  "longitude": 2.3522,
  "accuracy_m": 35.0,
  "accuracy_confidence": "p95",
  "measured_at": "2026-11-03T10:15:02Z",
  "age_seconds": 2,
  "source": "browser",
  "platform": "web",
  "sdk_version": null,
  "is_mock": null,
  "produced_by_accessory": null,
  "integrity": "unsupported",
  "country_code": "FR",
  "region_code": "FR-IDF",
  "city": "Paris",
  "geofence": { "enabled": true, "result": "outside" },
  "inside_geofence": false,
  "geofence_basis": "device",
  "inside_areas": [],
  "blocked_areas": [],
  "position_source": "device_and_ip",
  "anonymizers": { "vpn": false, "proxy": false, "tor": false, "spoofing": null, "emulator": null },
  "ip_distance_km": 0,
  "ip_distance_uncertainty_km": 12.4,
  "ip_consistent": true,
  "document_distance_km": null,
  "travel_excused": null,
  "consecutive_mismatches": 1,
  "attempts": 3,
  "consent": { "accepted_at": "2026-11-03T10:14:55Z", "version": "hosted-web-1", "locale": "en" },
  "warnings": [
    {
      "risk": "LOCATION_OUTSIDE_GEOFENCE",
      "log_type": "error",
      "short_description": "Device location outside the allowed area",
      "node_id": "geolocation_1"
    }
  ]
}
```

| Campo | Tipo | Descrição |
| - | - | - |
| `node_id` | string | O nó do fluxo que produziu o resultado, para que um fluxo com duas etapas de Localização continue legível. |
| `status` | string | `Approved`, `In Review`, `Declined` ou `Not Finished`, definido a partir dos avisos. |
| `outcome` | string | O que aconteceu na tentativa aceita. Consulte [resultados](https://docs.didit.me/pt-br/core-technology/location-verification/overview.md#resultados). |
| `permission` | string | O que o sistema concedeu: `granted_precise`, `granted_approximate`, `denied`, `restricted`, `unavailable`, `timeout`, `dismissed` ou `not_requested` (etapa apenas por IP). |
| `latitude`, `longitude` | number ou null | Posição WGS84. `null` quando não há posição. |
| `accuracy_m` | number ou null | Raio de incerteza em metros. |
| `accuracy_confidence` | string ou null | Nível de confiança do raio: `p95` (web), `p68` (Android) ou `unspecified` (iOS). As plataformas diferem, por isso o valor é registrado em vez de normalizado. |
| `measured_at` | datetime ou null | Quando o dispositivo mediu a posição, segundo o relógio do dispositivo. |
| `age_seconds` | integer ou null | Tempo entre a medição e o momento em que a Didit a recebeu. |
| `source` | string ou null | `gps`, `fused`, `network`, `wifi`, `cell`, `browser`, `unknown` ou `ip` em uma etapa apenas por IP. |
| `platform` | string ou null | `web`, `ios`, `android`, `react_native` ou `flutter`. |
| `sdk_version` | string ou null | A versão do SDK que produziu a posição. |
| `is_mock` | boolean ou null | O sistema informou uma posição simulada. `null` significa que a plataforma não consegue determinar (web), e não `false`. |
| `produced_by_accessory` | boolean ou null | Apenas iOS: a posição veio de um acessório externo. |
| `integrity` | string | Atestação do dispositivo: `attested`, `not_attested`, `failed`, `unsupported` (web) ou `not_determined`. |
| `country_code`, `region_code`, `city` | string ou null | O local correspondente à posição, determinado offline: ISO 3166-1 alpha-2, ISO 3166-2 e o localidade habitada mais próxima. A cidade é um rótulo para revisores, nunca é usada como entrada de regras. |
| `geofence` | object | `enabled` e `result`: `inside`, `outside` ou `undetermined`. `result` é `null` quando a geocerca está desativada. |
| `inside_geofence` | boolean ou null | `true` ou `false`, e `null` quando a geocerca está desativada ou o círculo de precisão cruza uma fronteira. |
| `geofence_basis` | string ou null | Qual posição foi usada para a decisão sobre a área: `device` ou `ip`. |
| `inside_areas`, `blocked_areas` | array | `id`s das áreas permitidas que contêm todo o círculo de precisão e das áreas bloqueadas nas quais ele está. |
| `position_source` | string ou null | O `geolocation_position_source` do nó quando a tentativa foi executada. |
| `anonymizers` | object ou null | `vpn`, `proxy`, `tor`, `spoofing` e `emulator`, cada um `true`, `false` ou `null` quando a fonte não consegue determinar. |
| `ip_distance_km` | number ou null | Distância até a localização do IP depois de subtraídos os dois raios de incerteza. 0 significa que eles se sobrepõem. |
| `ip_distance_uncertainty_km` | number ou null | O raio combinado que foi subtraído. |
| `ip_consistent` | boolean ou null | `ip_distance_km` está dentro de `geolocation_ip_distance_km`. `null` quando um dos lados é desconhecido. |
| `document_distance_km` | number ou null | Distância até o endereço geocodificado do documento. `null` quando não há endereço registrado. |
| `travel_excused` | boolean ou null | A tolerância de viagem justificou a distância. `null` quando a tolerância está desativada. |
| `consecutive_mismatches` | integer ou null | Em uma tentativa final, esta verificação mais as divergências anteriores consecutivas da mesma pessoa. |
| `attempts` | integer | O número da tentativa. |
| `consent` | object ou null | `accepted_at`, `version` e `locale` do aviso de localização que a pessoa aceitou. |
| `warnings` | array | Os [avisos](https://docs.didit.me/pt-br/core-technology/location-verification/warnings-location-verification.md) da etapa. |

## `geolocation_attempts[]`

Todas as tentativas de todas as etapas de Localização, da mais antiga para a mais recente, com os mesmos campos de medição, incerteza, área e distância de `geolocation_checks[]`, exceto `warnings`, além de:

| Campo | Tipo | Descrição |
| - | - | - |
| `received_at` | datetime | Quando a Didit recebeu a tentativa. |
| `created_at` | datetime | Quando a tentativa foi registrada. |

Tentativas descartadas por um reenvio são omitidas.
O envio bruto do cliente e o desafio nunca são retornados.

## Campos para regras de status e ramificações

`status_rules` personalizadas e regras de ramificação podem ler estes campos:
`geolocation.status`, `geolocation.outcome`, `geolocation.permission`, `geolocation.latitude`, `geolocation.longitude`, `geolocation.accuracy_m`, `geolocation.accuracy_confidence`, `geolocation.age_seconds`, `geolocation.measured_at`, `geolocation.source`, `geolocation.platform`, `geolocation.country` (ISO 3166-1 alpha-3), `geolocation.region`, `geolocation.city`, `geolocation.is_mock`, `geolocation.integrity`, `geolocation.inside_geofence`, `geolocation.ip_distance_km`, `geolocation.ip_consistent`, `geolocation.document_distance_km`, `geolocation.attempts`, `geolocation.consent_at`, `geolocation.inside_areas`, `geolocation.blocked_areas`, `geolocation.anonymizers` (`vpn`, `proxy`, `tor`, `spoofing`, `emulator`) e `geolocation.consecutive_mismatches`.
Um valor ausente corresponde apenas a `is_empty`, de modo que uma regra escrita para um sinal de fraude nunca é acionada por dados ausentes.

## Relacionados

* [Verificação de localização](https://docs.didit.me/pt-br/core-technology/location-verification/overview.md) - como a etapa funciona e quanto custa.
* [Avisos da verificação de localização](https://docs.didit.me/pt-br/core-technology/location-verification/warnings-location-verification.md) - todos os códigos `LOCATION_*`.
* [Webhooks](https://docs.didit.me/pt-br/integration/webhooks.md) - `status.updated` traz as listas.
* [Modelos de dados - objeto Warning](https://docs.didit.me/pt-br/reference/data-models.md#objeto-de-aviso) - o formato de cada entrada em `warnings[]`.


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