> ## Documentation Index
> Fetch the complete documentation index at: https://docs.d-edge.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This site documents the D-EDGE APIs for technology partners (web agencies, OTAs, PMS and RMS vendors, booking and CRM tools). It is written for developers integrating with hotels that use the D-EDGE platform.
> Seven APIs, grouped by domain. Connectivity: Channel Manager API (distribute a hotel's inventory to your channel and send bookings back). Pricing & Availability: Best Price API (best offers to highlight), Quotation API (all bookable offers for a stay), Daily Rates API (daily availability between two dates). Booking: Booking Engine API (a hotel's full direct booking funnel), Gift Shop API (gift vouchers from catalogue to payment). Guest Management: CRM API (guest profiles).
> Pick the API by the need: to display prices, use the Best Price API or the Daily Rates API; to quote a specific stay, use the Quotation API; to book, use the Booking Engine API; to sell gift vouchers, use the Gift Shop API; to manage guest profiles, use the CRM API; to receive hotel inventory and send bookings back as a distribution channel, use the Channel Manager API.
> Base URLs, hotel identifiers, and credentials are delivered by the D-EDGE partnership team during onboarding. Do not invent base URLs, endpoints, parameters, or example credentials that do not appear on these pages.
> Authentication differs per API: OAuth 1.0 for Best Price, Quotation, Daily Rates, and Booking Engine; an X-API-KEY header for Gift Shop; OAuth 2.0 client credentials for CRM; partner-defined credentials carried in the XML message for the Channel Manager API. Read each API's Authentication page before writing code.
> A mock environment returns realistic but fictitious data without credentials. The Postman and Insomnia collections on the API collections page target it by default. Use it for exploration and tests, never for production traffic.
> Use the official names exactly: D-EDGE, D-EDGE platform, Channel Manager API, partnership team. Do not use Back Office or Extranet.
> Each API has a Changelog page. Check it for the current behaviour before relying on an older answer. For questions these pages do not answer, direct the reader to the Contact us page.

# Branded confirmation page

> Render the booking confirmation on the hotel's own domain

After a guest pays, keep them on the hotel's own domain instead of a generic confirmation screen. Fetch the full booking confirmation from the API and render it in your own branded page.

## Prerequisites

* A completed booking. Run the funnel through [Accept a quote](/booking-engine-api/build/reference/basket/post-quote.md) first, and keep the `sessionId` that confirmed it.
* The **Hotel Domain** feature, enabled by D-EDGE.
* The OAuth 1.0 signing setup from the [Quick start](/booking-engine-api/get-started/quick-start.md).

## How it works

The guest pays on a D-EDGE-hosted page, then is redirected back. With **Hotel Domain** enabled, that redirect lands on the hotel's own website, so your site takes over.

`GET /v2/booking/{sessionId}/confirmation` then returns the full confirmation: stay information, customer details, room descriptions, and the booking amounts (total, booking fees, deposit, and balance). This endpoint is for a hotel rendering its own confirmation.

## Fetch the confirmation

> [!NOTE]
>
> The examples reuse the OAuth 1.0 signing setup from the [Quick start](/booking-engine-api/get-started/quick-start.md). Replace `{sessionId}` with the session that confirmed the booking.

```bash cURL theme={null}
curl --request GET \
  --url 'https://{apiBaseUrl}/v2/booking/{sessionId}/confirmation' \
  --header 'Authorization: OAuth ...'
```

```javascript Node.js theme={null}
const url = "https://{apiBaseUrl}/v2/booking/{sessionId}/confirmation";

const response = await fetch(url, {
  method: "GET",
  headers: { ...oauth.toHeader(oauth.authorize({ url, method: "GET" }, token)) },
});

const confirmation = await response.json();
```

```python Python theme={null}
response = session.get("https://{apiBaseUrl}/v2/booking/{sessionId}/confirmation")
confirmation = response.json()
```

```php PHP theme={null}
$response = $client->get('v2/booking/{sessionId}/confirmation');
$confirmation = json_decode($response->getBody(), true);
```

```csharp C# theme={null}
var request = new RestRequest("/v2/booking/{sessionId}/confirmation", Method.Get);

var response = await client.ExecuteAsync(request);
var confirmation = JsonDocument.Parse(response.Content!).RootElement;
```

```java Java theme={null}
HttpGet request = new HttpGet("https://{apiBaseUrl}/v2/booking/{sessionId}/confirmation");
consumer.sign(request);

JsonNode confirmation;
try (CloseableHttpResponse response = client.execute(request)) {
    confirmation = mapper.readTree(EntityUtils.toString(response.getEntity()));
}
```

Render the returned fields in your own layout.

## Tips

* **Treat customer data with care**. The confirmation carries guest and customer details. Handle and store them in line with your privacy obligations.
* **Fetch on the redirect, do not poll**. Use the post-payment redirect to your site as the trigger to fetch the confirmation, rather than calling the endpoint in a loop. The redirect is your signal that the payment went through: the confirmation body carries the booking details and amounts, not a payment result.

## Related

> **[Get a booking confirmation](/booking-engine-api/build/reference/booking/get-booking-confirmation.md)**
>
> Full schema for the confirmation endpoint.

> **[Create a booking access token](/booking-engine-api/build/reference/booking/get-booking-token.md)**
>
> Time-limited token for the modification page.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.