Kashmir on your website, from one API.
The Kashmirly API is a versioned REST API (base URL api.kashmirly.com, all routes under /v1) that lets a registered travel agency's own website or backend sell Kashmir directly: pull the tour catalog, price a custom itinerary live from seasonal rate cards, and create bookings — a complete sale in just 3 calls. It is the same API that powers our partner portal, secured with scoped bearer keys such as catalog:read and bookings:write, returning JSON with RFC 7807 errors, so your customer never leaves your brand and your integration never breaks between versions.
API keys are issued to approved partners and scoped to exactly what your integration needs.
The basics
What are the basics of the Kashmirly API?
A conventional, versioned REST API — if you've integrated one supplier API, you already know this one.
One base URL
Everything lives at https://api.kashmirly.com under a
versioned path (/v1). Shipped integrations never break —
breaking changes mean a new version.
Scoped, revocable keys
Bearer-token auth with per-key scopes such as
catalog:read and bookings:write. Separate
keys for staging and production; revoke any key instantly.
OpenAPI contract
The API publishes an OpenAPI specification — generate a typed client in your language instead of hand-writing requests. Errors follow RFC 7807 problem details.
The integration
How does a complete booking flow look in JSON?
A complete sell — from browsing packages to a confirmed booking — is
three calls. Every request carries your key:
Authorization: Bearer <token>.
| Endpoint | Method | Purpose |
|---|---|---|
/v1/agent/packages | GET | List every package your account can sell, at partner rates |
/v1/agent/packages/{tourId}/quote | POST | Price a custom tour live for a date and party |
/v1/agent/bookings | POST | Create a booking with wallet/online payment split |
/v1/agent/bookings | GET | List your bookings with status and payment state |
GET List the catalog
All packages your partner account can sell — group departures, individual departures, and custom tours — at your partner rates.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": "0198f2c4-7e11-7c3a-9b6d-2f4a8c1e5d90",
"title": "Kashmir Classic — 7 Nights",
"kind": "Custom",
"nights": 7,
"cities": ["Srinagar", "Gulmarg", "Pahalgam"],
"currency": "INR",
"fromPrice": 28800.00,
"allowAgentPricing": true
},
{
"id": "0198f2c4-8a52-7d18-b0c7-91e3d6f2a4b7",
"title": "Winter Gulmarg Group Departure",
"kind": "Group",
"nights": 5,
"cities": ["Srinagar", "Gulmarg"],
"currency": "INR",
"fromPrice": 21500.00,
"departures": [
{ "arrivalDate": "2026-12-18", "roomsLeft": 6, "paxLeft": 14 }
]
}
]POST Quote a custom tour, live
Send your client's arrival date, party size, and vehicle choice. The platform prices the full itinerary from that season's hotel, transport, and service rate cards and returns every occupancy rate — no emails, no waiting.
{
"arrivalDate": "2026-10-12",
"travellers": 3,
"rooms": 1,
"vehicleTypeId": "0198f2c4-9b63-7e2f-8d41-c5a7e9b3f612"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "0198f2c5-1c74-7f30-9e52-d6b8fa04a723",
"arrivalDate": "2026-10-12",
"departureDate": "2026-10-19",
"roomsLeft": 1,
"paxLeft": 3,
"prices": {
"singleOccupancy": 41200.00,
"twinSharing": 28800.00,
"tripleSharing": 26400.00,
"childWithMattress": 19600.00,
"childWithoutMattress": 14200.00,
"infant": 0.00
},
"atBookingPercent": 100,
"paymentTermsLabel": "Full payment at booking"
}POST Create the booking
Book the quoted trip with the party's exact composition. Payment is split between your wallet and an online payment — a booking only exists once the at-booking amount succeeds, so an unpaid booking is impossible.
{
"tourId": "0198f2c4-7e11-7c3a-9b6d-2f4a8c1e5d90",
"arrivalDate": "2026-10-12",
"vehicleTypeId": "0198f2c4-9b63-7e2f-8d41-c5a7e9b3f612",
"withAc": true,
"rooms": 1,
"singleOccupancy": 0,
"twinSharing": 2,
"tripleSharing": 0,
"childWithMattress": 1,
"childWithoutMattress": 0,
"infants": 0,
"guestName": "Meera Sharma",
"notes": "Anniversary trip — houseboat night preferred.",
"couponCode": null,
"walletAmount": 50000.00,
"onlineAmount": 27000.00
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "0198f2c6-2d85-7a41-af63-e7c90b15b834",
"departureId": "0198f2c5-1c74-7f30-9e52-d6b8fa04a723",
"tourTitle": "Kashmir Classic — 7 Nights",
"arrivalDate": "2026-10-12",
"departureDate": "2026-10-19",
"rooms": 1,
"singleOccupancy": 0,
"twinSharing": 2,
"tripleSharing": 0,
"childWithMattress": 1,
"childWithoutMattress": 0,
"infants": 0,
"guestName": "Meera Sharma",
"totalAmount": 77200.00,
"currency": "INR",
"status": "Pending",
"paymentStatus": "Paid",
"amountPaid": 77200.00,
"createdAtUtc": "2026-08-30T09:41:07Z",
"confirmedAtUtc": null
}4xx Errors you can program against
Every error is an RFC 7807 problem-details document — a machine-readable type and status, plus field-level validation errors.
Content-Type: application/problem+json
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"ArrivalDate": ["An arrival date is required for a custom tour."],
"Travellers": ["The field Travellers must be between 1 and 100."]
}
}Examples are illustrative — identifiers and prices are sample values. The authoritative contract is the OpenAPI specification issued with your API credentials.
Ready to put Kashmir on your website?
Register your agency, get approved, and request API credentials — then your own site quotes and books Kashmir at your partner rates.
Get API access