For Developers & Integration Partners

DigiBeds Open API.

Connect your systems to DigiBeds hotels: read property info, rooms, rate plans, daily rates and live availability, push rate updates through the channel manager, and manage bookings — over a clean, secure JSON API.

HTTPS only JSON in / JSON out Token + Property Id auth 60 req / min per property
Getting started

One base URL. Two credentials. Twelve endpoints.

Every request is authenticated with a refresh token plus your property id — nothing else. Rooms and rate plans are addressed by public identifiers (property_room_id, property_rate_id); internal database ids and OTA mapping details are never exposed. Rate changes flow through the DigiBeds channel manager to the booking engine and every OTA channel your rooms are mapped to.

Base URL https://openapi.digibeds.com

Plain HTTP is rejected with 426 HTTPS_REQUIRED — no redirects, by design, so a leaked-over-HTTP token can never happen silently.

1 · Get credentialsYour property administrator issues a refresh token from the DigiBeds PMS Token Manager. Note the token and your property id.
2 · Verify authCall Get Property Info with only headers. A profile response confirms token, property id and connectivity.
3 · Discover idsCall Get Rooms and Get Rate Plans once and store every property_room_id and property_rate_id.
4 · Read & writeFetch rates and availability, then push rate updates through the channel manager — up to 366 days and 20 channels per call.
Authentication

Refresh token + property id.

Send both headers on every call. The token is bound to its property — a valid token with a different property id is rejected, so cross-property access is impossible. There is no IP restriction.

  • Sliding expiry: a token dies after 60 minutes without use; every successful call resets the clock. Expired tokens return TOKEN_EXPIRED — generate a new one from the PMS.
  • Shown once: the token value is displayed only at generation and stored as a salted hash. Keep it server-side; never ship it in a browser or app.
  • Rate limits: 60 requests/minute per property, 120/minute per IP — honour the Retry-After header on HTTP 429. Ten failed authentications lock the IP for 15 minutes.
Required headers
Authorization: Bearer <your refresh token>
X-Property-Id: <your property id>
Content-Type: application/json
Response envelope — every endpoint
// success
{ "success": true,
  "request_id": "3f81c1b2…",
  "timestamp": "2026-07-19T09:30:00+00:00",
  "data": { … } }

// failure
{ "success": false,
  "request_id": "b551f79a…",
  "timestamp": "2026-07-19T09:30:00+00:00",
  "error": { "code": "INVALID_CREDENTIALS",
             "message": "Refresh token and property id combination is not valid." } }
Interactive

curl Editor.

Pick an endpoint, fill in your credentials and parameters, and get a ready-to-run curl command — updated live as you type. Copy it into your terminal, CI job or code.

Generated curl
The Open API is built for server-to-server use. If the browser send is blocked by cross-origin security, copy the curl command and run it from a terminal — it will work there.
Reference

Endpoint reference.

Every endpoint with its request fields, a complete curl example, the success response and the endpoint-specific errors. Dates are YYYY-MM-DD and inclusive; amounts are decimals in the property’s currency.

GET | POST

1. Get Property Info

/openapi_property_info.php

Basic profile of the authenticated property: name, address, contact details, check-in/out times, currency and policies. Strictly read-only — property information can never be modified through the Open API, and credentials, payment keys or internal references are never returned.

  • No request body needed — GET with headers only, or POST with an empty JSON object {}.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_property_info.php \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>"
Example success response (tap to expand)
{
  "success": true,
  "request_id": "a4036f79\u2026",
  "timestamp": "2026-07-19T04:50:13+00:00",
  "data": {
    "property_id": "474255",
    "property": {
      "property_name": "Demo Hotel Digibeds",
      "address": "Barakhamba Road, Cannaught Place",
      "city": "New Delhi",
      "state": "Delhi",
      "country": "India",
      "country_code": "IN",
      "hotel_time_zone": "Asia/Kolkata",
      "pin_code": "110001",
      "checkin_time": "15:00:00",
      "checkout_time": "11:30:00",
      "phone_country_code": "+91",
      "phone_number": "9918041111",
      "email": "demo@\u2026",
      "num_rooms": 47,
      "primary_currency": "INR",
      "hotel_currency": "INR",
      "logo_url": "https://\u2026/logo.png",
      "cancellation_policy": "\u2026",
      "refund_policy": "\u2026"
    },
    "read_only": true
  }
}
Endpoint errors
HTTPCodeWhen
404PROPERTY_NOT_FOUNDNo profile record for the property.
405METHOD_NOT_ALLOWEDA method other than GET or POST was used.
POST

