REST API reference
Tiqets API
9 endpoints for Tiqets. Each one is a POST with a JSON body, called with your API key.
- Base URL
- https://cotlet.dev/api/v1/tiqets
- Connects with
- Your own Tiqets account (the account you booked with)
- Integration page
- Tiqets
| Endpoint | Access | Description |
|---|---|---|
| search_experiences | read | Attractions, museums and tours on Tiqets by text and city, with price from. |
| get_experience | read | Product page: what is included, meeting point, instructions and cancellation terms. |
| check_availability | read | Ticket types, timeslots and prices for a product on a date. |
| list_bookings | read | Your bookings with product, visit date, tickets and status. |
| get_booking | read | One booking: tickets, price paid and whether it can be cancelled or rescheduled. |
| download_tickets | read | Download links for the e-tickets of one booking. |
| start_checkout | write | Fill the order and return the Tiqets checkout link. Nothing is charged until you pay there yourself. |
| reschedule_booking | write | Move a booking to another date or timeslot, where Tiqets offers rescheduling. |
| cancel_booking | write | Cancel a whole booking, where Tiqets allows it. |
Search experiences
readPOST https://cotlet.dev/api/v1/tiqets/search_experiences
Returns matching products, best match first, with the product ID, city and the lowest price shown. Use product_id in get_experience and check_availability. Pages hold up to 50 results.
Parameters
| Name | Type | Description |
|---|---|---|
| query required | string | What to look for, e.g. "Vatican" or "boat tour". |
| city | string | City name to narrow the results. |
| limit | integer | 1 to 50. Default: 20. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/search_experiences \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"Vatican"}' result = client.call("tiqets", "search_experiences", {"query":"Vatican"}) const result = await cotlet.call('tiqets', 'search_experiences', {"query":"Vatican"}); cotlet call tiqets search_experiences --data '{"query":"Vatican"}' Example response
{
"results": [
{
"product_id": "1089412",
"title": "Vatican Museums and Sistine Chapel: Skip-the-Line Ticket",
"city": "Rome",
"price_from": {
"amount": 32,
"currency": "EUR"
},
"url": "https://www.tiqets.com/en/rome-attractions-c71/vatican-museums-p1089412/"
}
]
} Get experience
readPOST https://cotlet.dev/api/v1/tiqets/get_experience
Returns the details Tiqets shows on the product page. Cancellation terms tell your agent whether free cancellation is on offer before you book.
Parameters
| Name | Type | Description |
|---|---|---|
| product_id required | string | Product ID from search_experiences. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/get_experience \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id":"product_8c41d2"}' result = client.call("tiqets", "get_experience", {"product_id":"product_8c41d2"}) const result = await cotlet.call('tiqets', 'get_experience', {"product_id":"product_8c41d2"}); cotlet call tiqets get_experience --data '{"product_id":"product_8c41d2"}' Example response
{
"product_id": "1089412",
"title": "Vatican Museums and Sistine Chapel: Skip-the-Line Ticket",
"city": "Rome",
"includes": [
"Entry to the Vatican Museums",
"Entry to the Sistine Chapel"
],
"free_cancellation": "Until 23:59 the day before the visit"
} Check availability
readPOST https://cotlet.dev/api/v1/tiqets/check_availability
Returns what Tiqets shows for that product on that day: ticket types with prices and, for timed products, the free timeslots in order. An empty list means nothing is available that day. Pass a ticket type ID to start_checkout.
Parameters
| Name | Type | Description |
|---|---|---|
| product_id required | string | Product ID from search_experiences. |
| date required | date | Visit date. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/check_availability \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id":"1089412","date":"2026-10-18"}' result = client.call("tiqets", "check_availability", {"product_id":"1089412","date":"2026-10-18"}) const result = await cotlet.call('tiqets', 'check_availability', {"product_id":"1089412","date":"2026-10-18"}); cotlet call tiqets check_availability --data '{"product_id":"1089412","date":"2026-10-18"}' Example response
{
"product_id": "1089412",
"date": "2026-10-18",
"timeslots": [
{
"time": "09:00",
"available": true
},
{
"time": "11:30",
"available": true
}
],
"ticket_types": [
{
"id": "adult",
"label": "Adult",
"price": {
"amount": 32,
"currency": "EUR"
}
}
]
} List bookings
readPOST https://cotlet.dev/api/v1/tiqets/list_bookings
Lists the bookings of the signed-in account, soonest visit first. Use order_id in get_booking, download_tickets and cancel_booking.
Parameters
| Name | Type | Description |
|---|---|---|
| when | enum | upcoming, past or all. Default: upcoming. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/list_bookings \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("tiqets", "list_bookings") const result = await cotlet.call('tiqets', 'list_bookings'); cotlet call tiqets list_bookings Example response
{
"bookings": [
{
"order_id": "71204583",
"product": "Sagrada Familia: Fast Track Ticket",
"visit_date": "2026-10-24",
"tickets": 2,
"status": "confirmed"
}
]
} Get booking
readPOST https://cotlet.dev/api/v1/tiqets/get_booking
Returns the order as the account shows it: product, visit date, tickets, price paid and whether cancelling or rescheduling is on offer. Check it before cancel_booking or reschedule_booking.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_bookings. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/get_booking \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"order_id":"order_8c41d2"}' result = client.call("tiqets", "get_booking", {"order_id":"order_8c41d2"}) const result = await cotlet.call('tiqets', 'get_booking', {"order_id":"order_8c41d2"}); cotlet call tiqets get_booking --data '{"order_id":"order_8c41d2"}' Example response
{
"order_id": "71204583",
"product": "Sagrada Familia: Fast Track Ticket",
"visit_date": "2026-10-24",
"tickets": [
{
"type": "Adult",
"quantity": 2
}
],
"total_paid": {
"amount": 66,
"currency": "EUR"
},
"can_cancel": true,
"can_reschedule": true
} Download tickets
readPOST https://cotlet.dev/api/v1/tiqets/download_tickets
Returns links to the ticket files of the order, in the format Tiqets provides for that product. Links are for you only; do not share them.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_bookings. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/download_tickets \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"order_id":"order_8c41d2"}' result = client.call("tiqets", "download_tickets", {"order_id":"order_8c41d2"}) const result = await cotlet.call('tiqets', 'download_tickets', {"order_id":"order_8c41d2"}); cotlet call tiqets download_tickets --data '{"order_id":"order_8c41d2"}' Example response
{
"order_id": "71204583",
"files": [
{
"name": "sagrada-familia-ticket-1.pdf",
"url": "https://example-download.invalid/t/71204583-1"
}
]
} Start checkout
writePOST https://cotlet.dev/api/v1/tiqets/start_checkout
Prepares an order for the product, date and tickets and returns the Tiqets checkout link. It does not pay and charges nothing. It reaches no one, so it runs without asking; you finish the payment on Tiqets.
Parameters
| Name | Type | Description |
|---|---|---|
| product_id required | string | Product ID from search_experiences. |
| date required | date | Visit date. |
| timeslot | string | Start time from check_availability, for timed products. |
| tickets required | object | Ticket type ID to quantity, e.g. {"adult": 2}. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/start_checkout \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"}' result = client.call("tiqets", "start_checkout", {"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"}) const result = await cotlet.call('tiqets', 'start_checkout', {"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"}); cotlet call tiqets start_checkout --data '{"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"}' Example response
{
"product_id": "1089412",
"date": "2026-10-18",
"timeslot": "09:00",
"tickets": {
"adult": 2
},
"total": {
"amount": 64,
"currency": "EUR"
},
"checkout_url": "https://example-checkout.invalid/c/9f3a"
} POST https://cotlet.dev/api/v1/tiqets/reschedule_booking
Changes the visit date or timeslot of one order, only for products where Tiqets offers it; get_booking says so. It changes your booking with the vendor. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_bookings. |
| date required | date | New visit date. |
| timeslot | string | New start time, for timed products. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/reschedule_booking \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"}' result = client.call("tiqets", "reschedule_booking", {"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"}) const result = await cotlet.call('tiqets', 'reschedule_booking', {"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"}); cotlet call tiqets reschedule_booking --data '{"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"}' Example response
{
"order_id": "71204583",
"status": "rescheduled",
"visit_date": "2026-10-24",
"timeslot": "14:00"
} POST https://cotlet.dev/api/v1/tiqets/cancel_booking
Cancels one whole order; partial cancellation is not offered. Free cancellation applies only if you chose it at booking, and runs until 23:59 on the day before the visit. Check get_booking first. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_bookings. |
Request
curl -X POST https://cotlet.dev/api/v1/tiqets/cancel_booking \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"order_id":"71204583"}' result = client.call("tiqets", "cancel_booking", {"order_id":"71204583"}) const result = await cotlet.call('tiqets', 'cancel_booking', {"order_id":"71204583"}); cotlet call tiqets cancel_booking --data '{"order_id":"71204583"}' Example response
{
"order_id": "71204583",
"status": "cancelled",
"product": "Sagrada Familia: Fast Track Ticket",
"visit_date": "2026-10-24",
"refund": {
"amount": 66,
"currency": "EUR"
}
}