bymundi API

List trips

GET/v1/trips

Lists the agency's live trips (archived ones are at GET /trips/archived), most recently changed first. Filter by q (text in the title), publication, commercialState, ownerId, updatedSince and up to 5 metadata[key]=value pairs, which must all match. For a polling trigger (n8n, Zapier), pass the last updatedAt you saw as updatedSince with sort=updatedAt, and follow nextCursor until it is null.

Permissions: trips:read · Kind: read · Cost: 1 unit · MCP tool list_trips

Path parameters

None.

Query parameters

Field Type Required Description
limit integer 1–100, default 25
cursor string max 500 chars
sort "updatedAt" | "-updatedAt" | "createdAt" | "-createdAt" default "-updatedAt"
updatedSince datetime
q string max 200 chars
publication "draft" | "published"
commercialState "nueva" | "propuesta_enviada" | "aceptada" | "reserva_provisional" | "reservada" | "rechazada" | "cancelada"
ownerId uuid
metadata object

Response 200

Field Type Required Description
object "list" yes
data object[] yes
data[].object "trip" yes
data[].id uuid yes
data[].code string yes
data[].title string yes
data[].startDate string | null yes
data[].endDate string | null yes
data[].publication "draft" | "published" yes
data[].commercialState "nueva" | "propuesta_enviada" | "aceptada" | "reserva_provisional" | "reservada" | "rechazada" | "cancelada" yes
data[].travelers integer yes
data[].ownerId uuid | null yes
data[].design object | null yes
data[].design.version 1 yes
data[].design.originCity string yes
data[].design.stops object[] yes max 60 items
data[].design.returnCity string | null yes
data[].design.returnTransfer object | null yes
data[].design.originPlace object default {"placeId":"","lat":null,"lng":null,"formattedAddress":""}
data[].design.returnPlace object default {"placeId":"","lat":null,"lng":null,"formattedAddress":""}
data[].presentation object yes
data[].presentation.logoUrl uri | null
data[].presentation.brandColor string | null
data[].presentation.fontFamily "inter" | "montserrat" | "poppins" | "lora" | "playfair" | "source-sans" | null
data[].presentation.headerMedia object | null
data[].profile object yes
data[].profile.pace "relajado" | "equilibrado" | "intenso" | null default null
data[].profile.profiles "primera_vez" | "repetidor" | "familia_ninos" | "pareja" | "grupo" | "senior" | "movilidad_reducida" | "cultural" | "gastronomico" | "naturaleza" | "fotografia" | "otaku" | "compras" | "presupuesto_ajustado" | "premium"[] default []
data[].profile.mobility "normal" | "reducida" default "normal"
data[].profile.avoid string[] default []
data[].profile.notes string default ""
data[].coverImageUrl string | null yes
data[].coverage object | null yes
data[].coverage.state "sin_cobros" | "pago_parcial" | "pagado" yes
data[].coverage.percent integer yes
data[].coverage.overpaid boolean yes
data[].metadata object yes
data[].appUrl string | null yes
data[].publicUrl string | null yes
data[].createdAt string 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: