---
title: "Rastrear cualquier guía"
method: GET
path: "/tracking/{guia}"
tags: ["tracking"]
---

# Rastrear cualquier guía

`GET /tracking/{guia}`

## Request

- Base URL: `https://api.enviadores.com.mx/api/v1`
- URL: `https://api.enviadores.com.mx/api/v1/tracking/{guia}`
- Auth: HTTP bearer

Datos públicos de rastreo (mismo payload PII-mínimo de la página pública: estatus canónico, ciudad/estado de origen y destino, línea de tiempo con nombres de receptor depurados). No requiere que la guía sea propia. Agnóstico al modo de la llave (funciona igual con `ek_test_`). Requiere scope `tracking:read`.

## Path parameters

- `guia` string, required

## Response `200`

Estado de rastreo.

- object
  - `success` unknown, required
  - `data` object, required
    - `guia` string, required
    - `carrier` string, nullable, required
    - `status` string, required
    - `status_label` string, required
    - `origin` object, required
      - `city` string, nullable
      - `state` string, nullable
    - `destination` object, required
      - `city` string, nullable
      - `state` string, nullable
    - `created_at` string, nullable, required
    - `events` object[], required
      - `timestamp` string, nullable
      - `description` string, nullable: Nombres de receptor (POD) depurados.
      - `location` string, nullable
  - `requestId` string, required: Correlación de logs; también en el header `X-Request-Id`.

## Other responses

- `401`: `UNAUTHORIZED` — credencial Bearer ausente/mal formada o llave desconocida/revocada (respuesta idéntica en ambos casos).
- `403`: `INSUFFICIENT_SCOPE` — a la llave le falta el scope requerido · `PDV_NOT_ALLOWED` — violación del carril X-PDV-ID. Nota de orden: el limitador por llave corre ANTES del gate de scope, así que una petición con scope incorrecto y el bucket agotado responde `429 RATE_LIMITED` (el 429 tiene precedencia sobre este 403).
- `404`: `NOT_FOUND` — genérico y de forma estable para toda guía desconocida/ inválida (sin oráculo de existencia).
- `429`: `RATE_LIMITED` — bucket de la llave agotado. Espera `Retry-After` s (`details.retry_after_ms` para el hint fino). El limitador corre antes del gate de scope, por lo que un 429 tiene precedencia sobre un 403 `INSUFFICIENT_SCOPE`.

---

[API](https://skmtc.dev/enviadores/apis/enviadores-public-api.md) · [All operations](https://skmtc.dev/enviadores/apis/enviadores-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/enviadores/apis/enviadores-public-api/revisions/3633f08c889c?raw)