2. Get Rooms

/openapi_get_rooms.php

Lists every room type of the property with its public identifier property_room_id — the id used by all rates and availability calls. Internal database ids and OTA mapping identifiers are never included.

  • No parameters required; body is optional.
  • property_room_id is returned as a string so very large numeric ids stay safe in every JSON client.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_get_rooms.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>"
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "property_id": "474255",
    "count": 2,
    "rooms": [
      {
        "property_room_id": "474255000002",
        "room_type": "Deluxe Suite",
        "description": "Deluxe Suite for Family",
        "total_rooms": 5,
        "max_adults": 3,
        "max_children": 2,
        "max_room_capacity": 3,
        "images": [
          "https://\u2026/deluxe-1.jpg"
        ]
      },
      {
        "property_room_id": "474255000001",
        "room_type": "King Suite",
        "description": "Luxury King Suite",
        "total_rooms": 10,
        "max_adults": 4,
        "max_children": 3,
        "max_room_capacity": 4,
        "images": [
          "https://\u2026/king-1.jpg"
        ]
      }
    ]
  }
}
POST

3. Get Rate Plans

/openapi_get_rate_plans.php

Lists every rate plan with its public identifier property_rate_id, meal-plan inclusions and the cancellation policy.

  • cancellation_type is refundable or non_refundable. For refundable plans, free_cancellation_days is the number of days before check-in until which cancellation is free.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_get_rate_plans.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>"
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "property_id": "474255",
    "count": 3,
    "rate_plans": [
      {
        "property_rate_id": "87278278287",
        "name": "CP",
        "inclusions": "Breakfast Included",
        "min_nights": 1,
        "max_nights": null,
        "cancellation_type": "refundable",
        "free_cancellation_days": 2,
        "free_cancellation_time": "00:01:00"
      },
      {
        "property_rate_id": "4742550002",
        "name": "MAP",
        "inclusions": "Breakfast and Dinner Included",
        "min_nights": 1,
        "max_nights": null,
        "cancellation_type": "refundable",
        "free_cancellation_days": 2,
        "free_cancellation_time": "00:01:00"
      },
      {
        "property_rate_id": "727287287287",
        "name": "EP",
        "inclusions": "Room Only",
        "min_nights": 1,
        "max_nights": null,
        "cancellation_type": "non_refundable",
        "free_cancellation_days": null,
        "free_cancellation_time": null
      }
    ]
  }
}
POST

4. Fetch Rates

/openapi_fetch_rates.php

Daily per-occupancy rates (single, double, extra adult, extra child) for one room over a date range: the DigiBeds CM base rates plus per-channel rates for the booking engine and every mapped OTA channel. Maximum 92 days per request.

  • Omit channel to receive base rates plus every channel with data. DIGIBEDS_CM = base only; a channel name = that channel only (OTA channels must be mapped to the room).
  • Channel rows also carry the sell status: stop_sell, closed_to_arrival, closed_to_departure.
