Inicio rápido
Empieza
Inicio rápido
De una llave de prueba a una reserva pagada y su webhook: cotiza, reserva, paga y recibe eventos en modo prueba.
1. Crea una llave de prueba
En el portal de partners, sección API, crea una llave de prueba. Empieza con mvn_test_ y solo se muestra una vez: guárdala en tu gestor de secretos. Para estos ejemplos, ponla en una variable de entorno.
export MUVON_API_KEY=mvn_test_…2. Prueba la llave
curl "https://api.muvon.mx/api/v1/ping" \
-H "Authorization: Bearer $MUVON_API_KEY"{
"object": "ping",
"livemode": false,
"partner": {
"id": "p_4c1d9a",
"code": "VIAJESSOL",
"name": "Viajes Sol"
}
}3. Busca los lugares
Toma los id de aeropuertos y hoteles de GET /places. Si el lugar no está, manda address con lat y lng.
curl "https://api.muvon.mx/api/v1/places" \
-H "Authorization: Bearer $MUVON_API_KEY"4. Cotiza
curl -X POST "https://api.muvon.mx/api/v1/quotes" \
-H "Authorization: Bearer $MUVON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"service_type": "airport_pickup",
"pickup_at": "2026-12-20T14:30:00-05:00",
"pickup": {
"place_id": "pl_cun"
},
"dropoff": {
"place_id": "pl_hotel52"
},
"passengers": {
"adults": 2,
"children": 1
},
"bags": 3,
"extras": [
{
"code": "BOOSTER_SEAT",
"quantity": 1
}
]
}'{
"id": "qt_8f3a1c9e2b7d4f60",
"object": "quote",
"livemode": false,
"expires_at": "2026-11-14T18:40:00-05:00",
"currency": "USD",
"request": {
"service_type": "airport_pickup",
"pickup_at": "2026-12-20T14:30:00-05:00",
"pickup": {
"place_id": "pl_cun",
"name": "Cancun Airport (CUN)",
"address": null
},
"dropoff": {
"place_id": "pl_hotel52",
"name": "Hotel 52 Playa del Carmen",
"address": null
},
"hours": null,
"passengers": {
"adults": 2,
"children": 1
},
"bags": 3,
"extras": [
{
"code": "BOOSTER_SEAT",
"quantity": 1
}
]
},
"options": [
{
"vehicle_type_id": "vt_sedan",
"name": "Sedan / SUV / Tesla",
"max_passengers": 3,
"max_bags": 3,
"price_cents": 9500,
"commission_cents": 950,
"km": 54.2
},
{
"vehicle_type_id": "vt_van",
"name": "Van",
"max_passengers": 12,
"max_bags": 12,
"price_cents": 13000,
"commission_cents": 1300,
"km": 54.2
}
]
}5. Reserva
Elige una opción y reserva. Manda siempre una Idempotency-Key nueva por reserva: si se corta la conexión, reintentas sin duplicar.
curl -X POST "https://api.muvon.mx/api/v1/bookings" \
-H "Authorization: Bearer $MUVON_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"quote_id": "qt_8f3a1c9e2b7d4f60",
"vehicle_type_id": "vt_sedan",
"passenger": {
"first_name": "Ana",
"last_name": "García",
"email": "ana@example.com",
"phone": "+5215512345678",
"language": "es"
},
"flight_number": "AA1234",
"notes": "Viajamos con una carriola",
"external_ref": "ORDER-5521",
"return_url": "https://www.example.com/orders/5521"
}'{
"id": "bk_5d2e8a41c07f4b9e",
"object": "booking",
"kind": "transfer",
"code": "TEST-000001",
"livemode": false,
"status": "new",
"payment_status": "unpaid",
"payment_url": "https://api.muvon.mx/pay/r/3c9f0b7e6a5d4c2b1a09f8e7d6c5b4a3",
"hold_expires_at": "2026-11-14T20:10:00-05:00",
"external_ref": "ORDER-5521",
"service_type": "airport_pickup",
"pickup_at": "2026-12-20T14:30:00-05:00",
"pickup": {
"place_id": "pl_cun",
"name": "Cancun Airport (CUN)",
"address": null
},
"dropoff": {
"place_id": "pl_hotel52",
"name": "Hotel 52 Playa del Carmen",
"address": null
},
"hours": null,
"vehicle_type_id": "vt_sedan",
"passengers": {
"adults": 2,
"children": 1
},
"bags": 3,
"extras": [
{
"code": "BOOSTER_SEAT",
"quantity": 1,
"price_cents": 1000
}
],
"flight_number": "AA1234",
"room": null,
"notes": "Viajamos con una carriola",
"passenger": {
"first_name": "Ana",
"last_name": "García",
"email": "ana@example.com",
"phone": "+5215512345678",
"language": "es"
},
"price_cents": 9500,
"currency": "USD",
"commission_cents": 950,
"tracking_url": "https://api.muvon.mx/track?t=a1b2c3d4e5f6",
"cancel_reason": null,
"created_at": "2026-11-14T18:10:00-05:00",
"updated_at": "2026-11-14T18:10:00-05:00"
}6. Cobra
Manda la payment_url a tu cliente (correo, WhatsApp, tu propia página). En modo prueba la página usa Stripe en prueba: paga con la tarjeta 4242 4242 4242 4242, cualquier fecha futura y cualquier CVC. O simúlalo sin abrirla:
curl -X POST "https://api.muvon.mx/api/v1/test/bookings/TEST-000001/pay" \
-H "Authorization: Bearer $MUVON_API_KEY"7. Recibe los eventos
En el portal, guarda la URL de tu webhook de prueba y copia su secreto whsec_…. Cada cambio de la reserva llega firmado: booking.created, booking.paid y luego cada estado del viaje. Verifica la firma como en Webhooks.
8. Pasa a live
Cuando todo funcione, pide a Muvon activar live. Crea una llave mvn_live_, guarda tu URL de webhook live y cambia la llave en tu servidor. El código no cambia: el modo sale de la llave.

