{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"b1f8056b-ef0b-4ce2-97e8-188817b6fad3","name":"ETG API v3","description":"<img src=\"https://i.ibb.co/HqK977X/logos-2.png\">\n\nThe Emerging Travel Group (ETG) API documentation will help to understand the process of making a hotel booking.\n\nTo learn more about the benefits of API integration, check our [website](https://www.ratehawk.com/lp/en/API).\n\nBefore starting to use the API, the respective agreement should be signed. After the integration is completed, we may require certification from you.\n\n<h1>Authorization</h1>\n\nThe host: `https://api.worldota.net`.\n\nThe API key is the sequence of characters used to send API requests.\n\nThe ETG:\n\n- Requires HTTP Basic Authentication via the API key.\n    \n- Grants the following API key types:\n    \n    - `test`—the sandbox environment.\n        \n    - `production`—the production environment.\n        \n\n## Sandbox environment\n\nUse sandbox API keys only to book test hotels:\n\n- `test_hotel_do_not_book`.\n    \n- `test_hotel`.\n    \n\n## Production environment\n\nUse the production API keys to book hotels available via the ETG API.\n\nYou may have several production API keys across different contracts.\n\n## API key structure\n\nThe API key structure consists of the two values: `:`.\n\nYou can find the created API keys in the **API** section of your contract settings. Access to this section is provided for the Master account only.\n\n### `KEY_ID`\n\nAPI key ID. Use it as an HTTP Basic Authentication username.\n\n### `API_KEY`\n\nAPI key access token. Use it as an HTTP Basic Authentication password.\n\nDanger! Keep this value secret. Otherwise, a third party can see and use your data.\n\n## Request limits\n\nEvery endpoint has a limit to the number of requests. To change limits, contact your account manager.\n\nThe limit is specified in the corresponding header in the call response. The ETG specifies:\n\n- The limit to the number of requests per specified period.\n    \n- The number of remaining requests per current period.\n    \n- The timestamp of the limitation period expiration.\n    \n\n### `X-RateLimit-SecondsNumber`\n\nThe seconds’ number of requests that can be executed within the `X-RateLimit-RequestsNumber`.\n\n### `X-RateLimit-RequestsNumber`\n\nThe maximum seconds number of requests that can be executed within the `X-RateLimit-SecondsNumber`.\n\n### `X-RateLimit-Remaining`\n\nThe remaining seconds’ number of requests in the current period of the `X-RateLimit-SecondsNumber`.\n\nThe number is out of the `X-RateLimit-RequestsNumber`.\n\n### `X-RateLimit-Reset`\n\nThe date and time of expiration for the period of the `X-RateLimit-SecondsNumber`. In the UTC+0 time zone, seconds.\n\n### Limits example\n\n```\n\"X-RateLimit-SecondsNumber\": 1\n\"X-RateLimit-RequestsNumber\": 10\n\"X-RateLimit-Remaining\": 9\n\"X-RateLimit-Reset\": \"2018-08-14T08:54:11\"\n\n ```\n\n# Glossary\n\n## API Key token\n\nIs an alphanumeric value generated by the ETG and assigned to a partner contract.\n\n## Partner contract type\n\nThe ETG Partner Program offers the following API contract types:\n\n- affiliate—Affiliate API.\n    \n- b2b—B2B API.\n    \n\nFor more details on both types, contact your account manager.\n\nNote. You can use one API key type for only one type of API partner contract.\n\n## Email address\n\nThe email address of the person responsible for your client support and API integration.\n\nMake sure that an email address is specified in:\n\n- The **Contacts** section.\n    \n- The contact type properties named **Technical questions and API**.\n    \n\n## Order group\n\nAn order group is an entity that represents an invoice in your account.\n\nThe scenario of using an order group:\n\n1. You group orders into an invoice in your account by yourself.\n    \n2. You pay the invoice in one payment.\n    \n\n## Supplier types\n\n### Direct chains\n\nAn association of several hotels operating as a collective business under a unified management. There can be a direct connection that allows the ETG to access its entire portfolio of hotels directly.\n\n### Direct extranet\n\nHotels that have direct contracts with the ETG.\n\n### Online Travel Agency\n\nOTA, B2C platforms, and websites where customers can book hotels online.\n\n### Wholesaler\n\nPlayers that primarily have direct contracts with hotels worldwide which:\n\n- Have their contract teams that resell their rates to B2B or B2B/B2C partners.\n    \n- Don’t have their own B2C websites.\n    \n- Work with partners who can either list the inventory on their services or further resell it.\n    \n\n### Destination Management Company\n\nDMC, local players who sign direct contracts with hotels, but in a specific country. They have strong relationships with hotels in these countries. The countries allow them to obtain competitive prices, better than from large Wholesalers or OTAs.\n\n### Switch\n\nOr BedBanks 2.0.\n\nThese suppliers function as platforms that directly connect with hotels.\n\n### Global Distribution System\n\nGDS, a technical platform that delivers published rates from a hotel Central Reservation System (CRS) to the end user.\n\n### Consolidator\n\nCompanies engaged in wholesale purchasing for subsequent resale to B2B and B2C clients.\n\n<h1>Requests</h1>\n\nYou should send requests via the HTTPS protocol. There are requests with:\n\n- GET method—for obtaining data.\n    \n- POST method—for creating, updating, and deleting.\n    \n\nThe request body and the `data` field are in the JSON format.\n\nThe GET example:\n\n```\ncurl -g --user &#x27;<KEY_ID>:<KEY>&#x27; &#x27;https://api.worldota.net/api/b2b/v3/hotel/info/?data={\"id\":\"city_hotel_berlin_east\",\"language\":\"en\"}&#x27;\n\n ```\n\nThe POST example:\n\n```\ncurl --user &#x27;<KEY_ID>:<KEY>&#x27; --data &#x27;{\"id\":\"city_hotel_berlin_east\",\"language\":\"en\"}&#x27; \"https://api.worldota.net/api/b2b/v3/hotel/info/\"\n\n ```\n\n<h1>Responses</h1>\n\nThe response is an object in the JSON format. Its fields are listed below.\n\n<p>The example:</p>\n\n```\n{\n  \"data\": {\n    \"data_3ds\": null,\n    \"partner_order_id\": \"asd123\",\n    \"percent\": 100\n  },\n  \"debug\": null,\n  \"error\": null,\n  \"status\": \"ok\"\n}\n\n ```\n\n## data\n\nThe response main data.\n\n## **debug**\n\nAdditional information about the response. Contains:\n\n- The initial request parameters in JSON format.\n    \n- And/or the HTTP status code.\n    \n\nCan have the `null` value if the request was made without warnings or errors.\n\n## **error**\n\nThe [error description](https://docs.emergingtravel.com/#errors).\n\nCan have the `null` value if the request was made without errors.\n\n## **status**\n\nThe HTTP status code description.\n\n# Errors\n\n## Error fields\n\nThe `debug` response field has information on your error.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"api_endpoint\": {\n           \"endpoint\": \"api/b2b/v3/hotel/info/\",\n           \"is_active\": true,\n           \"is_limited\": true,\n           \"remaining\": 9,\n           \"requests_number\": 10,\n           \"reset\": \"2018-08-16T12:12:37\",\n           \"seconds_number\": 1\n       },\n       \"api_key_id\": 1304,\n       \"method\": \"GET\",\n       \"real_ip\": \"62.76.100.3\",\n       \"request_id\": \"68c1141361db8c82835ea268486d7c6f\",\n       \"utcnow\": \"2018-08-16T12:12:36.328390\"\n   },\n   \"error\": \"decoding_json\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h2><b>400</b></h2>\n\n### Invalid parameters\n\nThe error occurs if all required data isn’t passed. Check the `validation_error` field and pass the required data.\n\n```\n {\n   \"data\": null,\n   \"debug\": {\n       \"api_endpoint\": {\n           \"endpoint\": \"api/b2b/v3/hotel/order/info/\",\n           \"is_active\": true,\n           \"is_limited\": true,\n           \"remaining\": 9,\n           \"requests_number\": 10,\n           \"reset\": \"2018-08-23T09:59:38\",\n           \"seconds_number\": 1\n       },\n       \"api_key_id\": 1304,\n       \"method\": \"POST\",\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"7f4937bdabe8bb13d4980dcd77a16117\",\n       \"utcnow\": \"2018-08-23T09:59:37.495757\",\n       \"validation_error\": \"value \\\"page_number\\\" is required but None\"\n   },\n   \"error\": \"invalid_params\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h3>Not allowed host</h3>\n\nThe error occurs if it is forbidden to request your host or IP.\n\nNote: To discuss a change to the permission, contact the API support team.\n\n```\n {  \"data\": null,\n   \"debug\": {\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"7b76e52a742f714e6686761fab48cfa3,\n       \"utcnow\": \"2018-08-23T11:31:44.235203\"\n   },\n   \"error\": \"not_allowed_host\",\n   \"status\": \"error\"\n}\n\n ```\n\n### Unexpected method\n\nThe error occurs if the request was made using an unsupported HTTP method. Use the POST and GET methods instead.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"api_key_id\": 1304,\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"19925f65c2763212bbe37294178b6fa6\",\n       \"utcnow\": \"2018-08-23T09:56:37.677774\"\n   },\n   \"error\": \"unexpected_method\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h2>402</h2>\n\n### Overdue debt\n\nThe error occurs if you have an overdue debt.\n\nNote: Contact your account manager.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"36f4a2ae479cc0eba8e3ddf7d09bba14\",\n       \"utcnow\": \"2018-08-23T10:11:08.045023\"\n   },\n   \"error\": \"overdue_debt\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h2>403</h2>\n\n### Authorization header\n\nThe error occurs if the request:\n\n- Has no authorization header.\n    \n- Has invalid data in the authorization header.\n    \n\nNote: Check the [Authorization](https://docs.emergingtravel.com/#authorization) section.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"563c919d77000963a4ef9ade0988b21b\",\n       \"utcnow\": \"2018-08-23T10:03:28.794712\"\n   },\n   \"error\": \"no_auth_header\", #or \"invalid_auth_header\"\n   \"status\": \"error\"\n}\n\n ```\n\n<h3>Endpoint is not found</h3>\n\nThe error occurs if you don’t have permission to use the call.\n\nNote: To discuss a change to the permission, contact your account manager.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"api_key_id\": 1775,\n       \"method\": \"POST\",\n       \"real_ip\": \"10.11.0.23\",\n       \"request_id\": \"45141c733a1f4d534a0518c513d3641b\",\n       \"status\": 403,\n       \"utcnow\": \"2018-08-14T12:51:58.715639\"\n   },\n   \"error\": \"endpoint_not_found\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h3>Incorrect API credentials or no permission to use endpoint</h3>\n\nThe error occurs if:\n\n- You have used incorrect API credentials\n    \n- You don't have permission to use the API.\n    \n\n**Danger!** In case of recurring unauthorized requests over a considerable period, the ETG may ban the IP address from which such requests are sent.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"e6ff36a9e635825743e7ded8c05739a0\",\n       \"utcnow\": \"2018-08-23T09:34:43.673713\"\n   },\n   \"error\": \"incorrect_credentials\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h3>Not allowed</h3>\n\nThe error occurs if your API key doesn't have permission to use this API call.\n\nNote: To discuss a change to the permission, contact your account manager.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"7b76e52a742f714e6686761fab48cfa3,\n       \"utcnow\": \"2018-08-23T11:31:44.235203\"\n   },\n   \"error\": \"not_allowed\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h3><b>Endpoint is not active</b></h3>\n\nThe error occurs if the endpoint is deactivated.\n\nNote: To discuss a change to the activation, contact your account manager.\n\n```\n {\n{\n   \"data\": null,\n   \"debug\": {\n       \"api_endpoint\": {\n           \"endpoint\": \"api/b2b/v3/hotel/info/\",\n           \"is_active\": false,\n           \"is_limited\": true,\n           \"requests_number\": 1,\n           \"seconds_number\": 20\n       },\n       \"api_key_id\": 496,\n       \"method\": \"GET\",\n       \"real_ip\": \"10.11.0.23\",\n       \"request_id\": \"61c015d15d325f0bb945db5d027fc35c\",\n       \"utcnow\": \"2018-08-16T12:38:38.481018\"\n   },\n   \"error\": \"endpoint_not_active\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h2><b>429</b></h2>\n\n### **Limit is exceeded**\n\nThe error occurs if you have exceeded the number of requests for an endpoint.\n\nNote: To discuss a change in the limit, contact your account manager.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"api_endpoint\": {\n           \"endpoint\": \"api/b2b/v3/hotel/info/\",\n           \"is_active\": true,\n           \"is_limited\": true,\n           \"remaining\": -1,\n           \"requests_number\": 1,\n           \"reset\": \"2018-08-16T12:32:40\",\n           \"seconds_number\": 20\n       },\n       \"api_key_id\": 496,\n       \"method\": \"GET\",\n       \"real_ip\": \"10.11.0.23\",\n       \"request_id\": \"8dd3efd24bdd6a9272770936e5108f8c\",\n       \"utcnow\": \"2018-08-16T12:32:26.161565\"\n   },\n   \"error\": \"endpoint_exceeded_limit\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h3><b>Endpoint is locked</b></h3>\n\nThe error occurs if you try to request with the same value of the `partner_order_id` field more than once at the same time.\n\n```\n{\n   \"data\": null,\n   \"debug\": {\n       \"real_ip\": \"52.29.104.100\",\n       \"request_id\": \"2c2264a2f3f64b9032624e99ddd49976\",\n       \"utcnow\": \"2018-08-23T11:43:27.101799\"\n   },\n   \"error\": \"lock\",\n   \"status\": \"error\"\n}\n\n ```\n\n<h2><b>5xx</b></h2>\n\nErrors with HTTP status code 5xx may be returned. For example, because of the Emerging Travel Group services’ timeout. In this case, the request should be sent again and the number of recurrent identical requests must be limited.\n\nIn the case of the Order Booking Form, Order Booking Finish, and Order Booking Finish Status calls, use the recommendations left in the call descriptions.\n\n## **Example of unknown error**\n\nThe error occurs if something else has gone wrong.\n\n```\n{\n   \"data\": null,\n   \"debug\": null,\n   \"error\": \"unknown\",\n   \"status\": \"error\"\n}\n\n ```\n\n# Integration guide\n\nTo integrate the ETG API, use the suggested workflow:\n\n1. Download the hotels’ static data:\n    \n    1. **Required.** Hotel Data Dump ([B2B](https://docs.emergingtravel.com/#6bb5ccc7-d2cb-421f-ab55-e80f00be229d), [Affiliate](https://docs.emergingtravel.com/#06d3dc1d-8240-4e87-a51f-fa9cb44ea414)).\n        \n    2. **Optional.** Hotel Data Search ([B2B](https://docs.emergingtravel.com/#b638df6e-4279-47f0-aac4-3e35e2bb3f5c), [Affiliate](https://docs.emergingtravel.com/#7f166f2a-f82f-44c0-a1d0-d6414ef85978)). Is used only in case when an available hotel is not included in the downloaded hotel data dump. It can happen to new hotels in the ETG inventory.\n        \n2. Search a hotel with three steps:\n    \n    1. **Required.** Search for an available hotel with geo, region, or hotels ([B2B](https://docs.emergingtravel.com/#999e65d2-8297-48e2-89e2-0ee67adab0b5), [Affiliate](https://docs.emergingtravel.com/#4d704fba-1ab4-403e-83b0-4db0b566d619)). Is used for the initial search of hotels with available accommodations that match the given search.\n        \n        The recommendations:\n        \n        1. Don’t allow users to choose rates through this call, as it doesn’t guarantee a complete match with results from the Hotelpage call ([B2b](https://docs.emergingtravel.com/#7b03943d-ac3c-4542-8e0d-e4192d6db431), [Affiliate](https://docs.emergingtravel.com/#30220271-36dc-41d7-bff7-087559426865)).\n            \n        2. During the call, display one or two of the cheapest rates for each hotel.\n            \n    2. **Required**. Get the hotel rates list ([B2B](https://docs.emergingtravel.com/#7b03943d-ac3c-4542-8e0d-e4192d6db431), [Affiliate](https://docs.emergingtravel.com/#30220271-36dc-41d7-bff7-087559426865)). Use it only for the hotel the end-user wants to know about.  \n        The recommendations:\n        \n        1. Don’t use the call for every hotel found via the region_id field or its IDs.\n            \n        2. Use the call only when the user selects it.\n            \n        3. During the call, display all rates for a specific hotel.\n            \n        4. The storage time for retrieved rates is 1 hour.\n            \n            Don’t use this call to initiate the search automatically for all hotels returned by a region search.\n            \n    3. **Required**. Make a prebook ([B2B](https://docs.emergingtravel.com/#a738135a-9496-4c06-b19e-9f052eea5af6), [Affiliate](https://docs.emergingtravel.com/#1670ab0c-a9f6-438c-aa14-e58621daf8c6)). Is used for getting the availability of the requested rate.  \n        The recommendations:\n        \n        1. If the original rate isn’t available, the call will try to find the same or similar rate.\n            \n        2. The `price_increase_percent` feature:\n            \n            1. Provides the possibility to find the best alternative for the chosen rate within the selected price increase range.\n                \n            2. When implemented, the client should be notified about the price change before the booking step. Otherwise, it isn’t suggested to implement.\n                \n3. Make a booking:\n    \n    1. **Required.** Start creating a booking ([B2B](https://docs.emergingtravel.com/#6a045f57-d574-4da0-8ab5-3bce1f8dfdcc), [Affiliate](https://docs.emergingtravel.com/#4e356a1d-6bf8-414b-b66a-d234ecf5ae2b)).\n        \n    2. **Required.** Complete the booking creation ([B2B](https://docs.emergingtravel.com/#ecf40c76-602e-40cb-8596-e249de5be42e), [Affiliate](https://docs.emergingtravel.com/#bd13cf06-1474-432c-b35e-e4f2aacf6990)).\n        \n    3. **One of them is required.** To get the booking status, use the Order Status Webhook ([B2B](https://docs.emergingtravel.com/#f39dff54-55c6-4683-a3b0-dc0bea7a943d), [Affiliate](https://docs.emergingtravel.com/#41889021-0f18-498a-9bac-d126d4a2b2a3)) or the Order Booking Finish Status call ([B2B](https://docs.emergingtravel.com/#b16d9cd9-656b-40c4-b0f4-ab49db634af4), [Affiliate](https://docs.emergingtravel.com/#7a327e74-66f3-4da2-a403-2deb8881e4cb)).\n        \n4. Make the post-booking routine:\n    \n    1. **Optional.** Get information on the completed booking ([B2B](https://docs.emergingtravel.com/#abe6bde1-a012-4df6-9bdb-453c36c566af), [Affiliate](https://docs.emergingtravel.com/#7eac8d16-8de3-4fb1-ad54-d7f9b7d3e057)).  \n        The recommendations:\n        \n        1. Use the call 8 seconds after the booking is completed.\n            \n    2. **Optional**. Cancel the completed booking ([B2B](https://docs.emergingtravel.com/#9a6deb03-1033-4de0-a55d-d1e78516e1af), [Affiliate](https://docs.emergingtravel.com/#7c699988-1ad4-498a-a50e-f38284c80451)).\n        \n5. Proceed with the certification and provide access to your test and production website where the ETG API is implemented.\n    \n\n# API usage recommendations\n\n## Usage of static data\n\n- The data:\n    \n    - The **Hotel Incremental Data Dump** call gets data of the ETG hotels whose content has changed in the previous day. Each archive is for a single language.\n        \n    - The **Hotel Data Dump** call gets data on hotels available in the ETG. Each archive is for a single language.\n        \n    - The **Hotel Region Dump** call gets data on all available in the ETG regions. Each archive is for a single language.\n        \n- Update time for the static data:\n    \n    - Every day for the **Hotel Incremental Data Dump** call.\n        \n\n```\n    Note. If you update data by the incremental dump, you don’t need to download the whole dump.  \n- At least once a week for the **Hotel Data Dump** call.\n- At least once a week for the **Hotel Region Dump** call.\n\n ```\n\n- It is obligatory to show hotels the **Important information** section. You can find this information in the parameters:\n    \n    - `metapolicy_extra_info`.\n        \n    - `metapolicy_struct`.\n        \n\n```\nThese parameters include hotel rules and information on chargeable services.\n\n ```\n\n- To match data from the search request with room static data such as room images and room amenities, use values in the `rg_ext` response field within one hotel.\n    \n\n## Mapping logic and mapping updates\n\nAlong with hotel static data, hotel mapping should also be updated on a daily or weekly basis.\n\n## Search steps\n\nUse the Search Engine Results Pages calls:\n\n- For the first search step, show one or two of the cheapest rates for each hotel.\n    \n- For the second search step, show all the rates for one specific hotel.\n    \n\n## Not recommended\n\nWe don’t recommend using the rates matching workflow:\n\n- Some suppliers don’t allow you to make a booking from the first search step.\n    \n- Some suppliers don’t provide all the necessary data at the first search step.\n    \n    For example, cancellation policies.\n    \n- Some suppliers don’t provide all available rates for the hotel at the first search step.\n    \n    For example, some suppliers respond only with one of the cheapest rates, so you will miss other rates.\n    \n- The first search step is slower so not all the rates will be returned if you have a short search timeout.\n    \n- The first search step has a longer cache life.\n    \n\n```\nDanger!\n- Using rates matching workflow:\n    - You can miss lots of the rates.\n    - You have a higher fail ratio at the valuation step.\n    - If you still intend to match the rates between the **Search Engine Results Page** and [Hotelpage](https://docs.emergingtravel.com/#67876b90-43ba-40e9-883b-a63a69b1be79) steps, use the `match_hash` field from the search response.\n\n ```\n\n## Residency\n\nThe rates in the first search response are provided according to the nationality of the first guest provided in the search request. Nationality should be the same for each guest in every search request. Provide the real guests’ nationality in the `residency` field.\n\n## Meal types\n\nThe ETG provides a wide range of meal types. To get all available meal types and their definitions, use the meal field from the **Get static dump** call.\n\n## Final price and commission\n\nThe ETG provides both gross and net prices in the charge (contracted) and search (requested) currency. Use the commission_info response field.\n\n## Obligatory fields\n\nIt is obligatory to show:\n\n- Taxes and fees. Use the tax_data response field.\n    \n- Full room type. Use the room_name response field.\n    \n\n## Cache\n\nCaching the rates from the search response can be applied only in case you don’t expect the same cached rate should be available for booking creation.\n\nThe longer the rate is being stored in the cache, the higher chance this particular rate won’t be available later.\n\n## Timeout\n\nThe ETG is to apply the incoming timeout to the search response. Use the `timeout` field.\n\nIf you work with dynamic search timeouts, ensure you implement the `timeout` field.\n\n## Booking steps\n\n- To obtain the final status of the booking, use:\n    \n    - The [Order Booking Finish Status](https://docs.emergingtravel.com/#09e1f183-0fef-49af-8c76-c8a8fa3d9036) call.\n        \n    - Or the [Order Status Webhook](https://docs.emergingtravel.com/#b2a21496-9c3b-46d9-b9db-f8d44881b125) call.\n        \n- If you use the [Order Booking Finish Status](https://docs.emergingtravel.com/#09e1f183-0fef-49af-8c76-c8a8fa3d9036) call, check the status of the booking every 5 seconds until the final status is obtained.\n    \n- If you have any limitations for this step, contact our API support team.\n    \n\n### Booking cut-off\n\nThe ETG doesn’t work with incoming booking timeout. Yet, the ETG can apply a booking cut-off manually on the related API key. To do that, contact the ETG support.\n\n### 5xx, unknown, and timeout errors\n\nErrors with 5xx HTTP status, unknown, and timeout errors received during the booking process don’t mean the booking failure.\n\nEvery time you get a 5xx, unknown, or timeout error, send the request again in a considerable amount of time. Get the booking status via the Order Booking Finish Status call.\n\nThe Order Booking Form, Order Booking Finish, and Order Booking Status calls have different recommendations. You can find instructions in the Error's description section of these call descriptions.\n\n# API support recommendations\n\n## Common\n\n- Specify the issue as clearly as possible.\n    \n- Always highlight the goal you want to achieve.\n    \n\n## Reporting details of the issues\n\n- Provide:\n    \n    - The exact call with its endpoint that causes the issue.\n        \n    - The request and the response in the format it was sent and received.\n        \n    - The response logs in the JSON format.\n        \n- Specify the issue timestamp. It will be helpful to determine the cause of the issue.\n    \n\n## Identification\n\n- Specify your contract number.\n    \n- Specify the of the API key you were using.\n    \n\n## Addressees of the request\n\nAddress the ETG API-related questions to the API Support team. Otherwise, contact your account manager.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"27342746","team":58028,"collectionId":"b1f8056b-ef0b-4ce2-97e8-188817b6fad3","publishedId":"2sA3BgBbPt","public":true,"publicUrl":"https://docs-old.emergingtravel.com","privateUrl":"https://go.postman.co/documentation/27342746-b1f8056b-ef0b-4ce2-97e8-188817b6fad3","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2024-11-28T14:14:32.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/619e9de5d2c95551ec51a419b9fd3e873245322227184fd2f42228a353a28182","favicon":"https://res.cloudinary.com/postman/image/upload/v1597676005/team/r5hn3wgclm2jkpafxxwn.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs-old.emergingtravel.com/view/metadata/2sA3BgBbPt"}