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.
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
POST /v1/leadscurl -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"}'
| Field | Required | Notes |
|---|---|---|
name | yes | At least 2 characters. |
email / phone | one of them | A valid email, or a phone in any format. |
country | no | Routes the lead to that country's desk; otherwise the key's own desk. |
package, travel_date, pax, message | no | Saved 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.
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.
| Link | For | Opens | Login |
|---|---|---|---|
lead_url | Agent | The lead: details, mail thread, tasks | Yes |
quote_url | Agent | The quote builder, filled from the lead | Yes |
edit_url | Agent | An existing quotation | Yes |
client_url | Customer | The quotation, with Accept and Pay | No |
pdf_url | Anyone | The same quotation, ready to save as PDF | No |
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.
Poll GET /v1/leads&since=<yesterday> every 5–15 minutes, or fetch one lead when an agent opens it in your CRM.
Every error is JSON: {"error": "message"}.
| Code | Meaning |
|---|---|
401 | No key, a wrong key, or a revoked key. |
404 | The lead does not exist or belongs to another desk. |
422 | A field is missing or invalid; the message names it. |
429 | The key's daily lead limit (1,000 by default) is used up. |
Need help connecting? Talk to us.