Skip to main content

Public Partner API Quick Reference

External integrations primarily authenticated with X-API-Key.

Base URL​

https://service-gateway.loscenotes.com/api/partner

Authentication​

X-API-Key: sk_live_your_api_key

Key environments​

  • Use sk_live_ for all /api/partner/* examples below.
  • sk_test_ is rejected on /api/partner/* with Forbidden error.partner.sandbox_key_not_allowed_on_production_api. Sandbox keys are only for /api/partner-sandbox/* and the webhook simulator.
Not an integration route

POST /api/partner/seed-test-data is not part of this API. The hosted API returns 403 error.partner.seed_not_allowed_in_production.

Endpoints​

MethodEndpointDescription
GET/api/partner/reservationsList reservations for the authenticated partner
GET/api/partner/reservations/:idGet one reservation
POST/api/partner/reservationsCreate a reservation
POST/api/partner/reservations/:id/cancelCancel a reservation
GET/api/partner/cenotesList cenotes available to partners
GET/api/partner/cenotes/:cenoteId/packagesList active packages for a cenote. Use each id as packageId on create.
GET/api/partner/availability/:cenoteId?date=YYYY-MM-DDGet cenote availability

Reservation list example​

curl -X GET "https://service-gateway.loscenotes.com/api/partner/reservations?page=1&perPage=20" \
-H "X-API-Key: sk_live_your_api_key" \
-H "Content-Type: application/json"

Reservation create example​

curl -X POST "https://service-gateway.loscenotes.com/api/partner/reservations" \
-H "X-API-Key: sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"cenoteId": "550e8400-e29b-41d4-a716-446655440000",
"packageId": "660e8400-e29b-41d4-a716-446655440000",
"date": "2026-04-20",
"startTime": "09:00",
"endTime": "13:00",
"visitors": 4,
"ageBreakdown": { "adult": 3, "child": 1 },
"firstName": "John",
"lastName": "Smith",
"guestEmail": "john@example.com",
"guestPhone": "+52 999 123 4567",
"nationality": "MX",
"locale": "es"
}'

Create body is WEB-parity with public cenote booking: optional ageBreakdown, transport/pickup fields, additionalServices, couponCode, promotionId, locale, paymentMethod, and guest/contact aliases. List filters also accept dateFrom/dateTo and sortDirection.

Response notes​

  • monetary fields are returned in cents
  • list endpoints use the standard pagination wrapper
  • detail/create/cancel responses return normalized reservation summaries