Waggish TravelsDevelopersInteractive API referenceopenapi v2openapi v1

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.

  1. 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.
  2. They issue one or more API keys with the scopes you need, an optional IP allow-list and an optional expiry.
  3. You receive the key once. It cannot be shown again; if you lose it, ask for a rotation.
  4. 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

  1. Search — POST /search/flights returns offers. Each offer has an offerToken, a subtotal and a fully priced price object for your tenant.
  2. Book — POST /bookings with the chosen offerToken, contact details and an Idempotency-Key. The server re-prices the offer; the client cannot alter the price.
  3. Track — GET /bookings/{id}, or receive booking.created / booking.cancelled webhooks.
  4. Reconcile — GET /invoices shows 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.

Next