Create Booking
Create reservations programmatically for direct bookings, owner blocks, maintenance holds, or imports from external systems.
When to use this endpoint
- Accept direct bookings from your own website or booking engine
- Create owner blocks to hold dates for personal use
- Block dates for maintenance or renovation work
- Import existing reservations from an external system during migration
Idempotency recommended
Idempotency-Key header to safely retry requests without creating duplicate reservations. See Idempotency for details.Create a reservation
/v1/reservationscurl -X POST "https://api.repull.dev/v1/reservations" \
-H "Authorization: Bearer sk_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: unique-booking-id-001" \
-d '{
"propertyId": "123",
"checkIn": "2026-07-10",
"checkOut": "2026-07-15",
"primaryGuest": {
"firstName": "Sarah",
"lastName": "Mitchell",
"email": "sarah@example.com",
"phone": "+1-555-0123"
},
"occupancy": { "adults": 2, "children": 1, "infants": 0, "pets": 0 },
"financials": { "totalPrice": 1250, "currency": "USD" },
"source": "DIRECT"
}'Body parameters
propertyIdstringRequiredID of the property to book.
checkIndateRequiredCheck-in date. Format: YYYY-MM-DD.
checkOutdateRequiredCheck-out date. Format: YYYY-MM-DD.
primaryGuestobjectRequiredGuest who is making the booking.
firstName (required), lastName, email, phoneoccupancyobjectNumber of guests by category.
adults children infants petsfinancialsobjectPricing for the reservation.
totalPrice currency (ISO 4217)sourcestringWhere the booking originated.
DIRECT MANUAL AIRBNB BOOKING_COM VRBOResponse format
Returns the newly created reservation with a system-generated confirmation code.
{
"data": {
"id": "789",
"propertyId": "123",
"status": "CONFIRMED",
"source": "DIRECT",
"confirmationCode": "RPL-A7X92K",
"checkIn": "2026-07-10",
"checkOut": "2026-07-15",
"primaryGuest": {
"firstName": "Sarah",
"lastName": "Mitchell",
"email": "sarah@example.com",
"phone": "+1-555-0123"
},
"occupancy": {
"adults": 2,
"children": 1,
"infants": 0,
"pets": 0
},
"financials": {
"totalPrice": 1250,
"currency": "USD",
"paymentStatus": "pending",
"breakdown": {
"basePrice": 1100,
"cleaningFee": 100,
"fees": [{ "type": "SERVICE_FEE", "amount": 50 }],
"taxes": [],
"discounts": []
}
},
"bookedAt": "2026-06-20T14:30:00Z"
}
}Response fields
idstringUnique reservation identifier.
propertyIdstringID of the booked property.
statusstringInitial status, typically CONFIRMED for direct bookings.
sourcestringBooking source passed in the request.
confirmationCodestringSystem-generated confirmation code (e.g. RPL-A7X92K).
checkInstringCheck-in date (YYYY-MM-DD).
checkOutstringCheck-out date (YYYY-MM-DD).
primaryGuestobjectGuest details as provided.
occupancyobjectNumber of guests by category.
financialsobjectComplete pricing breakdown.
bookedAtstringISO 8601 timestamp when the reservation was created.
Common examples
Owner block (no guest details)
curl -X POST "https://api.repull.dev/v1/reservations" \
-H "Authorization: Bearer sk_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"propertyId": "123",
"checkIn": "2026-08-01",
"checkOut": "2026-08-10",
"primaryGuest": { "firstName": "Owner" },
"source": "MANUAL"
}'Maintenance hold
curl -X POST "https://api.repull.dev/v1/reservations" \
-H "Authorization: Bearer sk_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"propertyId": "123",
"checkIn": "2026-09-15",
"checkOut": "2026-09-20",
"primaryGuest": { "firstName": "Maintenance" },
"source": "MANUAL"
}'API Reference
See the complete Reservations API Reference for all endpoints including list, update, and cancel.