Request fields
FieldTypeRequiredDescription
property_room_idintegeryesRoom identifier from Get Rooms.
property_rate_idintegernoRate plan from Get Rate Plans. Omit for all plans.
date_from / date_todateyesYYYY-MM-DD, inclusive. Max 92 days.
channelstringnoDIGIBEDS_CM, BOOKING_ENGINE or an OTA channel.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_fetch_rates.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "property_room_id": 474255000002,
  "property_rate_id": 87278278287,
  "date_from": "2026-08-01",
  "date_to": "2026-08-02"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "property_id": "474255",
    "property_room_id": "474255000002",
    "room_type": "Deluxe Suite",
    "property_rate_id": "87278278287",
    "date_from": "2026-08-01",
    "date_to": "2026-08-02",
    "base_rates": [
      {
        "property_rate_id": "87278278287",
        "date": "2026-08-01",
        "currency": "INR",
        "rate_single": 4200.0,
        "rate_double": 5200.0,
        "rate_extra_adult": 1500.0,
        "rate_extra_child": 1000.0,
        "min_nights": 1,
        "max_nights": null,
        "updated_at": "2026-07-18 22:10:05"
      }
    ],
    "channels": {
      "BOOKING_ENGINE": [
        {
          "property_rate_id": "87278278287",
          "date": "2026-08-01",
          "currency": "INR",
          "rate_single": 4200.0,
          "rate_double": 5200.0,
          "rate_extra_adult": 1500.0,
          "rate_extra_child": 1000.0,
          "min_nights": 1,
          "max_nights": null,
          "stop_sell": 0,
          "closed_to_arrival": 0,
          "closed_to_departure": 0,
          "updated_at": "2026-07-18 22:10:05"
        }
      ]
    }
  }
}
Endpoint errors
HTTPCodeWhen
404ROOM_NOT_FOUND / RATE_PLAN_NOT_FOUNDUnknown public identifier for this property.
422CHANNEL_NOT_MAPPEDThe requested OTA channel is not mapped for this room.
422INVALID_DATESdate_to before date_from, or range exceeds 92 days.
POST

5. Fetch Availability

/openapi_fetch_availability.php

Daily availability of one room over a date range: rooms remaining per night — total rooms minus paid, non-cancelled bookings, calculated identically to the PMS availability grid — together with the channel manager sell status (stop_sell, closed_to_arrival, closed_to_departure) for one channel.

  • channel applies to sell_status and defaults to BOOKING_ENGINE. Calculated availability is channel-independent.
  • availability[] always covers every date in the range; sell_status only lists dates that have stored channel rows.
Request fields
FieldTypeRequiredDescription
property_room_idintegeryesRoom identifier from Get Rooms.
property_rate_idintegernoLimit sell_status to one rate plan.
date_from / date_todateyesYYYY-MM-DD, inclusive. Max 92 days.
channelstringnoBOOKING_ENGINE (default) or a mapped OTA channel.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_fetch_availability.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "property_room_id": 474255000002,
  "date_from": "2026-08-01",
  "date_to": "2026-08-03"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "property_id": "474255",
    "property_room_id": "474255000002",
    "room_type": "Deluxe Suite",
    "total_rooms": 5,
    "channel": "BOOKING_ENGINE",
    "date_from": "2026-08-01",
    "date_to": "2026-08-03",
    "availability": [
      {
        "date": "2026-08-01",
        "booked": 1,
        "available": 4
      },
      {
        "date": "2026-08-02",
        "booked": 1,
        "available": 4
      },
      {
        "date": "2026-08-03",
        "booked": 2,
        "available": 3
      }
    ],
    "sell_status": [
      {
        "property_rate_id": "87278278287",
        "date": "2026-08-01",
        "status": "open",
        "stop_sell": 0,
        "closed_to_arrival": 0,
        "closed_to_departure": 0,
        "min_nights": 1,
        "max_nights": null,
        "updated_at": "2026-07-18 22:10:05"
      }
    ]
  }
}
Endpoint errors
HTTPCodeWhen
404ROOM_NOT_FOUNDUnknown property_room_id.
422CHANNEL_NOT_MAPPEDOTA channel not mapped for this room.
422INVALID_DATESInvalid date order or range over 92 days.
POST

6. Update Rates (Channel Manager)

/openapi_channel_rate_update.php

Writes daily rates for one room and rate plan over a date range through the DigiBeds channel manager. A single call can update several targets: DIGIBEDS_CM (base rates), BOOKING_ENGINE, and any OTA channels the room is mapped to (OTA rows are queued for sync automatically). Upsert semantics: existing rows are updated, missing rows created — and a field omitted from an update line keeps its stored value.

  • Maximum range 366 days; up to 20 channel lines per call. The whole request is one transaction.
  • stop_sell / closed_to_arrival / closed_to_departure are valid on channel targets only, not on DIGIBEDS_CM.
  • An unmapped OTA channel rejects the whole request with CHANNEL_NOT_MAPPED — nothing is written.
