Recibe continuamente la posición del vehículo y el estado del viaje mediante Server-Sent Events (SSE).
Autenticación y headers
| Header | Descripción |
|---|---|
Authorization | Bearer <secret_key>. Conserva el secret en el servidor y nunca lo escribas en logs del cliente. |
X-Travelandz-Id | <public_key>:<profile_code>, donde el profile code persistido usa el formato dp_<12 alfanuméricos>. |
LANG | Header recomendado para el idioma. También se acepta Accept-Language. |
Accept | text/event-stream para respuestas progresivas en stream. |
Headers de respuesta
http
Content-Type: text/event-stream
Cache-Control: no-cache, no-transform
Connection: keep-alivePetición
Este endpoint no recibe body y acepta los mismos parámetros que el endpoint del último evento. Envía Accept: text/event-stream. El idioma capturado al abrir la conexión se reutiliza en todos los eventos posteriores.
Schema de parámetros
reservationIdReservation identifier returned when the booking was created.
Schema de query params
currencyLowercase values are accepted and normalized. Defaults to
USD on a new search and is inherited afterwards.languageLegacy field. Prefer the
LANG or Accept-Language header.Respuesta exitosa
Cada evento update incluye el mismo payload que el endpoint del último evento.
Schema de respuesta
locationlocationlatitudelocationlongitudestatusJourney state, for example
driver_departed_to_pickup.timestamptrackingIdEventos del stream
| Evento | Descripción |
|---|---|
update | Un snapshot actualizado. Reemplaza lo que estás mostrando con el payload del último evento. |
error | Un refresco no pudo completarse. Incluye code y message. La conexión no se cierra automáticamente; el siguiente refresco puede tener éxito. |
Ejemplo de stream
text
event: update
data: {"location":{"latitude":40.7607634,"longitude":-73.971212},"status":"driver_departed_to_pickup","timestamp":"2026-07-25T17:47:01.761854Z","trackingId":"c90n51960f274447b29473fc0d995f6a"}
event: error
data: {"code":"transfer_provider_error","message":"Unable to load tracking data"}Errores
| HTTP | Código | Significado | Acción recomendada |
|---|---|---|---|
400 | El body, la query o el path son inválidos, o incluyen una propiedad desconocida. | Corrige la petición usando el array message. | |
400 | transfer_invalid_currency | La moneda está fuera de la lista soportada. | Usa una moneda soportada. |
400 | transfer_invalid_language | El idioma solicitado no está soportado. | Usa uno de los valores de idioma documentados. |
429 | transfer_provider_error | El servicio está temporalmente limitado por rate limit. | Reintenta con backoff exponencial. |
502 | transfer_provider_error | La petición no pudo completarse. | No asumas que tuvo éxito. Conserva tus identificadores y consulta la reserva cuando la operación pudiera haberse creado. |
Notas de uso
Mantén la conexión abierta solo mientras el viajero esté viendo la vista en vivo, y ciérrala explícitamente después. Gestiona los eventos update y error, y reconecta tras una interrupción de red.
La validación que falla antes de abrir el stream se devuelve como un error HTTP JSON normal. Una vez abierto el stream, los fallos llegan como eventos error.
Ejemplo cURL
bash
curl --request GET \
--url "https://api.sandbox.travelandz.com/v1/transfers/tracking/f390daff1fdf4cccb19b7abd825dc011/events/stream?currency=USD" \
-H "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
-H "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE" \
-H "Accept: text/event-stream"