Back to Directory
BRIJ Flights

BRIJ Flights

Travel & Transportation
Search flights, create booking intents, book flights, request refunds, and check airline order status through BRIJ.
x402

About BRIJ Flights

Review the Service identity, supported languages, protocol versions, and source metadata discovered by the directory.

Service details

Service Id
ff71b60d-73c2-44f3-a473-94fb8501eecd
Service origin
https://travel.brij.fi
ListedSeptember 24, 2026, 6:49 PM
Last checkedNovember 9, 2026, 1:40 AM

Protocol details

SourceOpenAPI

Endpoints

Endpoint details are saved from the OpenAPI document. Authentication requirements and prices are advertised information, not a verified payment or access guarantee. The document may contain additional endpoints.Open OpenAPI document
POST/affiliates

Get your referral code (free, idempotent)

Free. {wallet} → {code, link}. One short code per Solana wallet — share app.brij.fi/?ref=<code> (or pass referrer on POST /air/intents). Referred bookings credit 20% of the platform fee to your wallet — earned when the booking captures (ticket actually issued), vested only once the journey has been flown with no refund issued (pending until then). Statement: GET /affiliates/{code}. Payouts are periodic USDC transfers once the balance clears the minimum.
GET/affiliates/{code}

Read the statement of an affiliate code.

Free, public, self-serve: referred captured bookings, referred vested bookings (flown, unrefunded), accrued (vested), pending (not flown yet), paid, balance (micros USDC) and the share_bps.
GET/air/airlines

Supported airlines (free).

Free, no auth. Aggregate carrier catalog over every fulfiller tier: source "api" is the API-settled (Duffel) catalog, refreshed at most daily; a tier name ("trip.com" = the OTA, "ryanair.com" = ryanair.com) means that fulfiller has actually QUOTED the carrier — observed coverage that grows with searches and understates an OTA's true span. Presence is recognition, not a bookability promise: what is bookable for a route is what POST /air/search returns.
POST/air/book

Pay the escrow and request booking.

The intent id travels in the request body; the resource URL is static. Paid x402 endpoint. The payment challenge is dynamic for the intent: `payTo` is the intent escrow address, `asset` is the expected escrow mint, and `amount` is the expected escrow amount. After x402 settlement, the API records the passenger list (lead first), verifies exact escrow funding on-chain, and enqueues the booking worker. Airline payment and escrow capture happen asynchronously. If booking fails after x402 settlement, retry the same `/book` call; excess funds remain refundable to `refund_wallet`. **Lowcost travel document.** For an intent created on a trip.com: offer, each passenger additionally requires nationality, passport_number, and passport_expiry (YYYY-MM-DD, in the future) — the supplier's booking form demands them. Missing or expired documents are refused BEFORE payment (400 travel_document_required / travel_document_expired). Booking is asynchronous exactly like fastbooking: poll GET /air/intents/{intent_id} until bo…The operation requires declared authentication; API keys, bearer tokens and other schemes are not evidence of AEP support.
POST/air/intents

Create an escrow-backed booking intent from a selected offer.

Paid x402 endpoint. Send a valid `PAYMENT-SIGNATURE` header to create the intent. Without payment, the API returns `402 Payment Required`. Optional request field referrer: an affiliate code (see POST /affiliates) — the resolved affiliate wallet is frozen on the intent and credited a share of the platform fee once the booking captures and the journey is flown without refund; unknown or self-referring codes are silently ignored. Creates the local booking intent and initializes its Solana escrow. This does not fund the escrow, pay the airline, or issue a ticket. **Lowcost (trip.com: offers).** These book through a browser-driven fulfiller, not an airline API, so a few rules differ. The escrow amount is the offer's own price (fare menus from POST /air/offer-details are bookable: an offer_id like "trip.com:<flight>##<n>@s<search>" locks fare n and the escrow prices at that fare). A fare offer_id is only bookable while its menu is fresh (~30 min) — a stale one returns 409 fare_menu_expired, re-open the fares an…0.10 USDThe operation requires declared authentication; API keys, bearer tokens and other schemes are not evidence of AEP support.
GET/air/intents/{intent_id}

Fetch a booking intent by id.

Free. Poll it after /air/book: status moves to booked once the escrow is captured, and booking_reference carries the airline PNR as soon as the ticket is issued. A booking is finished for the traveller when booking_reference is present: relay it to them.
POST/air/offer-details

Drill into one offer: fare menu, bag prices, live price.