Request fields
FieldTypeRequiredDescription
property_room_idintegeryesRoom identifier from Get Rooms.
property_rate_idintegeryesRate plan from Get Rate Plans.
date_from / date_todateyesYYYY-MM-DD, inclusive. Max 366 days.
updates[]arrayyes1–20 objects, one per target channel.
updates[].channelstringyesDIGIBEDS_CM, BOOKING_ENGINE or a mapped OTA channel.
updates[].rate_single / rate_double / rate_extra_adult / rate_extra_childnumbernoPer-occupancy daily rates (≥ 0).
updates[].currencystringno3-letter code; default INR on new rows.
updates[].min_nights / max_nightsintegernoStay restrictions (1–365 / 1–999).
updates[].stop_sell / closed_to_arrival / closed_to_departure0 | 1noSell flags. Channel targets only.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_channel_rate_update.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "property_room_id": 474255000002,
  "property_rate_id": 87278278287,
  "date_from": "2026-08-01",
  "date_to": "2026-08-31",
  "updates": [
    {
      "channel": "DIGIBEDS_CM",
      "rate_single": 4200.0,
      "rate_double": 5200.0,
      "rate_extra_adult": 1500.0,
      "rate_extra_child": 1000.0,
      "min_nights": 1
    },
    {
      "channel": "BOOKING_ENGINE",
      "rate_single": 4200.0,
      "rate_double": 5200.0,
      "stop_sell": 0
    },
    {
      "channel": "BOOKING_COM",
      "rate_single": 4500.0,
      "rate_double": 5500.0,
      "stop_sell": 0,
      "min_nights": 1
    }
  ]
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "property_id": "474255",
    "property_room_id": "474255000002",
    "property_rate_id": "87278278287",
    "rate_plan": "CP",
    "date_from": "2026-08-01",
    "date_to": "2026-08-31",
    "days": 31,
    "channels": [
      "DIGIBEDS_CM",
      "BOOKING_ENGINE",
      "BOOKING_COM"
    ],
    "rows_written": 93
  }
}
Endpoint errors
HTTPCodeWhen
404ROOM_NOT_FOUND / RATE_PLAN_NOT_FOUNDUnknown public identifier.
422CHANNEL_NOT_MAPPEDAn updates[] line names an unmapped OTA channel; nothing was written.
422INVALID_DATESInvalid order or range over 366 days.
422INVALID_FIELDNo field to update on a line, sell flags on DIGIBEDS_CM, or over 20 lines.
POST

7. New Booking

/openapi_new_booking.php

Creates a confirmed booking (paid or unpaid) and returns a unique booking reference.

Request fields
FieldTypeRequiredDescription
room_type_idintegeryesRoom type for the stay.
checkin / checkoutdateyesStay dates; checkout must be after checkin.
roomsintegerno1–20, default 1.
adults / childrenintegeryes / noAdults 1–40; children 0–20 (default 0).
guest_name / guest_email / guest_phonestringyesLead guest details.
total_amountnumberyesTotal booking amount.
payment_statusstringnopaid or unpaid (default unpaid).
special_requestsstringnoFree text, max 500 chars.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_new_booking.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "room_type_id": 2,
  "checkin": "2026-08-10",
  "checkout": "2026-08-12",
  "rooms": 1,
  "adults": 2,
  "children": 1,
  "guest_name": "Asha Verma",
  "guest_email": "[email protected]",
  "guest_phone": "+91 98765 43210",
  "total_amount": 8400.0,
  "payment_status": "paid"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "booking_id": 1041,
    "booking_ref": "OB-20260719-4F7A2C",
    "room_type": "Deluxe Suite",
    "checkin": "2026-08-10",
    "checkout": "2026-08-12",
    "nights": 2,
    "rooms": 1,
    "total_amount": 8400.0,
    "paid_amount": 8400.0,
    "payment_status": "paid",
    "status": "confirmed"
  }
}
Endpoint errors
HTTPCodeWhen
404ROOM_TYPE_NOT_FOUNDroom_type_id does not belong to this property.
422INVALID_DATEScheckout is not after checkin.
POST

