travee+ quotation studio
travee+

The travee+ API

Send leads in from any CRM or website form, read them back with their quotations, and give your agents one-click links into travee+.

Base URL. Every call goes to https://www.traveeplusworld.com/api/?path=<route>. A plain /api/v1/leads URL returns 404, so always use the ?path= form.

1. Make an API key

  1. Sign in as a desk admin or DMC owner.
  2. Open Leads → Website forms & API, name the key and click Make a key.
  3. Copy it straight away. It starts with tvp_ and is shown only once.

A key reads and writes only its own desk's or DMC's leads. Keep it on your server, never in a web page or app. Revoke stops it at once. Send it with every request:

X-Api-Key: tvp_xxxxxxxx…
Authorization: Bearer tvp_xxxxxxxx…   # either form works

2. Send a lead: POST /v1/leads

curl -X POST "https://www.traveeplusworld.com/api/?path=/v1/leads" \
  -H "X-Api-Key: tvp_..." -H "Content-Type: application/json" \
  -d '{"name":"Rahul Sharma","email":"rahul@example.com","phone":"+91 98100 00000",
       "country":"India","package":"Char Dham Yatra 10N/11D",
       "travel_date":"2026-11-15","pax":"2 adults, 1 child","message":"Kedarnath by helicopter"}'
FieldRequiredNotes
nameyesAt least 2 characters.
email / phoneone of themA valid email, or a phone in any format.
countrynoRoutes the lead to that country's desk; otherwise the key's own desk.
package, travel_date, pax, messagenoSaved on the lead; the quote builder reads them to prefill.

Reply 201:

{"ok": true, "id": 1234, "desk": "India",
 "lead_url":  "https://www.traveeplusworld.com/lead?id=1234",
 "quote_url": "https://www.traveeplusworld.com/wizard?lead=1234"}

The lead is assigned to an agent automatically, the same as a website enquiry. Save id in your CRM.

3. Read leads and their quotations

GET /v1/leads/1234                      → {"lead": {...}}
GET /v1/leads&since=2026-10-01&limit=100 → {"leads": [...]}

since is YYYY-MM-DD; limit is 1–200 (default 50), newest first. Each lead carries its status, notes and a quotations list, newest first:

{"id": 88, "quote_ref": "4752833", "title": "Char Dham Yatra", "status": "sent",
 "currency": "INR", "total": 84500,
 "client_url": "https://www.traveeplusworld.com/quote?ref=4752833&k=…",
 "pdf_url":    "https://www.traveeplusworld.com/quote?ref=4752833&k=…&pdf=1",
 "edit_url":   "https://www.traveeplusworld.com/wizard?edit=4752833"}

Reading does not count against the daily limit; only POST does.

LinkForOpensLogin
lead_urlAgentThe lead: details, mail thread, tasksYes
quote_urlAgentThe quote builder, filled from the leadYes
edit_urlAgentAn existing quotationYes
client_urlCustomerThe quotation, with Accept and PayNo
pdf_urlAnyoneThe same quotation, ready to save as PDFNo

Open them in a new tab. Don't put travee+ in an iframe: sign-in won't work there. A signed-out agent is sent to sign in and brought straight back to the page they clicked.

5. Keeping in sync

Poll GET /v1/leads&since=<yesterday> every 5–15 minutes, or fetch one lead when an agent opens it in your CRM.

6. Errors

Every error is JSON: {"error": "message"}.

CodeMeaning
401No key, a wrong key, or a revoked key.
404The lead does not exist or belongs to another desk.
422A field is missing or invalid; the message names it.
429The key's daily lead limit (1,000 by default) is used up.

Need help connecting? Talk to us.