Desarrolladores
translateEnglishAbrir una cuenta

Empieza

  • API para revendedores
  • Inicio rápido

Conceptos

  • Autenticación y modos
  • Errores
  • Idempotencia
  • Límites de uso
  • Paginación

Referencia

  • Endpoints
  • Objetos

Guías

  • Ciclo de una reserva
  • Liga de pago y apartado
  • Cancelaciones
  • Webhooks
  • Sandbox

Más

  • Cambios
data_objectOpenAPI 3.1
menu_bookObjetosexpand_more

Empieza

  • API para revendedores
  • Inicio rápido

Conceptos

  • Autenticación y modos
  • Errores
  • Idempotencia
  • Límites de uso
  • Paginación

Referencia

  • Endpoints
  • Objetos

Guías

  • Ciclo de una reserva
  • Liga de pago y apartado
  • Cancelaciones
  • Webhooks
  • Sandbox

Más

  • Cambios
data_objectOpenAPI 3.1

Referencia

Objetos

Los objetos de la API de Muvon: cotización (Quote), reserva (Booking) y evento (Event), campo por campo.

Los campos pueden crecer: ignora los que no conozcas. Nunca quitamos ni cambiamos un campo dentro de v1.

Cotización (Quote)

idstringobligatorio

Id de la cotización (qt_…). Lo mandas al reservar.

objectstringobligatorio

Siempre quote.

Valores: quote

livemodebooleanobligatorio

true con llave live, false con llave de prueba.

expires_atstring (date-time)obligatorio

Hasta cuándo se puede reservar con esta cotización.

currencystringobligatorio

Siempre USD en v1.

Valores: USD

requestobjectobligatorio

Lo que pediste, normalizado (nombres de lugares, fecha con zona horaria).

optionsobject[]obligatorio

Una opción por tipo de vehículo que cabe; siempre trae al menos una. Si ninguno cabe, la cotización responde un error 422 (passengers_out_of_range, too_many_bags, notice_too_short o route_not_priceable).

options[].vehicle_type_idstringobligatorio

Tipo de vehículo. Lo mandas al reservar.

options[].namestringobligatorio

Nombre del tipo de vehículo.

options[].max_passengersintegerobligatorio

Cupo de pasajeros.

options[].max_bagsintegerobligatorio

Cupo de maletas.

options[].price_centsintegerobligatorio

Precio público total en centavos de dólar, extras incluidos. Es lo que paga tu cliente.

options[].commission_centsintegerobligatorio

Tu comisión en centavos, según tu acuerdo con Muvon.

options[].kmnumberpuede ser null

Distancia del viaje en km (null en hourly).

Ejemplo
{
  "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
    }
  ]
}

Reserva (Booking)

idstringobligatorio

Id de la reserva.

objectstringobligatorio

Siempre booking.

Valores: booking

kindstringobligatorio

Producto. En v1 siempre transfer; las rentas de Muvons llegarán con su propio valor.

Valores: transfer

codestringobligatorio

Código que ve el cliente: MVN-000123 en live, TEST-000001 en prueba. Sirve como ref en las rutas.

livemodebooleanobligatorio

false en reservas de prueba.

statusstringobligatorio

Estado del viaje. Ve Ciclo de una reserva.

Valores: new, assigned, confirmed, on_the_way, arrived, on_board, dropped_off, completed, no_show, cancelled

payment_statusstringobligatorio

unpaid o paid. refunded cuando el equipo registra un reembolso.

payment_urlstring (uri)puede ser null

Liga de pago para tu cliente. Ve Liga de pago.

hold_expires_atstring (date-time)puede ser null

Si no se paga antes, se cancela sola. Si tu cliente abre el pago cerca del final, puede alargarse hasta 35 minutos para que alcance a pagar. null cuando ya está pagada o cancelada.

external_refstringpuede ser null

Tu referencia.

service_typestringobligatorio

Tipo de servicio.

Valores: airport_pickup, airport_dropoff, point_to_point, hourly

