# Tiqets API

> Every Tiqets endpoint on Cotlet: inputs, JSON Schema, cURL, Python and Node.js examples and an example response for each call.

Source: https://cotlet.dev/docs/api/tiqets

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

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: https://cotlet.dev/integrations/tiqets-api-mcp-server

## Endpoints

| 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

`POST https://cotlet.dev/api/v1/tiqets/search_experiences`

Access: read.

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 | Required | Description |
|---|---|---|---|
| `query` | string | yes | What to look for, e.g. "Vatican" or "boat tour". |
| `city` | string | no | City name to narrow the results. |
| `limit` | integer | no | 1 to 50. Default: 20. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "search_experiences", {"query":"Vatican"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'search_experiences', {"query":"Vatican"});
```

**CLI**

```bash
cotlet call tiqets search_experiences --data '{"query":"Vatican"}'
```

### Example response

```json
{
  "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

`POST https://cotlet.dev/api/v1/tiqets/get_experience`

Access: read.

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 | Required | Description |
|---|---|---|---|
| `product_id` | string | yes | Product ID from search_experiences. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "get_experience", {"product_id":"product_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'get_experience', {"product_id":"product_8c41d2"});
```

**CLI**

```bash
cotlet call tiqets get_experience --data '{"product_id":"product_8c41d2"}'
```

### Example response

```json
{
  "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

`POST https://cotlet.dev/api/v1/tiqets/check_availability`

Access: read.

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 | Required | Description |
|---|---|---|---|
| `product_id` | string | yes | Product ID from search_experiences. |
| `date` | date | yes | Visit date. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "check_availability", {"product_id":"1089412","date":"2026-10-18"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'check_availability', {"product_id":"1089412","date":"2026-10-18"});
```

**CLI**

```bash
cotlet call tiqets check_availability --data '{"product_id":"1089412","date":"2026-10-18"}'
```

### Example response

```json
{
  "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

`POST https://cotlet.dev/api/v1/tiqets/list_bookings`

Access: read.

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 | Required | Description |
|---|---|---|---|
| `when` | enum | no | upcoming, past or all. Default: upcoming. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/tiqets/list_bookings \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
result = client.call("tiqets", "list_bookings")
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'list_bookings');
```

**CLI**

```bash
cotlet call tiqets list_bookings
```

### Example response

```json
{
  "bookings": [
    {
      "order_id": "71204583",
      "product": "Sagrada Familia: Fast Track Ticket",
      "visit_date": "2026-10-24",
      "tickets": 2,
      "status": "confirmed"
    }
  ]
}
```

## Get booking

`POST https://cotlet.dev/api/v1/tiqets/get_booking`

Access: read.

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 | Required | Description |
|---|---|---|---|
| `order_id` | string | yes | Order ID from list_bookings. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "get_booking", {"order_id":"order_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'get_booking', {"order_id":"order_8c41d2"});
```

**CLI**

```bash
cotlet call tiqets get_booking --data '{"order_id":"order_8c41d2"}'
```

### Example response

```json
{
  "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

`POST https://cotlet.dev/api/v1/tiqets/download_tickets`

Access: read.

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 | Required | Description |
|---|---|---|---|
| `order_id` | string | yes | Order ID from list_bookings. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "download_tickets", {"order_id":"order_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'download_tickets', {"order_id":"order_8c41d2"});
```

**CLI**

```bash
cotlet call tiqets download_tickets --data '{"order_id":"order_8c41d2"}'
```

### Example response

```json
{
  "order_id": "71204583",
  "files": [
    {
      "name": "sagrada-familia-ticket-1.pdf",
      "url": "https://example-download.invalid/t/71204583-1"
    }
  ]
}
```

## Start checkout

`POST https://cotlet.dev/api/v1/tiqets/start_checkout`

Access: write.

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 | Required | Description |
|---|---|---|---|
| `product_id` | string | yes | Product ID from search_experiences. |
| `date` | date | yes | Visit date. |
| `timeslot` | string | no | Start time from check_availability, for timed products. |
| `tickets` | object | yes | Ticket type ID to quantity, e.g. {"adult": 2}. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "start_checkout", {"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'start_checkout', {"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"});
```

**CLI**

```bash
cotlet call tiqets start_checkout --data '{"product_id":"product_8c41d2","date":"2026-10-01","tickets":"tickets"}'
```

### Example response

```json
{
  "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"
}
```

## Reschedule booking

`POST https://cotlet.dev/api/v1/tiqets/reschedule_booking`

Access: write. Confirm: waits for the user's OK before it runs.

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 | Required | Description |
|---|---|---|---|
| `order_id` | string | yes | Order ID from list_bookings. |
| `date` | date | yes | New visit date. |
| `timeslot` | string | no | New start time, for timed products. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "reschedule_booking", {"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'reschedule_booking', {"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"});
```

**CLI**

```bash
cotlet call tiqets reschedule_booking --data '{"order_id":"71311902","date":"2026-10-25","timeslot":"13:30"}'
```

### Example response

```json
{
  "order_id": "71204583",
  "status": "rescheduled",
  "visit_date": "2026-10-24",
  "timeslot": "14:00"
}
```

## Cancel booking

`POST https://cotlet.dev/api/v1/tiqets/cancel_booking`

Access: write. Confirm: waits for the user's OK before it runs.

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 | Required | Description |
|---|---|---|---|
| `order_id` | string | yes | Order ID from list_bookings. |

### Request

**cURL**

```bash
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"}'
```

**Python**

```python
result = client.call("tiqets", "cancel_booking", {"order_id":"71204583"})
```

**Node.js**

```js
const result = await cotlet.call('tiqets', 'cancel_booking', {"order_id":"71204583"});
```

**CLI**

```bash
cotlet call tiqets cancel_booking --data '{"order_id":"71204583"}'
```

### Example response

```json
{
  "order_id": "71204583",
  "status": "cancelled",
  "product": "Sagrada Familia: Fast Track Ticket",
  "visit_date": "2026-10-24",
  "refund": {
    "amount": 66,
    "currency": "EUR"
  }
}
```