8. Booking with Partial Payment

/openapi_new_partial_payment_booking.php

Creates a confirmed booking with an advance payment recorded against it; the response reports the remaining balance.

Request fields
FieldTypeRequiredDescription
Same as New Booking, plus:
advance_amountnumberyesAdvance paid now; must not exceed total_amount.
payment_modestringyesMode of the advance (e.g. card, upi, bank, cash).
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_new_partial_payment_booking.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "room_type_id": 2,
  "checkin": "2026-08-10",
  "checkout": "2026-08-12",
  "adults": 2,
  "guest_name": "Asha Verma",
  "guest_email": "[email protected]",
  "guest_phone": "+91 98765 43210",
  "total_amount": 8400.0,
  "advance_amount": 2000.0,
  "payment_mode": "upi"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "booking_ref": "OB-20260719-9C1D2E",
    "total_amount": 8400.0,
    "advance_paid": 2000.0,
    "balance_due": 6400.0,
    "payment_mode": "upi",
    "payment_status": "partial",
    "status": "confirmed"
  }
}
Endpoint errors
HTTPCodeWhen
422INVALID_FIELDadvance_amount exceeds total_amount.
POST

9. Search Bookings

/openapi_search_booking.php

Searches the property's bookings. All filters are optional and combine with AND; results are always scoped to the token's property and paginated.

Request fields
FieldTypeRequiredDescription
booking_ref / guest_email / guest_phonestringnoExact-match filters.
statusstringnoconfirmed, cancelled, checked_in or checked_out.
checkin_from / checkin_todatenoCheck-in date window.
page / per_pageintegernoPagination; per_page 1–100 (default 25).
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_search_booking.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "confirmed",
  "checkin_from": "2026-08-01",
  "checkin_to": "2026-08-31",
  "page": 1,
  "per_page": 25
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "total": 2,
    "page": 1,
    "per_page": 25,
    "bookings": [
      {
        "booking_id": 1041,
        "booking_ref": "OB-20260719-4F7A2C",
        "room_type": "Deluxe Suite",
        "guest_name": "Asha Verma",
        "checkin": "2026-08-10",
        "checkout": "2026-08-12",
        "total_amount": 8400.0,
        "paid_amount": 8400.0,
        "payment_status": "paid",
        "status": "confirmed"
      }
    ]
  }
}
POST

10. Cancel Booking

/openapi_cancel_booking.php

Cancels a booking by its reference. If money was collected, the response notes the paid amount so refunds can be handled per property policy.

Request fields
FieldTypeRequiredDescription
booking_refstringyesBooking reference to cancel.
reasonstringnoCancellation reason, max 250 chars.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_cancel_booking.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "booking_ref": "OB-20260719-4F7A2C",
  "reason": "Guest requested cancellation"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "booking_ref": "OB-20260719-4F7A2C",
    "status": "cancelled",
    "paid_amount": 8400.0,
    "refund_note": "Paid amount on record; process refund per property policy.",
    "reason": "Guest requested cancellation"
  }
}
Endpoint errors
HTTPCodeWhen
404BOOKING_NOT_FOUNDNo booking with this reference.
409ALREADY_CANCELLEDThe booking is already cancelled.
POST

11. Upgrade / Downgrade Booking

/openapi_upgrade_downgrade_booking.php

Moves an existing booking to another room type at a new total. The API classifies the change by comparing totals and reports the difference and balance due.

