Issue a flight ticket
Issue the ticket for a reserved booking. This is when the fare is charged and the ticket is created.
POST/Air/AirOrderTicket
Access requires the permission air_order_ticket
Call this after the traveller has paid you and before TktTimeLimit. The booking moves from status 10 (booked) to status 20 (ticketed). Read the full ticket with booking data.
Path parameters
None.
Query parameters
None.
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
SessionId | string | Yes | Your session id. |
UniqueId | string | Yes | The booking id from book. |
Request
curl -X POST https://api.hermeseus.com/api/Air/AirOrderTicket \
-H "Content-Type: application/json" \
-d '{
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"UniqueId": "TP-2026-000512"
}'const res = await fetch("https://api.hermeseus.com/api/Air/AirOrderTicket", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
UniqueId: "TP-2026-000512"
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.hermeseus.com/api/Air/AirOrderTicket",
json={
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"UniqueId": "TP-2026-000512",
},
)
data = res.json()Response
| Field | Type | Description |
|---|---|---|
Success | boolean | true on success. |
Category | integer | 20. Ticketed. |
Status | integer | 20. Ticketed. |
Error | object | null on success. |
{
"Success": true,
"Category": 20,
"Status": 20,
"Error": null
}
This charges the fare.
Confirm the traveller has paid you before you call it. Miss
TktTimeLimit and the reservation is released, so you have to search and book again.
Errors
| Code | Meaning | Fix |
|---|---|---|
Err0103003 | Booking not found. | Check the UniqueId. |
Err0103006 | The booking is not in a ticketable state. | Read the booking status first. It must be booked and within the deadline. |