pickup_atstring (date-time)obligatorio

Recogida, con zona horaria de Cancún.

pickupobject

Origen.

pickup.place_idstringpuede ser null

Id del lugar, o null si fue una dirección.

pickup.namestring

Nombre que ve el piloto.

pickup.addressstringpuede ser null

Dirección, si se dio.

dropoffobjectpuede ser null

Destino (en hourly sin destino, el mismo que pickup).

dropoff.place_idstringpuede ser null

Id del lugar, o null si fue una dirección.

dropoff.namestring

Nombre que ve el piloto.

dropoff.addressstringpuede ser null

Dirección, si se dio.

hoursintegerpuede ser null

Horas, solo en hourly.

vehicle_type_idstringobligatorio

Tipo de vehículo reservado.

passengersobjectobligatorio

Pasajeros.

passengers.adultsintegerobligatorio

Adultos.

passengers.childrenintegerobligatorio

Niñas y niños.

bagsintegerobligatorio

Maletas.

extrasobject[]obligatorio

Extras reservados.

extras[].codestringobligatorio

Código.

extras[].quantityintegerobligatorio

Cantidad.

extras[].price_centsintegerobligatorio

Precio por unidad en centavos (la línea cuesta precio × cantidad).

flight_numberstringpuede ser null

Vuelo.

roomstringpuede ser null

Habitación.

notesstringpuede ser null

Tus notas.

passengerobjectobligatorio

Quién viaja.

passenger.first_namestringobligatorio

Nombre.

passenger.last_namestringobligatorio

Apellido.

passenger.emailstring (email)obligatorio

Correo.

passenger.phonestringpuede ser null

Teléfono.

passenger.languagestringobligatorio

Idioma.

Valores: es, en

price_centsintegerobligatorio

Precio público total en centavos.

currencystringobligatorio

USD.

Valores: USD

commission_centsintegerobligatorio

Tu comisión en centavos.

tracking_urlstring (uri)puede ser null

Página del viaje para el pasajero: estado, piloto en camino, contacto.

cancel_reasonstringpuede ser null

Por qué se canceló. payment_timeout si venció el apartado sin pago.

created_atstring (date-time)obligatorio

Creación.

updated_atstring (date-time)obligatorio

Último cambio.

Ejemplo
{
  "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"
}

Evento (Event)

idstringobligatorio

Id del evento (evt_…). Úsalo para no procesar dos veces el mismo.

objectstringobligatorio

Siempre event.

Valores: event

typestringobligatorio

Qué pasó. Ve Webhooks.

Valores: booking.created, booking.paid, booking.assigned, booking.confirmed, booking.on_the_way, booking.arrived, booking.on_board, booking.dropped_off, booking.completed, booking.no_show, booking.cancelled, ping

createdstring (date-time)obligatorio

Cuándo pasó.

livemodebooleanobligatorio

Modo de la reserva.

dataobjectobligatorio

Contenido del evento.

data.objectobject

La reserva completa como quedó después del cambio. En ping es { "object": "ping", "message": "…" }.

Ejemplo
{
  "id": "evt_0a9b8c7d6e5f4a3b",
  "object": "event",
  "type": "booking.paid",
  "created": "2026-11-14T18:22:41-05:00",
  "livemode": false,
  "data": {
    "object": {
      "id": "bk_5d2e8a41c07f4b9e",
      "object": "booking",
      "kind": "transfer",
      "code": "TEST-000001",
      "livemode": false,
      "status": "new",
      "payment_status": "paid",
      "payment_url": "https://api.muvon.mx/pay/r/3c9f0b7e6a5d4c2b1a09f8e7d6c5b4a3",
      "hold_expires_at": null,
      "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:22:41-05:00"
    }
  }
}
arrow_backAnteriorEndpointsSiguientearrow_forwardCiclo de una reserva

En esta página

  • Cotización (Quote)
  • Reserva (Booking)
  • Evento (Event)