Request fields
FieldTypeRequiredDescription
booking_refstringyesBooking reference to modify.
new_room_type_idintegeryesTarget room type.
new_total_amountnumberyesNew total price for the stay.
remarksstringnoNote, max 250 chars.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_upgrade_downgrade_booking.php \
  -X POST \
  -H "Authorization: Bearer <your refresh token>" \
  -H "X-Property-Id: <your property id>" \
  -H "Content-Type: application/json" \
  -d '{
  "booking_ref": "OB-20260719-9C1D2E",
  "new_room_type_id": 1,
  "new_total_amount": 10400.0,
  "remarks": "Guest upgraded to King Suite"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "booking_ref": "OB-20260719-9C1D2E",
    "change": "upgrade",
    "new_room_type": "King Suite",
    "old_total_amount": 8400.0,
    "new_total_amount": 10400.0,
    "difference": 2000.0,
    "paid_amount": 2000.0,
    "balance_due": 8400.0,
    "payment_status": "partial"
  }
}
Endpoint errors
HTTPCodeWhen
404BOOKING_NOT_FOUND / ROOM_TYPE_NOT_FOUNDUnknown reference or room type.
POST

12. Token Administration

/openapi_generate_token.php

Administrative endpoint to generate, list and revoke refresh tokens — gated by a separate admin key (X-Admin-Key header), not a refresh token. Property administrators normally use the PMS dashboard's Token Manager instead.

  • The token value is shown once at generation and stored only as a salted hash — copy it immediately.
  • Send the admin key only from server-side code, never from a browser or app.
Request fields
FieldTypeRequiredDescription
actionstringyesgenerate, list or revoke.
property_codestringfor generate/listThe property id the token belongs to.
labelstringnoFree-text label (e.g. “OTA integration”).
token_idintegerfor revokeId from the list action.
Example request (curl)
curl -s https://openapi.digibeds.com/openapi_generate_token.php \
  -X POST \
  -H "X-Admin-Key: <your admin key>" \
  -H "Content-Type: application/json" \
  -d '{
  "action": "generate",
  "property_code": "474255",
  "label": "OTA integration"
}'
Example success response (tap to expand)
{
  "success": true,
  "data": {
    "token": "nY4kQ\u202686 characters\u2026Zw",
    "token_hint": "nY4kQx8t",
    "property_id": "474255",
    "idle_expiry": "60 minutes of inactivity",
    "note": "Store this token securely. It cannot be retrieved again."
  }
}
Endpoint errors
HTTPCodeWhen
401INVALID_ADMIN_KEYWrong or missing X-Admin-Key.
429IP_LOCKEDToo many failed attempts; wait 15 minutes.
Errors

Error code reference.

Every failure returns the standard envelope with a stable machine-readable error.code. Log the request_id from every response and quote it when contacting DigiBeds support.

Rate updates are idempotent upserts — re-sending the same request after a network failure is safe and produces the same end state.
HTTPCodeMeaning
400EMPTY_BODY / INVALID_JSONBody missing or not valid JSON.
401MISSING_TOKENAuthorization: Bearer header absent or malformed.
401MISSING_PROPERTY_IDX-Property-Id header absent.
401INVALID_CREDENTIALSToken and property id do not match any active token.
401TOKEN_EXPIREDToken unused for 60 minutes; generate a new one.
404ROOM_NOT_FOUND / RATE_PLAN_NOT_FOUNDUnknown public identifier for this property.
404PROPERTY_NOT_FOUND / BOOKING_NOT_FOUNDNo matching record for this property.
405METHOD_NOT_ALLOWEDWrong HTTP method for the endpoint.
413BODY_TOO_LARGERequest body exceeds 64 KB.
422MISSING_FIELD / INVALID_FIELDA required field is absent or a value fails validation.
422INVALID_DATESDate order or range-length rule violated (92 days fetch / 366 update).
422CHANNEL_NOT_MAPPEDThe room is not mapped to the requested OTA channel.
426HTTPS_REQUIREDRequest arrived over plain HTTP.
429RATE_LIMITED / IP_LOCKEDLimit exceeded — honour Retry-After (60 s) / wait 15 minutes.
5xxSERVER_ERROR / SERVICE_UNAVAILABLETemporary issue; safe to retry shortly.

Ready to integrate with DigiBeds?

API access is issued per property by DigiBeds. Talk to us to get your refresh token, sandbox access and integration support.