EDistribution API

Apply an amendment to a booking#

POST/v1/bookings/{bookingId}/amendments

This call changes the booking. Same body, same semantics and the same refusals as PATCH /v1/bookings/{bookingId} — which remains the read-only quote — but here the change is actually made: the channel manager is told first, then every row is rewritten, then your group's credit charge is moved to match. Amending is a separate call from quoting so that asking what a change would cost is never itself a commitment.

The order is strict and it matters. Nothing is written until the channel manager has accepted the amended stay. If it refuses, you get a 409 naming what it refused and nothing has changed anywhere. If it accepts and a later step fails, your original stay is pushed back to the channel and the failure is recorded against the amendment for a human to see.

An increase passes the same credit check a new booking passes. An amendment is not a way around your credit limit: if the extra amount would breach it you get the same 402 a booking would get, and the amendment is not applied. A decrease is never gated — giving credit back cannot breach a limit.

Retries are safe. An amendment is idempotent over its own content and the stay it applies to, so re-sending the identical request after a timeout resolves to the amendment that already happened and returns it with alreadyApplied: true — it never moves the money twice. Sending a genuinely different amendment is a new amendment. If two amendments race on one booking, exactly one applies and the other gets a 409 telling you to re-quote.

Two refusals specific to applying. A booking already billed on an issued invoice is a 409: an issued invoice is never edited, so that case needs a credit note and a fresh booking rather than an amendment. A booking held at a channel that cannot modify an existing reservation is also a 409 — that is a limitation of the property's channel, not of your request, and cancelling and rebooking is the way round it.

Request

cURL
curl -X POST 'https://partner-api.elivaas.com/v1/bookings/{bookingId}/amendments' \
  -u "$ELIVAAS_API_KEY:" \
  -H 'Content-Type: application/json' \
  -d '{"checkIn":"2026-08-11","checkOut":"2026-08-15","adults":3,"children":1,"infants":0,"meals":[{"mealId":"meal_breakfast","dates":["2026-08-01"],"unsureOfDates":true,"adults":0,"children":0,"chefOnCall":true}],"vas":[{"vasId":"vas_airport_transfer","variantId":"string","dates":["2026-08-01"],"unsureOfDates":true,"quantity":0,"dateQuantities":[{"date":"2026-08-01","quantity":0}]}],"guests":[{"guestId":"string","salutation":"string","firstName":"string","lastName":"string","email":"string","phone":"string","countryCode":"string","city":"string","dob":"2026-08-01","anniversary":"2026-08-01","position":0}]}'
Response 200
{
  "bookingId": "string",
  "amendmentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "checkIn": "2026-08-01",
  "checkOut": "2026-08-01",
  "previousTotal": 0,
  "newTotal": 0,
  "delta": 0,
  "amendmentDelta": 0,
  "rateDriftAbsorbed": 0,
  "warnings": [
    "string"
  ],
  "alreadyApplied": true
}

Path parameters#

bookingIdstringrequired

No description in the spec.

Request body#

checkInstring<date>

New check-in date (ISO 8601). Omit to keep the current one.

checkOutstring<date>

New check-out date (ISO 8601). Omit to keep the current one.

adultsinteger<int32>

New adult count. Omit to keep the current one.

childreninteger<int32>

New child count. Omit to keep the current one.

infantsinteger<int32>

New infant count. Omit to keep the current one.

mealsobject[]

The complete meal selection the amended stay should have. Omit to leave the current meals alone; send [] to remove every meal.

vasobject[]

The complete value-added-service selection the amended stay should have. Omit to leave the current services alone; send [] to remove every service.

guestsobject[]

The complete guest list for the amended stay, lead guest first. Omit to leave the current guests alone. Accepted and validated for shape today; guests change neither the price nor the availability verdict, so this preview echoes them back rather than acting on them — the amendment itself applies them.

Responses#

StatusMeaning
200The amendment was applied (or was already applied by an earlier, identical request).
400Validation failure. The message names the offending parameter. Limits are rejected, never silently clamped: an over-length id list, a page size above 100 or a date window longer than 365 days all land here rather than coming back quietly truncated.
401Missing, malformed, revoked or unknown API key, or an agent group whose distribution access is disabled. Pass the key as the HTTP Basic username with an empty password.
402The increase would breach the group's credit limit. Nothing changed.
429Rate limit exhausted for this credential. Wait Retry-After seconds before retrying; the budget is per credential, not per IP.

See Errors for the error body shape and which statuses are worth retrying.