API reference
Overview
Trip963 API is the B2C surface of a full flight stack — two services, one customer journey, fifteen endpoints.
If you run a travel website under your own brand, you should not have to rebuild search, cart, PNR and ticketing. Trip963 API gives your storefront a customer-safe contract: live flights, a fare the shopper can understand, and a booking that belongs only to that customer.
There is no gateway in front. Your storefront calls two hosts that both speak /v2. Auth lives on the user service. Everything about flying lives on booking.
Response
{
"message": "Success",
"data": {},
"error": null,
"timeStamp": "02-09-2026 15:30:00"
}Base URLs
User (auth): https://user.aerolink.dev — /v2/auth/*
Booking (everything else): https://booking.aerolink.dev — flights, cart, orders, travellers.
Tenant and storefront
Every request is tenant-routed before authentication, from the Host subdomain (default base domain trip963.com). A B2C storefront is not its own tenant — it runs on the founding tenant. Its subdomain must be listed as reserved, or the API rejects the call with 400 before any B2C code runs.
Authentication model
POST /v2/auth/login and POST /v2/auth/refresh are open. Everything else — including GET /v2/auth/me — needs Authorization: Bearer <accessToken>. The refresh token is never in the JSON. It is set as an HttpOnly cookie named refreshToken, host-only, so the API host must be one the storefront can send cookies to.
Success envelope
Every success is a ResponseModel. Timestamp format is dd-MM-yyyy HH:mm:ss.
Money the customer sees
Amounts are a nine-field B2cFare, already converted into the caller’s POS currency. No B2C payload contains agentPrice, costing, MRP, commission, markup, PCC or provider. total is what the customer pays — agent fare plus the storefront markup, charged once per booking.
Paging
Search endpoints return content, page, size, totalElements, totalPages, last. Query params are pageNum (default 0) and pageSize (default 10).