Referencia: Bookings (reservas)
Las reservas en las que tu organización es originadora o ejecutora. Solo lectura en v1.
GET/v1/bookings
bookings:read
Lista paginada, de la más reciente a la más antigua. Los filtros se añaden a tu organización; ninguno puede ampliarla. Ver Paginación.
| Parámetro | Dónde | Tipo | Descripción |
|---|---|---|---|
status | query | BookingStatus | Uno de los estados públicos (tabla de abajo). |
customer_id | query | uuid | Reservas de ese cliente. |
pickup_from | query | date-time | Recogida ≥ (ISO 8601). |
pickup_to | query | date-time | Recogida ≤ (ISO 8601). |
created_from | query | date-time | Creada ≥. |
created_to | query | date-time | Creada ≤. |
external_id | query | string | Tu id para la reserva. Anula el resto de filtros: devuelve esa reserva (lista de uno) o una lista vacía. |
limit | query | integer | 1–100, por defecto 25. |
cursor | query | string | El next_cursor anterior. |
Petición
curl
curl "https://wearetransfers.com/api/v1/bookings?status=completed&pickup_from=2026-09-01T00:00:00Z&pickup_to=2026-09-30T23:59:59Z&limit=100" \
-H "Authorization: Bearer $WAT_API_KEY"Respuesta
json
{
"data": [
{
"id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"reference": "10031234",
"external_id": "VLC-2026-000123",
"status": "confirmed",
"service_type": "transfer",
"hours": null,
"pickup_at": "2026-09-18T08:30:00+00:00",
"end_at": null,
"pickup": {
"address": "Aeropuerto de Valencia (VLC)",
"lat": 39.4893,
"lng": -0.4816
},
"destination": {
"address": "Hotel Las Arenas, Valencia",
"lat": 39.4735,
"lng": -0.3245
},
"distance_km": 12.4,
"flight": {
"number": "VY1234",
"pending": false
},
"passengers": {
"count": 2,
"luggage": 2,
"luggage_big": 2,
"luggage_small": 0,
"baby_seats": 0,
"child_seats": 0,
"booster_seats": 0,
"wheelchair": false
},
"vehicle_category": "sedan",
"customer": {
"id": "7e6d5c4b-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
"name": "Hotel Las Arenas"
},
"assignment": {
"external": false,
"driver": {
"id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"name": "Marta Gil",
"nickname": "Marta"
},
"vehicle": {
"id": "5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c",
"plate": "1234 KLM",
"model": "Mercedes Clase E"
}
},
"role": "originator_and_executor",
"channel": "customer_engine",
"confirmation": {
"mode": "auto",
"confirmed_at": "2026-09-17T18:02:11+00:00"
},
"event_reference": null,
"created_at": "2026-09-17T18:02:11.204Z"
}
],
"next_cursor": "WyJib29raW5ncyIsIjIwMjYtMDktMTdUMTg6MDI6MTEuMjA0WiIsIjBjMWQyZTNmLTRhNWItNGM2ZC04ZTdmLTlhMGIxYzJkM2U0ZiJd.q1Zw8N3kPf2LgT7c",
"has_more": true
}GET/v1/bookings/{id}
bookings:read
Una reserva por su UUID o por su número de reserva de WAT (solo dígitos). Una reserva de otra organización responde 404, igual que una inexistente.
| Parámetro | Dónde | Tipo | Descripción |
|---|---|---|---|
id * | path | uuid | número | UUID o número de reserva (p. ej. 10031234). |
Petición
curl
curl https://wearetransfers.com/api/v1/bookings/10031234 \
-H "Authorization: Bearer $WAT_API_KEY"Respuesta (clave con passengers:read y pricing:read)
json
{
"id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"reference": "10031234",
"external_id": "VLC-2026-000123",
"status": "confirmed",
"service_type": "transfer",
"hours": null,
"pickup_at": "2026-09-18T08:30:00+00:00",
"end_at": null,
"pickup": {
"address": "Aeropuerto de Valencia (VLC)",
"lat": 39.4893,
"lng": -0.4816
},
"destination": {
"address": "Hotel Las Arenas, Valencia",
"lat": 39.4735,
"lng": -0.3245
},
"distance_km": 12.4,
"flight": {
"number": "VY1234",
"pending": false
},
"passengers": {
"count": 2,
"luggage": 2,
"luggage_big": 2,
"luggage_small": 0,
"baby_seats": 0,
"child_seats": 0,
"booster_seats": 0,
"wheelchair": false
},
"vehicle_category": "sedan",
"customer": {
"id": "7e6d5c4b-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
"name": "Hotel Las Arenas"
},
"assignment": {
"external": false,
"driver": {
"id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"name": "Marta Gil",
"nickname": "Marta"
},
"vehicle": {
"id": "5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c",
"plate": "1234 KLM",
"model": "Mercedes Clase E"
}
},
"role": "originator_and_executor",
"channel": "customer_engine",
"confirmation": {
"mode": "auto",
"confirmed_at": "2026-09-17T18:02:11+00:00"
},
"event_reference": null,
"created_at": "2026-09-17T18:02:11.204Z",
"passenger": {
"name": "Laura Sanz",
"phone": "+34600000000",
"email": "laura@example.com"
},
"pricing": {
"currency": "EUR",
"total": 48,
"vat_pct": 10,
"sale_total": null,
"extras": [
{
"name": "Silla de bebé",
"amount": 5,
"per_passenger": false
}
],
"diet": null,
"parking": null,
"night_surcharge": null,
"payment_mode": "cuenta",
"payment_status": "pendiente",
"paid_at": null
}
}El objeto Booking
| Campo | Tipo | Qué es |
|---|---|---|
id | uuid | Identificador estable. |
reference | string | null | Número de reserva de WAT. Vale como id en GET /bookings/{id}. |
external_id | string | null | Tu id para esta reserva, si lo guardaste (por integración). |
status | BookingStatus | Estado público (tabla de abajo). |
service_type | transfer | hourly | Traslado o disposición por horas. |
hours | number | null | Solo en hourly. |
pickup_at · end_at | date-time | Recogida y fin previsto (end_at puede ser null). |
pickup · destination | Place | null | Dirección y coordenadas. destination es null en disposiciones sin destino. |
distance_km | number | null | Distancia estimada. |
flight | object | null | number y pending (el pasajero aún no ha dado el vuelo). |
passengers | object | count, luggage, luggage_big, luggage_small, baby_seats, child_seats, booster_seats, wheelchair. |
vehicle_category | VehicleCategory | null | Categoría pedida (tabla de abajo). |
customer | object | null | id y name del cliente por el que entró. |
assignment | object | external, driver, vehicle. Si la ejecuta otra empresa (bolsa), external: true y driver/vehicle son null. |
role | BookingRole | originator · executor · originator_and_executor: qué papel tiene tu organización. |
channel | BookingChannel | null | Por dónde entró (tabla de abajo). |
confirmation | object | mode y confirmed_at. |
event_reference | string | null | Referencia de evento o grupo, si forma parte de uno. |
created_at | date-time | Creación. |
passenger | object | Solo con passengers:read. name, phone, email. |
pricing | object | Solo con pricing:read. Su forma depende de role. Si eres originadora (originator, originator_and_executor): currency (EUR), total, vat_pct, sale_total, extras[], diet, parking, night_surcharge, payment_mode, payment_status, paid_at. Si solo la ejecutas (executor, bolsa): currency y net_executor, tu neto; el precio del originador y el de venta de su cliente no se exponen. |
Sin scope, sin propiedad
Si la clave no tiene passengers:read, la propiedad passenger no existe (no es null). Igual con pricing.
pricing de una reserva que ejecutas para otra empresa (role: executor):
json
{
"currency": "EUR",
"net_executor": 41.4
}Estados
| status | Interno | Qué significa |
|---|---|---|
requested | solicitada | Solicitada por el cliente; la empresa aún no la ha aceptado. |
unconfirmed | no_segura | Aceptada pero sin confirmar al pasajero. |
confirmed | confirmada | Confirmada. |
en_route | en_camino | El conductor va hacia la recogida. |
in_progress | en_curso | El pasajero va a bordo. |
completed | completada | Terminada. |
cancelled | cancelada | Cancelada. |
no_show | no_show | El pasajero no se presentó. |
rejected | rechazada | Rechazada por la empresa. |
El nombre interno aparece en previous_status de los eventos y de los webhooks.
Categorías de vehículo
| vehicle_category | Qué es |
|---|---|
sedan | Turismo estándar |
van | Minivan estándar |
sedan_vip | Turismo VIP |
van_vip | Minivan VIP |
Canales
| channel | Qué es |
|---|---|
customer_engine | El motor de reservas de un cliente (su enlace). |
public_engine | El motor público de la empresa. |
manual | Apuntada a mano en el panel. |
bulk_upload | Carga masiva por Excel. |
recurring | Reserva recurrente. |
api | Creada por la API (próximamente). |
Ejemplo: reserva que ejecuta otra empresa
json
{
"id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"reference": "10031234",
"external_id": null,
"status": "confirmed",
"service_type": "transfer",
"hours": null,
"pickup_at": "2026-09-18T08:30:00+00:00",
"end_at": null,
"pickup": {
"address": "Aeropuerto de Valencia (VLC)",
"lat": 39.4893,
"lng": -0.4816
},
"destination": {
"address": "Hotel Las Arenas, Valencia",
"lat": 39.4735,
"lng": -0.3245
},
"distance_km": 12.4,
"flight": {
"number": "VY1234",
"pending": false
},
"passengers": {
"count": 2,
"luggage": 2,
"luggage_big": 2,
"luggage_small": 0,
"baby_seats": 0,
"child_seats": 0,
"booster_seats": 0,
"wheelchair": false
},
"vehicle_category": "sedan",
"customer": {
"id": "7e6d5c4b-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
"name": "Hotel Las Arenas"
},
"assignment": {
"external": true,
"driver": null,
"vehicle": null
},
"role": "originator",
"channel": "customer_engine",
"confirmation": {
"mode": "auto",
"confirmed_at": "2026-09-17T18:02:11+00:00"
},
"event_reference": null,
"created_at": "2026-09-17T18:02:11.204Z"
}