Negotiated Rates

Negotiated rates enable you to pass rate access codes for certain stays accommodation or a chain to our sources

accommodation_ids
string[]nullable

The hotel accommodation IDs this negotiated rate is valid for

Example: ["acc_0000AWr2VsUNIF1Vl91xg0"]
chain_id
stringnullable

The ID of the hotel chain this negotiated rate is valid for

Example: "chn_0000B6QFxO9EOY5cqw5kYK"
display_name
string

The display name of the negotiated rate

Example: "2025 Negotiated Rate"
id
string

The ID of the Negotiated Rate

Example: "nre_0000AvtkNoC81yBytDM9PE"
live_mode
boolean

Whether this negotiated is for live mode. When false, it is for test mode

Example: false
rate_access_code
string

The rate access code to be utilised when using this negotiated rate

Example: "DUFFEL"

Deletes a negotiated rate by its ID.

URL parameters

id
stringrequired

The ID of the Negotiated Rate

Example: "nre_0000AvtkNoC81yBytDM9PE"

Endpoint

DELETE https://api.duffel.com/stays/negotiated_rates/{id}

Request

curl -X DELETE --compressed "https://api.duffel.com/stays/negotiated_rates/{id}" \
-H "Accept-Encoding: gzip" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Duffel-Version: v2" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"

Response

{
"data": {
"rate_access_code": "DUFFEL",
"live_mode": false,
"id": "nre_0000AvtkNoC81yBytDM9PE",
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
}

Retrieves a negotiated rate by its ID.

URL parameters

id
stringrequired

The ID of the Negotiated Rate

Example: "nre_0000AvtkNoC81yBytDM9PE"

Endpoint

GET https://api.duffel.com/stays/negotiated_rates/{id}

Request

curl -X GET --compressed "https://api.duffel.com/stays/negotiated_rates/{id}" \
-H "Accept-Encoding: gzip" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Duffel-Version: v2" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"

Response

{
"data": {
"rate_access_code": "DUFFEL",
"live_mode": false,
"id": "nre_0000AvtkNoC81yBytDM9PE",
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
}

Update a negotiated rate with the given parameters. Only the display name, list of accommodation IDs or chain ID can be modified.

URL parameters

id
stringrequired

The ID of the Negotiated Rate

Example: "nre_0000AvtkNoC81yBytDM9PE"

Body parameters

accommodation_ids
string[]required

The hotel accommodation IDs this negotiated rate is valid for. Mutually exclusive with chain_id'

Example: ["acc_0000AWr2VsUNIF1Vl91xg0"]
chain_id
stringrequired

The ID of the hotel chain this negotiated rate is valid for. Mutually exclusive with accommodation_ids

Example: "chn_0000B6QFxO9EOY5cqw5kYK"
display_name
stringrequired

The display name of the negotiated rate

Example: "2025 Negotiated Rate"

Endpoint

PATCH https://api.duffel.com/stays/negotiated_rates/{id}

Request

curl -X PATCH --compressed "https://api.duffel.com/stays/negotiated_rates/{id}" \
-H "Accept-Encoding: gzip" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Duffel-Version: v2" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
-d '{
"data": {
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
}'

Response

{
"data": {
"rate_access_code": "DUFFEL",
"live_mode": false,
"id": "nre_0000AvtkNoC81yBytDM9PE",
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
}

Lists negotiated rates made for your organisation.

Query parameters

after
string

A cursor pointing to the previous page of records. For more information on how to paginate through records, see the Pagination section.

Example: "g2wAAAACbQAAABBBZXJvbWlzdC1LaGFya2l2bQAAAB="
before
string

A cursor pointing to the next page of records. For more information on how to paginate through records, see the Pagination section.

Example: "g2wAAAACbQAAABBBZXJvbWlzdC1LaGFya2l2bQAAAB="
limit
integer

The maximum number of records to return per page. Defaults to 50. May be set to any integer between 1 and 200. For more information on how to paginate through records, see the Pagination section.

Example: 1
Default value: 50

Endpoint

GET https://api.duffel.com/stays/negotiated_rates

Request

curl -X GET --compressed "https://api.duffel.com/stays/negotiated_rates?after=g2wAAAACbQAAABBBZXJvbWlzdC1LaGFya2l2bQAAAB=&before=g2wAAAACbQAAABBBZXJvbWlzdC1LaGFya2l2bQAAAB=&limit=1" \
-H "Accept-Encoding: gzip" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Duffel-Version: v2" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>"

Response

{
"meta": {
"limit": 50,
"after": "g2wAAAACbQAAABBBZXJvbWlzdC1LaGFya2l2bQAAAB="
},
"data": [
{
"rate_access_code": "DUFFEL",
"live_mode": false,
"id": "nre_0000AvtkNoC81yBytDM9PE",
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
]
}

To create a negotiated rate you need to provide the rate access code (RAC), the display name, and list of accommodation IDs or chain ID the RAC has been loaded for.

Body parameters

accommodation_ids
string[]required

The hotel accommodation IDs this negotiated rate is valid for. Mutually exclusive with chain_id

Example: ["acc_0000AWr2VsUNIF1Vl91xg0"]
chain_id
stringrequired

The ID of the hotel chain this negotiated rate is valid for. Mutually exclusive with accommodation_ids

Example: "chn_0000B6QFxO9EOY5cqw5kYK"
display_name
stringrequired

The display name of the negotiated rate

Example: "2025 Negotiated Rate"
rate_access_code
stringrequired

The rate access code to be utilised when using this negotiated rate

Example: "DUFFEL"

Endpoint

POST https://api.duffel.com/stays/negotiated_rates

Request

curl -X POST --compressed "https://api.duffel.com/stays/negotiated_rates" \
-H "Accept-Encoding: gzip" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Duffel-Version: v2" \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
-d '{
"data": {
"rate_access_code": "DUFFEL",
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
}'

Response

{
"data": {
"rate_access_code": "DUFFEL",
"live_mode": false,
"id": "nre_0000AvtkNoC81yBytDM9PE",
"display_name": "2025 Negotiated Rate",
"chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
"accommodation_ids": [
"acc_0000AWr2VsUNIF1Vl91xg0"
]
}
}