Developers

Built API-first.

A REST API with JSON, signed requests and a free test key. Your partners book through the same engine your staff use.

Product preview with demo data

Request

POST https://api.dmcengine.com/v1/bookings
Authorization: Bearer tp_test_7Hq2Rk...
Idempotency-Key: demo-hotel-1
X-Timestamp: 1793011272
X-Signature: 9be07d...31

{
  "valuation_id": "val_4N7TQ2",
  "accepted_total": { "amount_minor": 112400, "currency": "EUR" },
  "terms_hash": "b7e1c0...5a",
  "passengers": [
    { "type": "adult", "first_name": "Fictional", "last_name": "One" },
    { "type": "adult", "first_name": "Fictional", "last_name": "Two" },
    { "type": "child", "first_name": "Fictional", "last_name": "Three", "age": 9 },
    { "type": "child", "first_name": "Fictional", "last_name": "Four", "age": 4 }
  ],
  "external_reference": "DEMO-HOTEL-1"
}

Response201 Created

X-Request-Id: req_7f2a91c4

{
  "kind": "booking",
  "booking": {
    "reference": "BK-004218",
    "external_reference": "DEMO-HOTEL-1",
    "version": 1,
    "status": "confirmed",
    "total": { "amount_minor": 112400, "currency": "EUR" },
    "created_at": "2026-10-26T10:41:12Z"
  }
}

If the supplier's answer is lost202 Accepted

{ "kind": "operation",
  "operation": { "code": "SUPPLIER_OUTCOME_UNKNOWN" } }

Quote request

POST https://api.dmcengine.com/v1/bookings/BK-004211/cancellation-quotes
Authorization: Bearer tp_test_7Hq2Rk...
X-Timestamp: 1793011938
X-Signature: 2f8a61...07

{}

Quote response200 OK

X-Request-Id: req_3e8b05d2

{
  "cancellation_quote_id": "cq_7K2PZ8",
  "penalty": { "amount_minor": 0, "currency": "AED" },
  "refundable": { "amount_minor": 118000, "currency": "AED" },
  "terms_hash": "5d02af...c3"
}

Cancellation request

POST https://api.dmcengine.com/v1/bookings/BK-004211/cancellations
Authorization: Bearer tp_test_7Hq2Rk...
Idempotency-Key: demo-cancel-1
X-Timestamp: 1793011940
X-Signature: d41e9c...6b

{
  "cancellation_quote_id": "cq_7K2PZ8",
  "expected_booking_version": 1,
  "accepted_penalty": { "amount_minor": 0, "currency": "AED" },
  "terms_hash": "5d02af...c3"
}

Cancellation response200 OK

X-Request-Id: req_5d1c80a3

{
  "kind": "booking",
  "booking": {
    "reference": "BK-004211",
    "version": 2,
    "status": "cancelled"
  }
}

From search to cancellation.

Real paths and field names from the engine's OpenAPI 3.1 description. Values in the examples are demo data.

Partner APIv1

  • POST/v1/searchesSearch
  • POST/v1/offers/{id}/revalidateRevalidate an offer
  • POST/v1/bookingsBook
  • GET/v1/bookings/{id}Read a booking
  • POST/v1/bookings/{id}/cancellation-quotesQuote a cancellation
  • POST/v1/bookings/{id}/cancellationsCancel
  • GET/v1/productsList products
  • OpenAPI 3.1 description"openapi": "3.1.0"
  • Test and live keysStart on a free test key.Bearer tp_test_7Hq2Rk...
  • Request ids on every changeX-Request-Id: req_7f2a91c4
  • Signed requestsEvery partner API request is signed and checked for freshness and replay.X-Timestamp · X-Signature

Request log.

Monday 26 Oct 2026, demo times: a search, two bookings and a cancellation, including a supplier answer that was lost.

Partner API · test key · Monday 26 Oct 2026
Product preview with demo data
  1. 10:41:07POST/v1/searches14 offers, complete200
  2. 10:41:09POST/v1/offers/off_8F3KX2/revalidateEUR 1,124.00 held200
  3. 10:41:12POST/v1/bookingsBK-004218 confirmedreq_7f2a91c4201
  4. 10:44:30POST/v1/bookingsSUPPLIER_OUTCOME_UNKNOWN, BK-004213req_9b26e4f7Checking supplier202
  5. 10:46:02WORKERreconcile.bookingBK-004213 confirmed, supplier asked 1 timeConfirmed after check
  6. 10:46:03WEBHOOKbooking.confirmedBK-004213, delivered to the partner's webhook200
  7. 10:52:18POST/v1/bookings/BK-004211/cancellation-quotesPenalty AED 0.00req_3e8b05d2200
  8. 10:52:20POST/v1/bookings/BK-004211/cancellationsRefund AED 1,180.00 recordedreq_5d1c80a3200

Never books twice

If a supplier's answer is lost, the booking waits as outcome unknown. DMC Engine never sends it again: it reads the supplier with our reference and settles the booking.

  1. 10:44:30, outcome unknown202 Accepted with SUPPLIER_OUTCOME_UNKNOWN. BK-004213 waits, checking supplier.
  2. 10:46:02, settled by the workerIt reads the supplier with our reference: BK-004213 confirmed, supplier asked 1 time.
  3. 10:46:03, webhook deliveredbooking.confirmed reaches the partner's webhook, 200.

Read next

  • Product

    The console

    Contracts, prices, bookings, operations and payments in one platform.

  • How it works

    One booking through the engine

    Hotel contracts, ground services and supplier connections go in. Prices, bookings, pickups and invoices come out.

Bring one hotel contract to your demo. We will load it and price it with you.

Book a demo

Or write to hello@dmcengine.com