Developers
translateEspañolOpen an account

Get started

  • Reseller API
  • Quickstart

Concepts

  • Authentication and modes
  • Errors
  • Idempotency
  • Rate limits
  • Pagination

Reference

  • Endpoints
  • Objects

Guides

  • Booking lifecycle
  • Payment link and hold
  • Cancellations
  • Webhooks
  • Sandbox

More

  • Changelog
data_objectOpenAPI 3.1
menu_bookQuickstartexpand_more

Get started

  • Reseller API
  • Quickstart

Concepts

  • Authentication and modes
  • Errors
  • Idempotency
  • Rate limits
  • Pagination

Reference

  • Endpoints
  • Objects

Guides

  • Booking lifecycle
  • Payment link and hold
  • Cancellations
  • Webhooks
  • Sandbox

More

  • Changelog
data_objectOpenAPI 3.1

Get started

Quickstart

From a test key to a paid booking and its webhook: quote, book, pay and receive events in test mode.

1. Create a test key

In the partners' portal, API section, create a test key. It starts with mvn_test_ and is shown only once: store it in your secrets manager. For these examples, put it in an environment variable.

bash
export MUVON_API_KEY=mvn_test_…

2. Check the key

curl "https://api.muvon.mx/api/v1/ping" \
  -H "Authorization: Bearer $MUVON_API_KEY"
Response · 200
{
  "object": "ping",
  "livemode": false,
  "partner": {
    "id": "p_4c1d9a",
    "code": "VIAJESSOL",
    "name": "Viajes Sol"
  }
}

3. Look up places

Take the airport and hotel ids from GET /places. If the place isn't listed, send address with lat and lng.

curl "https://api.muvon.mx/api/v1/places" \
  -H "Authorization: Bearer $MUVON_API_KEY"

4. Quote

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
    }
  ]
}'
Response · 201
{
  "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. Book

Pick an option and book. Always send a new Idempotency-Key per booking: if the connection drops, you retry without duplicates.

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"
}'
Response · 201
{
  "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. Collect payment

Send the payment_url to your customer (email, WhatsApp, your own page). In test mode the page uses Stripe in test mode: pay with card 4242 4242 4242 4242, any future date and any CVC. Or simulate it without opening it:

curl -X POST "https://api.muvon.mx/api/v1/test/bookings/TEST-000001/pay" \
  -H "Authorization: Bearer $MUVON_API_KEY"

7. Receive events

In the portal, save your test webhook URL and copy its whsec_… secret. Every booking change arrives signed: booking.created, booking.paid and then each ride status. Verify the signature as in Webhooks.

8. Go live

Once everything works, ask Muvon to enable live. Create a mvn_live_ key, save your live webhook URL and swap the key on your server. The code doesn't change: the mode comes from the key.

arrow_backPreviousReseller APINextarrow_forwardAuthentication and modes

On this page

  • 1. Create a test key
  • 2. Check the key
  • 3. Look up places
  • 4. Quote
  • 5. Book
  • 6. Collect payment
  • 7. Receive events
  • 8. Go live