Getting started
The Waggish Travels Partner API lets your systems search, price, book and reconcile flights, hotels and cars. It is a JSON REST API served over HTTPS.
| Base URL | https://searchurtrip.com/api/v1 |
| Format | JSON request and response bodies (Content-Type: application/json) |
| Auth | API key in the Authorization: Bearer header |
| Spec | OpenAPI 3.1 · Interactive reference |
| Currency | All amounts are INR, integer rupees |
Inventory is simulated. No supplier/GDS is connected yet, so search results are generated deterministically from your query. Response shapes, pricing, booking, invoices and webhooks are real and stable; only the availability data source will change when a supplier is switched on.
How access works
Access is granted and controlled by the Waggish platform administrator. There is no self-signup.
- The administrator creates an API client for your organisation and (optionally) links it to your Waggish tenant. Linking is required to create bookings and read invoices, because bookings and invoices belong to a tenant.
- They issue one or more API keys with the scopes you need, an optional IP allow-list and an optional expiry.
- You receive the key once. It cannot be shown again; if you lose it, ask for a rotation.
- Every call is rate limited per key, logged, and can be switched off instantly by the administrator (per client, per scope, or platform-wide).
You can see your own keys (masked), usage, recent requests and webhook deliveries in the API Access screen of your Waggish console.
Your first request
curl https://searchurtrip.com/api/v1/me \
-H "Authorization: Bearer wk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{
"data": {
"clientId": 6,
"client": "Acme Travel Partner",
"tenantLinked": true,
"environment": "live",
"scopes": ["search:read", "pricing:read", "bookings:read", "bookings:write"]
}
}
A complete booking flow
- Search —
POST /search/flightsreturns offers. Each offer has anofferToken, asubtotaland a fully pricedpriceobject for your tenant. - Book —
POST /bookingswith the chosenofferToken, contact details and anIdempotency-Key. The server re-prices the offer; the client cannot alter the price. - Track —
GET /bookings/{id}, or receivebooking.created/booking.cancelledwebhooks. - Reconcile —
GET /invoicesshows what your tenant has been billed and paid.
# 1. search
curl -X POST https://searchurtrip.com/api/v1/search/flights \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"from":"DEL","to":"BOM","departDate":"2026-11-12","adults":1}'
# 2. book the first offer
curl -X POST https://searchurtrip.com/api/v1/bookings \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"offerToken":"<offerToken from step 1>","contact":{"name":"Asha Menon","email":"asha@example.com"},"reference":"PO-1001"}'
Round trips: pass returnDate to flight search. The response then has both onward and return arrays; book each leg with its own offerToken.
Pricing you will see
Every priced object has the same shape:
{ "baseAmount": 5400, "tax": 270, "fee": 378, "total": 6048, "currency": "INR" }
baseAmount already includes the platform margin configured for your tenant, tax and fee are the platform-wide tax and convenience fee, and total is what is charged. The margin is not shown as a separate line.