Find solutions to common issues when retrieving conversations, sending messages, confirming receipt and managing attachments using the Messaging API.
This guide helps you identify possible causes and resolve problems in your messaging integration.
This guide applies to the Messaging API v3.3 Stable.
Issue: Calling /messages/conversations does not return the expected conversation.
| Possible cause | Recommended action |
|---|---|
| Incorrect accommodation or reservation ID | Verify that the identifiers match the reservation associated with the conversation. |
| Incorrect conversation ID | If retrieving by conversation ID, verify that it belongs to the specified accommodation. |
| Reservation not created successfully | Check that /orders/create completed successfully and returned a reservation ID. |
| Conversation not yet available | Allow time for the conversation to become available after reservation creation, then retry according to your application's retry strategy. |
| Conversation not accessible | Verify that the conversation is available to your authenticated affiliate account. |
Use /messages/conversations with one of the following combinations:
accommodationandreservation.accommodationandconversation.
Provide either a reservation ID or a conversation ID together with the accommodation ID.
The current schema defines these as alternative request structures.
Issue: /messages/latest returns an empty data.messages array or does not return the expected message.
| Possible cause | Recommended action |
|---|---|
| No new messages available | An empty response can occur when there are no recent messages available to retrieve. |
| Message not yet available | Allow time for the message to become available before polling again. |
| Previous messages not confirmed | Check whether previously processed messages have been confirmed using /messages/latest/confirm. |
| Incorrect affiliate account | Verify that the request uses the expected X-Affiliate-Id and valid credentials. |
| Expected message belongs to another conversation | Check the conversation, accommodation and reservation identifiers returned by the API. |
Use /messages/latest to retrieve recent messages.
Example request
POST /messages/latest
{}By default, the endpoint returns up to 100 messages in reverse chronological order.
The /messages/latest endpoint retrieves recent messages available to your affiliate account, not only messages associated with a specific reservation.
Use the conversation identifiers returned in each message to identify the correct booking.
Issue: Your application submits message IDs to /messages/latest/confirm, but one or more messages are not confirmed.
| Possible cause | Recommended action |
|---|---|
| Incorrect message ID | Use the id returned for each message by /messages/latest, not the conversation or reservation ID. |
| Incorrect request structure | Provide an array of message IDs in the messages field. |
| Confirmation result not checked | Compare the submitted IDs with the returned confirmedMessages array. |
| API request failed | Check the HTTP status code and response details before retrying. |
Use /messages/latest/confirm to confirm receipt.
Example request
POST /messages/latest/confirm
{
"messages": [
"52100000-2be9-11f0-bced-bdc849c480b6"
]
}Example response
{
"request_id": "cdb0b154-2eae-481b-8fee-fb2725296e1f",
"confirmedMessages": [
"52100000-2be9-11f0-bced-bdc849c480b6"
]
}The confirmedMessages array contains the IDs confirmed by the API.
Confirm messages only after successfully processing them.
If an ID is missing from confirmedMessages, do not assume that its receipt was confirmed. Investigate the result before updating your application's confirmation state.
Issue: Calling /messages/send fails or does not return a message ID.
| Possible cause | Recommended action |
|---|---|
| Missing conversation ID | Provide the existing conversation ID in the conversation field. |
| Reservation ID used instead of conversation ID | Retrieve the conversation using /messages/conversations and use the returned data.conversation.id. |
| Missing required fields | Include accommodation, conversation and content in the request. |
| Incorrect accommodation ID | Verify that the accommodation ID belongs to the specified conversation. |
| Invalid attachment ID | If attachments are included, verify that each ID was returned by a successful /messages/attachments/upload request. |
| Authentication or access issue | Verify your credentials, affiliate identifier and access to the conversation. |
Use /messages/send to send a message to an existing conversation.
Example request
POST /messages/send
{
"accommodation": "13921698",
"conversation": "bbb76179-7565-5a23-8632-33e164aa13db",
"content": "Hello! Could you please confirm the check-in time?"
}A successful response returns the message identifier in data.message.
The /messages/send endpoint does not create conversations.
If you only have the reservation ID, retrieve the associated conversation using /messages/conversations before sending a message.
Issue: You send a message to the Demand API Messaging Test Hotel but do not receive the expected automated response.
The test accommodation (13921698) is configured to generate automated responses for selected messaging scenarios.
| Check | Recommended action |
|---|---|
| Test accommodation | Verify that you're using accommodation ID 13921698 in the sandbox environment. |
| Test reservation | Confirm that the reservation was created successfully and is associated with the test accommodation. |
| Conversation ID | Verify that the message was sent to the conversation associated with the test reservation. |
| Supported test scenario | Use a scenario configured for the test hotel, such as a welcome message or an extra-bed request. |
| Message availability | Allow time for the automated response to become available. |
- Call /messages/conversations to retrieve the conversation associated with the test reservation.
- Verify that your message was sent to the correct conversation.
- Poll /messages/latest for the automated response.
- Match the returned conversation identifiers to the test reservation.
- Confirm receipt after successfully processing the response.
The current Messaging API collection uses /messages/latest to retrieve new messages. It does not define a webhook endpoint for new-message notifications.
Automated responses might not be available immediately after a message is sent.
For practical examples, see Use case 1 – Booking and welcome message and Use case 2 – Send a request and handle rejection.
Issue: Uploading, retrieving metadata or downloading an attachment does not succeed.
| Possible cause | Recommended action |
|---|---|
| Unsupported file format | Use PNG or JPEG images with an appropriate MIME type. |
| File exceeds the size limit | Ensure the original binary file does not exceed 1,048,576 bytes (1 MiB). |
| Incorrect file size | Set file_size to the original binary file size, not the length of the base64-encoded content. |
| Invalid base64 content | Verify that file_content contains the complete, correctly encoded image. |
| Incorrect attachment ID | Use the attachment ID returned by /messages/attachments/upload or associated with an existing message. |
| Incorrect conversation context | Verify that the accommodation, conversation and attachment identifiers belong together. |
| Missing required upload fields | Include accommodation, conversation, file_size, file_name, file_type and file_content. |
| Endpoint | Purpose |
|---|---|
| /messages/attachments/upload | Upload a base64-encoded image and retrieve its attachment ID. |
| /messages/attachments/metadata | Retrieve the file name, MIME type and size of an attachment. |
| /messages/attachments/download | Retrieve the base64-encoded content of an attachment. |
For detailed examples, see Manage attachments.
Issue: Messaging API requests fail because of authentication or access restrictions.
| Check | Recommended action |
|---|---|
| Bearer token | Verify that you're using a valid Demand API authentication token. |
| Affiliate identifier | Include the correct X-Affiliate-Id header. |
| Environment | Verify that you're sending requests to the intended sandbox or production environment. |
| API access | Confirm that your affiliate account has access to the Messaging API. |
| Conversation access | Verify that the requested conversation is available to your authenticated affiliate account. |
For authentication details, see Authentication.
Issue: A Messaging API request returns HTTP 500.
An HTTP 500 response indicates a server-side error. The current Messaging API schema does not define a specific cause for this response.
- Check the response details and retain the
request_id, if returned. - Verify that your request uses the correct endpoint and required fields.
- Check whether the failure is temporary before retrying.
- Avoid blindly retrying /messages/send, as this could result in duplicate messages if the original request was processed.
- If the issue persists, contact Booking.com support and provide the relevant request information.
Do not assume that an HTTP 500 response means the affiliate account is not onboarded or that the service is experiencing a cold start.
If access is uncertain, verify Messaging API availability for your affiliate account separately.
Issue: Messaging API requests are rejected because too many requests have been submitted.
Messaging API integrations should follow the applicable Demand API rate limits.
✅ Avoid excessive polling: Choose a polling interval appropriate for your application.
✅ Handle HTTP 429 responses: Follow the applicable rate-limit guidance and wait before retrying.
✅ Use backoff strategies: Increase the delay between retries when requests are repeatedly rate-limited.
✅ Avoid unnecessary requests: Use /messages/latest for ongoing synchronisation rather than repeatedly retrieving complete conversations.
For more information, see HTTP 4xx scenarios.
If the issue persists, collect the following information to help investigate the problem:
| Information | Description |
|---|---|
| Endpoint | The Messaging API endpoint and HTTP method used. |
| Environment | Sandbox or production. |
| Request ID | The request_id returned by the API, if available. |
| HTTP status code | The status code returned by the failed request. |
| Error details | The error response, with sensitive information removed. |
| Relevant identifiers | Accommodation, conversation, reservation or message IDs, as applicable. |
| Time of failure | The approximate time when the issue occurred, including the time zone. |
Do not include API tokens, guest personal information or base64-encoded attachments in support requests unless explicitly required through an approved secure channel.
- About the Messaging API – Review the available messaging capabilities.
- Messaging API quick guide – Test the API using the Demand API Messaging Test Hotel.
- Manage messages – Learn how to retrieve conversations, send messages and confirm receipt.
- Manage attachments – Learn how to upload, send and retrieve image attachments.
- Messaging best practices – Review recommended integration practices.
- Messaging API FAQs – Find answers to common questions.