Paid x402 endpoint: $0.01 USDC for fastbooking: offers, $0.10 USDC for offers from a browser tier (trip.com:, ryanair:) — reading their fare menu costs a real browser session at the supplier — the PAYMENT-REQUIRED challenge always quotes the applicable price. fastbooking: offers — re-fetches the offer from the flight provider and returns it in the same shape as search results, with CURRENT price and expires_at, plus available_services: the purchasable extras (checked bags with weight limits and prices) on that exact fare. fare_options lists EVERY fare of this flight (same aircraft, every brand: Basic, Standard, Flex…), fresh from the supplier and price-ascending, each with its own bookable offer_id — including fares the search left out of its page. Pick the row you want and pass its offer_id to POST /air/intents. browser-tier offers (trip.com:, ryanair:) — return the offer with fare_options filled from the supplier's own fare menu: per fare, the price, cabin, seats_left, and conditions[] (the supplier's ve…0.01 USDThe operation requires declared authentication; API keys, bearer tokens and other schemes are not evidence of AEP support.
GET/air/orders/{order_id}

Fetch airline order status.

Returns the booking reference and order status for ANY fulfiller — a Duffel ticket is read from Duffel, a partner-tier booking (trip.com, ryanair.com) from the marketplace's own record: the supplier reference, the airline PNR the settlement oracle extracted from the confirmation email, and the engaged amount. If all you need is the PNR, GET /air/intents/{intent_id} carries it for free as booking_reference. Paid x402 endpoint at a token $0.01 USDC, and still gated by the X-Customer-Support-Code returned at intent creation. Refusals are never charged: a missing or wrong code (401/403) or an unknown order (404) happens before the payment settles. Note the response distinguishes an unknown order (404) from a wrong code (403).0.01 USDThe operation requires declared authentication; API keys, bearer tokens and other schemes are not evidence of AEP support.
POST/air/refund-requests

Request a manual refund after the intent has been booked.

The intent id travels in the request body; the resource URL is static. Paid x402 endpoint. Send a valid `PAYMENT-SIGNATURE` header to record the refund request. Without payment, the API returns `402 Payment Required`. Records a refund request for a booked intent. The on-chain escrow has already been captured by the time the intent is `booked`, so refunds at this stage are processed manually by an operator. This endpoint persists the request and pages the operator on Telegram; the response is `202 Accepted` and is **not** a guarantee of refund — eligibility and any applicable carrier penalties are reviewed manually. For pre-capture states (`active`), the booking_sync worker handles refunds automatically; this endpoint returns `409 use_automatic_refund` for those. The caller must include the `X-Customer-Support-Code` header matching the code returned at intent creation. For multi-passenger bookings, X-Passenger-Family-Name is the LEAD passenger's family name (position 0 of the /air/book list).0.10 USDThe operation requires declared authentication; API keys, bearer tokens and other schemes are not evidence of AEP support.
POST/air/search

Search live flight offers.

Flight search can be paid with x402 or sponsored by the BRIJ gateway. For direct x402 clients, send a valid `PAYMENT-SIGNATURE` header. Without payment, the API returns `402 Payment Required` carrying the **current** price. For BRIJ Wallet preview calls, the gateway may send `X-BRIJ-SPONSORED-*` headers. Providers should treat that as a BRIJ-sponsored preview, not as a user-paid x402 settlement. Every price in the response is the price a buyer pays: total_amount / total_amount_decimal (offers, fare_options, highlights) are all-in, and max_price filters on that figure. POST /air/intents asks exactly this amount as expected_escrow_amount (a wallet enrolled in a fee-waiving cohort is asked less, never more). Base x402 price is 0.10 USDC. The price is multiplied (up to 50×) by the current search load: completed searches in the last 60 seconds and any upstream rate-limit response in the last 5 minutes. Always read the latest `PAYMENT-REQUIRED` challenge before signing - the price your client saw a moment ago …The operation requires declared authentication; API keys, bearer tokens and other schemes are not evidence of AEP support.
POST/air/search-updates

Poll a progressive search for offers still arriving (free).

Free companion to POST /air/search — no x402 payment: the search was already paid, and the unguessable `search_id` is the authorization. A search answers within seconds with the fast tiers' offers and `status: enriching` when slower, cheaper fulfiller tiers are still working. Poll this endpoint (respecting `poll_after_ms`, ~5s) until `status: complete`. Each poll returns the full merged-and-deduplicated offer list so far — idempotent reads, safe to retry. The `search_id` expires ~5 minutes after the search; after that this endpoint returns 410 and a new search is needed. The rest of the purchase tunnel (offer-details, intents, book) is unchanged — offers gained here are used exactly like offers from the initial response.

Agent payments

These payment protocols and options are advertised by the Service for agent purchases.

x402

Advertises x402 payments for one or more endpoints. Check the endpoint documentation for authentication requirements.