Skip to main content
POST
Send a trip for approval
The organization’s business policies decide what happens next. When a policy requires approvals, the answer is 202 Accepted with the trip in status REQUESTED and the approval request in policyRequest: the approvers decide it, and an approved trip is issued automatically. When no policy requires an approval, the trip is issued right away and the answer is 202 Accepted once the issuance was accepted. Read the trip to follow it. Only flight and bus trips can be sent for approval. The trip must still be reserved, with its booking details loaded and enough time left on the reservation for the approvals to finish: the approval has to be decided at the latest 2 minutes before the reservation expires, and at least a minute of that window must be left when the trip is sent. Sending a trip that is already waiting for approval answers with it as it is. Visible to an organization admin, to the users the trip carries and to the user who booked it, like the trip itself.

Path Parameters

realmId
string<uuid>
required

ID of your realm.

Format: UUID

organizationId
string<uuid>
required

ID of the organization the trip belongs to.

Format: UUID

tripId
string
required

ID of the trip (24 hexadecimal characters).

Pattern: ^[0-9a-fA-F]{24}$

Response

Successful response

A trip with what the organization's business policies say about it: the advisory policy while it can still be sent for approval, and the policyRequest once an approval request exists.

id
string
required

ID of the trip.

Example:

"6711b4c0d8e1a30012b7c9f2"

realmId
string<uuid>
required

ID of the realm the trip belongs to.

Example:

"f495ff0c-ab54-4f99-8e92-ca8682e4de9b"

organizationId
string<uuid>
required

ID of the organization the trip belongs to.

Example:

"c4bd3f21-dfbd-44e8-8055-68ba15bed410"

customFields
object
required

Values of the organization's trip custom fields, keyed by the custom field's slug. Empty when none were set.


Example: {"cost-center":"CC-1020"}

Example:
vertical
enum<string>
required

Type of product booked. It tells which shape productSnapshot has.

Available options:
AIR,
HOTEL,
BUS,
VEHICLE
Example:

"AIR"

state
enum<string>
required

Where the booking is in its life: PENDING while the reservation is being made, RESERVED once held (until reservationExpiresAt), ISSUED once ticketed and CANCELED. It only moves forward.

Available options:
PENDING,
RESERVED,
ISSUED,
CANCELED
Example:

"RESERVED"

status
enum<string>
required

Finer-grained status: it also reports work in progress (PROCESSING_*) and failures, and can change back and forth. Use state to decide what the booking is; use status to tell what is happening to it. While the booking is RESERVED it also tells where the approval is: REQUESTED while the trip waits for its approvers and DENIED once they refused it (approval has the details). Once the booking moves on, its own status shows again.

Available options:
REQUESTED,
DENIED,
PROCESSING_RESERVATION,
RESERVATION_FAILED,
RESERVED,
PROCESSING_ISSUE,
ISSUED,
PROCESSING_CANCELLATION,
CANCELED,
AWAITING_MANUAL_CANCELLATION,
CANCELLATION_FAILED,
FAILED,
FAILED_BY_INCONSISTENT_DATA,
FAILED_BY_UNAVAILABLE_RESOURCE,
FAILED_BY_BUDGET_EXCEEDED,
EXPIRED,
BLOCKED,
UNKNOWN,
ISSUANCE_FAILED
Example:

"RESERVED"

passengers
object[]
required

The passengers booked on the trip.

createdBy
string<uuid>

ID of the user who created the trip. Omitted when a service did.

Example:

"e3553bc1-5e20-4e17-b22a-a796fda0aa99"

approval
object

The latest approval attempt. Omitted until the trip is sent for approval or issued.

reservationExpiresAt
string<date-time> | null

Until when the reservation is held. Past it, a trip that was not issued expires. null or omitted when there is no hold.

Example:

"2026-10-02T13:45:12.000Z"

issuedAt
string<date-time> | null

When the trip was issued. null or omitted until it is.

originalAmount
number

Price before discounts, in cents. Omitted until the price is known.

Example:

95000

discountAmount
number

Discount applied, in cents. Omitted until the price is known.

Example:

3010

feeAmount
number

Fees added, in cents. Omitted until the price is known.

Example:

0

totalAmount
number

Amount to pay, in cents: originalAmount - discountAmount + feeAmount. Omitted until the price is known.

Example:

91990

currency
string

Currency of the amounts, as the numeric ISO 4217 code (986 is BRL).

Example:

"986"

productSnapshot
Air trip · object

The booked product: the itinerary, stay, ticket or rental as recorded by the travel provider — journeys and flights, the hotel and its rooms, the route and boarding information, the rental — with its fares, policies and booking locators. It does not repeat the trip's own fields (state, status, the amounts, the dates) and carries no identifier of the travel provider; passengers are referenced by their id in passengers[]. Its shape depends on vertical: a flight (AIR), a hotel stay (HOTEL), a bus ticket (BUS) or a vehicle rental (VEHICLE) — see the four schemas below. Omitted until the record is first fetched.

cancellation
object

The confirmed cancellation. Omitted until one is confirmed.

createdAt
string<date-time>

When the trip was created.

Example:

"2026-10-01T13:45:12.000Z"

updatedAt
string<date-time>

When the trip last changed.

Example:

"2026-10-01T13:46:03.000Z"

policy
object

What the organization's policies decide for the trip now. Present while the trip is reserved and can be sent for approval or issued; omitted otherwise.

policyRequest
object

The approval request of the latest attempt. Omitted until one exists.