TENANT API · V1
Create an order Quote ID, external reference, trip label returns order + all cases.
POST /api/v1/tenant/orders
Authorization Use a server-side API key with the listed grants and permitted resource access.
Request body
quoteIdstring · required Opaque resource identifier. Treat this value as a string.
externalReferencestring · optional Your stable reference, unique to this integration and resource type.
tripNamestring · optional A display label for this trip. Does not change its travel intent. Response 201 Created
Returns the authorized resource or result for this operation. List results use items, nextCursor, and hasMore.
Behavior to account for The quote is revalidated before creation. Order creation commits the order and all cases together. Invoice preparation can continue asynchronously.
Errors Authentication failures return 401 or 403. Inaccessible resources return 404. Business and idempotency conflicts return 409. Rate limits return 429 with retry guidance.
Error handling guide REQUEST API key
curl --request POST 'https://api.wincora.com/api/v1/tenant/orders' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: request-example-001' \
--header 'Content-Type: application/json' \
--data '{
"quoteId": "quote_example",
"externalReference": "booking-4387",
"tripName": "November trip"
}' const response = await fetch ( 'https://api.wincora.com/api/v1/tenant/orders' , {
method: 'POST' ,
headers: {
"X-Api-Key" : process.env. WINCORA_API_KEY ,
"Idempotency-Key" : "request-example-001" ,
"Content-Type" : "application/json"
},
body: JSON . stringify ({
"quoteId" : "quote_example" ,
"externalReference" : "booking-4387" ,
"tripName" : "November trip"
})
});
if ( ! response.ok) throw new Error ( await response. text ());
const result = await response. json (); import os
import requests
response = requests.request(
'POST' ,
'https://api.wincora.com/api/v1/tenant/orders' ,
headers = {
"X-Api-Key" : os.environ[ "WINCORA_API_KEY" ],
"Idempotency-Key" : "request-example-001" ,
"Content-Type" : "application/json"
},
json = {
"quoteId" : "quote_example" ,
"externalReference" : "booking-4387" ,
"tripName" : "November trip"
},
timeout = 30 ,
)
response.raise_for_status()
result = response.json() RESPONSE EXAMPLE 201
{
"id" : "ord_example" ,
"externalReference" : "booking-4387" ,
"status" : "open" ,
"billingStatus" : "preparing" ,
"communicationMode" : "tenantManaged" ,
"cases" : [
{
"id" : "case_example" ,
"travelerId" : "trav_example" ,
"stage" : "inCollection" ,
"requirementsVersion" : "rv_example" ,
"nextActions" : [
"provideData" ,
"provideDocuments"
]
}
]
} Keep this API key on your server. Never embed it in browser or mobile code.