List routes
GET/v1/catalog/routes
The agency's routes (Catalog → Routes), most recently changed first, paged by nextCursor. Filters: q (words in the title), tipo, duracion, ritmo, structured, destinoId (routes through that destination or zone), throughPlaceId (routes that stop at that place) and updatedSince (a polling trigger's watermark). Summaries only; GET /catalog/routes/{routeId} returns the stops.
Permissions: catalog:read · Kind: read · Cost: 1 unit · MCP tool list_routes
Path parameters
None.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
q |
string | max 200 chars | |
tipo |
"dia_entero" | "medio_dia" | "excursion" | "tematica" | "con_experiencias" | "llegada" | ||
duracion |
"medio_dia" | "dia_entero" | "dia_entero_largo" | ||
ritmo |
"relajado" | "equilibrado" | "intenso" | ||
structured |
boolean | "true" | "false" | ||
destinoId |
uuid | ||
throughPlaceId |
uuid | ||
updatedSince |
datetime | ||
limit |
integer | 1–100, default 25 | |
cursor |
string | max 500 chars |
Response 200
| Field | Type | Required | Description |
|---|---|---|---|
object |
"list" | yes | |
data |
object[] | yes | |
data[].object |
"route_summary" | yes | |
data[].id |
uuid | yes | |
data[].title |
string | yes | |
data[].externalId |
string | yes | |
data[].tipo |
"dia_entero" | "medio_dia" | "excursion" | "tematica" | "con_experiencias" | "llegada" | null | yes | |
data[].duracion |
"medio_dia" | "dia_entero" | "dia_entero_largo" | null | yes | |
data[].structured |
boolean | yes | |
data[].destinos |
object[] | yes | |
data[].destinos[].id |
uuid | yes | |
data[].destinos[].name |
string | yes | |
data[].durationMin |
integer | null | yes | |
data[].updatedAt |
string | yes | |
nextCursor |
string | null | yes |
Errors
Errors are problem details. Besides the refusals described above, any call like this one can return:
invalid_request— Invalid requestunauthorized— Missing or invalid API keyinsufficient_scope— Missing permissionrate_limited— Rate limit reached