# bymundi API > bymundi is the back office of travel agencies. Its REST API (https://api.bymundi.com/v1), MCP server (https://api.bymundi.com/mcp) and webhooks let automations and AI assistants read and change trips, itineraries, quotes, documents, travelers and the catalog, with a personal API key acting as a staff member. Every page below is Markdown. The whole site in one file: https://api.bymundi.com/llms-full.txt. Machine-readable contract: [OpenAPI document](https://api.bymundi.com/v1/openapi.json). ## Start - [bymundi API](https://api.bymundi.com/docs.md): Build on bymundi — trips, itineraries, quotes, documents, travelers and the catalog, over REST, MCP and webhooks. - [Quickstart](https://api.bymundi.com/docs/quickstart.md): From a new API key to your first undone change in five calls. - [Changelog](https://api.bymundi.com/docs/changelog.md): Dated changes to the bymundi API, MCP server and webhooks. ## Guides - [Authentication](https://api.bymundi.com/docs/guides/authentication.md): Personal API keys — how to create, send, rotate and revoke them. - [Permissions](https://api.bymundi.com/docs/guides/permissions.md): Areas and levels — what each permission lets a key read and change. - [Errors](https://api.bymundi.com/docs/guides/errors.md): Every error is an RFC 9457 problem details body with a stable code and a link to its page. - [Idempotency and retries](https://api.bymundi.com/docs/guides/idempotency-and-retries.md): Make writes safe to retry with Idempotency-Key. - [Undo and dry run](https://api.bymundi.com/docs/guides/undo-and-dry-run.md): Preview a change before making it, and revert it after. - [Pagination and filters](https://api.bymundi.com/docs/guides/pagination.md): Cursors, page size, sorting and change-based sync for list operations. - [Rate limits](https://api.bymundi.com/docs/guides/rate-limits.md): Per-key and per-agency budgets, the RateLimit headers and 429. - [Itineraries](https://api.bymundi.com/docs/guides/itineraries.md): The block tree, block types, refs, and days that come from a trip's design. - [n8n](https://api.bymundi.com/docs/guides/n8n.md): Call the API from n8n and receive webhooks with signature checking. ## MCP - [MCP server](https://api.bymundi.com/docs/mcp.md): Give an AI assistant bymundi's tools — what the MCP server offers and how it behaves. - [Connect a client](https://api.bymundi.com/docs/mcp/clients.md): Set up Claude Desktop, Claude Code, Cursor, VS Code, n8n or any MCP client. - [MCP tools](https://api.bymundi.com/docs/mcp/tools.md): Every tool of the bymundi MCP server, grouped by area, with the permission each needs. - [Accept a quote on the customer's behalf](https://api.bymundi.com/docs/mcp/tools/accept_quote.md): The accept_quote MCP tool: accept a quote on the customer's behalf. - [Add a traveler](https://api.bymundi.com/docs/mcp/tools/add_traveler.md): The add_traveler MCP tool: add a traveler. - [Add the booking contact](https://api.bymundi.com/docs/mcp/tools/add_trip_contact.md): The add_trip_contact MCP tool: add the booking contact. - [Change the itinerary](https://api.bymundi.com/docs/mcp/tools/apply_itinerary_changes.md): The apply_itinerary_changes MCP tool: change the itinerary. - [Archive a trip](https://api.bymundi.com/docs/mcp/tools/archive_trip.md): The archive_trip MCP tool: archive a trip. - [Complete a catalog photo upload](https://api.bymundi.com/docs/mcp/tools/complete_catalog_image_upload.md): The complete_catalog_image_upload MCP tool: complete a catalog photo upload. - [Complete a document upload](https://api.bymundi.com/docs/mcp/tools/complete_document_upload.md): The complete_document_upload MCP tool: complete a document upload. - [Create a catalog entry](https://api.bymundi.com/docs/mcp/tools/create_catalog_entity.md): The create_catalog_entity MCP tool: create a catalog entry. - [Create a document folder](https://api.bymundi.com/docs/mcp/tools/create_document_folder.md): The create_document_folder MCP tool: create a document folder. - [Create a quote](https://api.bymundi.com/docs/mcp/tools/create_quote.md): The create_quote MCP tool: create a quote. - [Create a route](https://api.bymundi.com/docs/mcp/tools/create_route.md): The create_route MCP tool: create a route. - [Create a trip](https://api.bymundi.com/docs/mcp/tools/create_trip.md): The create_trip MCP tool: create a trip. - [Delete a catalog entry](https://api.bymundi.com/docs/mcp/tools/delete_catalog_entity.md): The delete_catalog_entity MCP tool: delete a catalog entry. - [Delete a document](https://api.bymundi.com/docs/mcp/tools/delete_document.md): The delete_document MCP tool: delete a document. - [Delete a document folder](https://api.bymundi.com/docs/mcp/tools/delete_document_folder.md): The delete_document_folder MCP tool: delete a document folder. - [Delete a library block](https://api.bymundi.com/docs/mcp/tools/delete_library_entry.md): The delete_library_entry MCP tool: delete a library block. - [Delete a quote](https://api.bymundi.com/docs/mcp/tools/delete_quote.md): The delete_quote MCP tool: delete a quote. - [Delete a route](https://api.bymundi.com/docs/mcp/tools/delete_route.md): The delete_route MCP tool: delete a route. - [Delete a trip template](https://api.bymundi.com/docs/mcp/tools/delete_trip_template.md): The delete_trip_template MCP tool: delete a trip template. - [Duplicate a trip](https://api.bymundi.com/docs/mcp/tools/duplicate_trip.md): The duplicate_trip MCP tool: duplicate a trip. - [Edit a quote's lines and packages](https://api.bymundi.com/docs/mcp/tools/edit_quote_lines.md): The edit_quote_lines MCP tool: edit a quote's lines and packages. - [Fill days with routes or stops](https://api.bymundi.com/docs/mcp/tools/fill_days.md): The fill_days MCP tool: fill days with routes or stops. - [Read blocks in full](https://api.bymundi.com/docs/mcp/tools/get_blocks.md): The get_blocks MCP tool: read blocks in full. - [Get a catalog entry](https://api.bymundi.com/docs/mcp/tools/get_catalog_entity.md): The get_catalog_entity MCP tool: get a catalog entry. - [Read a trip's itinerary](https://api.bymundi.com/docs/mcp/tools/get_itinerary.md): The get_itinerary MCP tool: read a trip's itinerary. - [Get a library block](https://api.bymundi.com/docs/mcp/tools/get_library_entry.md): The get_library_entry MCP tool: get a library block. - [Get a quote](https://api.bymundi.com/docs/mcp/tools/get_quote.md): The get_quote MCP tool: get a quote. - [Get a route](https://api.bymundi.com/docs/mcp/tools/get_route.md): The get_route MCP tool: get a route. - [Get a trip's travelers](https://api.bymundi.com/docs/mcp/tools/get_travelers.md): The get_travelers MCP tool: get a trip's travelers. - [Get a trip](https://api.bymundi.com/docs/mcp/tools/get_trip.md): The get_trip MCP tool: get a trip. - [Get a trip template](https://api.bymundi.com/docs/mcp/tools/get_trip_template.md): The get_trip_template MCP tool: get a trip template. - [Insert a library block into a trip](https://api.bymundi.com/docs/mcp/tools/insert_library_entry.md): The insert_library_entry MCP tool: insert a library block into a trip. - [List archived trips](https://api.bymundi.com/docs/mcp/tools/list_archived_trips.md): The list_archived_trips MCP tool: list archived trips. - [List the agency's rasgos](https://api.bymundi.com/docs/mcp/tools/list_catalog_features.md): The list_catalog_features MCP tool: list the agency's rasgos. - [List changes](https://api.bymundi.com/docs/mcp/tools/list_changes.md): The list_changes MCP tool: list changes. - [List a trip's documents and folders](https://api.bymundi.com/docs/mcp/tools/list_documents.md): The list_documents MCP tool: list a trip's documents and folders. - [List quote templates](https://api.bymundi.com/docs/mcp/tools/list_quote_templates.md): The list_quote_templates MCP tool: list quote templates. - [List quotes](https://api.bymundi.com/docs/mcp/tools/list_quotes.md): The list_quotes MCP tool: list quotes. - [List routes](https://api.bymundi.com/docs/mcp/tools/list_routes.md): The list_routes MCP tool: list routes. - [Search or browse trip templates](https://api.bymundi.com/docs/mcp/tools/list_trip_templates.md): The list_trip_templates MCP tool: search or browse trip templates. - [List trips](https://api.bymundi.com/docs/mcp/tools/list_trips.md): The list_trips MCP tool: list trips. - [Check whether a day fits](https://api.bymundi.com/docs/mcp/tools/plan_day.md): The plan_day MCP tool: check whether a day fits. - [Publish a trip](https://api.bymundi.com/docs/mcp/tools/publish_trip.md): The publish_trip MCP tool: publish a trip. - [Read a document](https://api.bymundi.com/docs/mcp/tools/read_document.md): The read_document MCP tool: read a document. - [Reject a quote on the customer's behalf](https://api.bymundi.com/docs/mcp/tools/reject_quote.md): The reject_quote MCP tool: reject a quote on the customer's behalf. - [Remove a traveler](https://api.bymundi.com/docs/mcp/tools/remove_traveler.md): The remove_traveler MCP tool: remove a traveler. - [Remove the booking contact](https://api.bymundi.com/docs/mcp/tools/remove_trip_contact.md): The remove_trip_contact MCP tool: remove the booking contact. - [Rename a document folder](https://api.bymundi.com/docs/mcp/tools/rename_document_folder.md): The rename_document_folder MCP tool: rename a document folder. - [Reopen a quote](https://api.bymundi.com/docs/mcp/tools/reopen_quote.md): The reopen_quote MCP tool: reopen a quote. - [Resend an access email](https://api.bymundi.com/docs/mcp/tools/resend_access_email.md): The resend_access_email MCP tool: resend an access email. - [Restore a deleted catalog entry](https://api.bymundi.com/docs/mcp/tools/restore_catalog_entity.md): The restore_catalog_entity MCP tool: restore a deleted catalog entry. - [Restore an archived trip](https://api.bymundi.com/docs/mcp/tools/restore_trip.md): The restore_trip MCP tool: restore an archived trip. - [Save a block to the library](https://api.bymundi.com/docs/mcp/tools/save_library_entry.md): The save_library_entry MCP tool: save a block to the library. - [Save a trip as a template](https://api.bymundi.com/docs/mcp/tools/save_trip_template.md): The save_trip_template MCP tool: save a trip as a template. - [Search or browse the catalog](https://api.bymundi.com/docs/mcp/tools/search_catalog.md): The search_catalog MCP tool: search or browse the catalog. - [Search or browse the block library](https://api.bymundi.com/docs/mcp/tools/search_library.md): The search_library MCP tool: search or browse the block library. - [Search places for a day](https://api.bymundi.com/docs/mcp/tools/search_places.md): The search_places MCP tool: search places for a day. - [Send a quote](https://api.bymundi.com/docs/mcp/tools/send_quote.md): The send_quote MCP tool: send a quote. - [Set a trip's commercial state](https://api.bymundi.com/docs/mcp/tools/set_trip_commercial_state.md): The set_trip_commercial_state MCP tool: set a trip's commercial state. - [Start a catalog photo upload](https://api.bymundi.com/docs/mcp/tools/start_catalog_image_upload.md): The start_catalog_image_upload MCP tool: start a catalog photo upload. - [Start a document upload](https://api.bymundi.com/docs/mcp/tools/start_document_upload.md): The start_document_upload MCP tool: start a document upload. - [Suggest saved routes for a day](https://api.bymundi.com/docs/mcp/tools/suggest_routes.md): The suggest_routes MCP tool: suggest saved routes for a day. - [Sync the itinerary with the design](https://api.bymundi.com/docs/mcp/tools/sync_itinerary.md): The sync_itinerary MCP tool: sync the itinerary with the design. - [Sync a quote with the trip's design](https://api.bymundi.com/docs/mcp/tools/sync_quote_with_design.md): The sync_quote_with_design MCP tool: sync a quote with the trip's design. - [Undo a change](https://api.bymundi.com/docs/mcp/tools/undo_change.md): The undo_change MCP tool: undo a change. - [Unpublish a trip](https://api.bymundi.com/docs/mcp/tools/unpublish_trip.md): The unpublish_trip MCP tool: unpublish a trip. - [Update a catalog entry](https://api.bymundi.com/docs/mcp/tools/update_catalog_entity.md): The update_catalog_entity MCP tool: update a catalog entry. - [Update a document](https://api.bymundi.com/docs/mcp/tools/update_document.md): The update_document MCP tool: update a document. - [Update a library block](https://api.bymundi.com/docs/mcp/tools/update_library_entry.md): The update_library_entry MCP tool: update a library block. - [Update a quote](https://api.bymundi.com/docs/mcp/tools/update_quote.md): The update_quote MCP tool: update a quote. - [Update a route](https://api.bymundi.com/docs/mcp/tools/update_route.md): The update_route MCP tool: update a route. - [Update a traveler](https://api.bymundi.com/docs/mcp/tools/update_traveler.md): The update_traveler MCP tool: update a traveler. - [Update a trip](https://api.bymundi.com/docs/mcp/tools/update_trip.md): The update_trip MCP tool: update a trip. - [Update the booking contact](https://api.bymundi.com/docs/mcp/tools/update_trip_contact.md): The update_trip_contact MCP tool: update the booking contact. - [Update a trip template](https://api.bymundi.com/docs/mcp/tools/update_trip_template.md): The update_trip_template MCP tool: update a trip template. - [Upload a small catalog photo](https://api.bymundi.com/docs/mcp/tools/upload_catalog_image.md): The upload_catalog_image MCP tool: upload a small catalog photo. - [Upload a small document](https://api.bymundi.com/docs/mcp/tools/upload_document.md): The upload_document MCP tool: upload a small document. - [Who am I](https://api.bymundi.com/docs/mcp/tools/whoami.md): The whoami MCP tool: who am i. ## REST reference - [API reference](https://api.bymundi.com/docs/reference.md): Every REST operation of the bymundi API, grouped by area. - [Create a catalog entry](https://api.bymundi.com/docs/reference/catalog.entities.create.md): Creates a catalog entry, as New in the Catalog: a `destino` (a country, city or zone), a place (`punto`), accommodation (`alojamiento`, which needs a Google `placeId`), an activity (`actividad`) or a service (`servicio`). - [Delete a catalog entry](https://api.bymundi.com/docs/reference/catalog.entities.delete.md): Deletes a catalog entry, as the Catalog's Delete: SOFT — it leaves the lists, and trips that already use it keep showing it. - [Get a catalog entry](https://api.bymundi.com/docs/reference/catalog.entities.get.md): Returns one catalog entry in full: its place, images, tags and its kind's own fields (`content`). - [Search or browse the catalog](https://api.bymundi.com/docs/reference/catalog.entities.list.md): The agency's catalog (products, destinations and places): destinations (`destino`), places (`punto`), accommodation (`alojamiento`), activities and services. - [Restore a deleted catalog entry](https://api.bymundi.com/docs/reference/catalog.entities.restore.md): Brings back a deleted catalog entry, as Show deleted → Restore does — and every deleted parent above it, so it reappears in the tree. - [Update a catalog entry](https://api.bymundi.com/docs/reference/catalog.entities.update.md): Edits a catalog entry, as the Catalog's drawer does. - [List the agency's rasgos](https://api.bymundi.com/docs/reference/catalog.features.list.md): The traits (`content.features`) this agency already uses on catalog entries of one kind — what the Catalog's Traits field suggests. - [Complete a catalog photo upload](https://api.bymundi.com/docs/reference/catalog.images.completeUpload.md): Completes a photo upload after its bytes were PUT: bymundi re-encodes it and attaches it to the entry — last, or as the lead photo with `position: first`. - [Start a catalog photo upload](https://api.bymundi.com/docs/reference/catalog.images.startUpload.md): Reserves a photo for a catalog entry and returns a single-use upload URL (valid 2 hours). - [Create a route](https://api.bymundi.com/docs/reference/catalog.routes.create.md): Creates a route, as New route and its editor would. - [Delete a route](https://api.bymundi.com/docs/reference/catalog.routes.delete.md): Deletes a route, as its editor's Delete. - [Get a route](https://api.bymundi.com/docs/reference/catalog.routes.get.md): Returns one route in full. - [List routes](https://api.bymundi.com/docs/reference/catalog.routes.list.md): The agency's routes (Catalog → Routes), most recently changed first, paged by `nextCursor`. - [Update a route](https://api.bymundi.com/docs/reference/catalog.routes.update.md): Edits a route, as its editor's Save. - [Save a trip as a template](https://api.bymundi.com/docs/reference/catalog.tripTemplates.create.md): Saves a trip as a trip template (Catalog → Trips), as Save trip as template does: its design, its blocks, its quotes as draft proposals, its headcount, presentation and start date. - [Delete a trip template](https://api.bymundi.com/docs/reference/catalog.tripTemplates.delete.md): Deletes a trip template, as Delete in Catalog → Trips. - [Get a trip template](https://api.bymundi.com/docs/reference/catalog.tripTemplates.get.md): Returns one trip template in full: its design (the route) and its block forest. - [Search or browse trip templates](https://api.bymundi.com/docs/reference/catalog.tripTemplates.list.md): The agency's trip templates (Catalog → Trips). - [Update a trip template](https://api.bymundi.com/docs/reference/catalog.tripTemplates.update.md): Edits a template's title, description or tags, and/or REPLACES its content with a trip's (`fromTripId`: the same capture as saving; needs `trips:read`) — the API's Save changes. - [Get a change](https://api.bymundi.com/docs/reference/changes.get.md): Returns one change: the operation that made it, the trips it touched, and its status (applied, failed, reverting, reverted). - [List changes](https://api.bymundi.com/docs/reference/changes.list.md): Lists the changes this key's owner made through the API, from any of their keys, REST or MCP, most recently updated first — limited to the areas this key can read. - [Undo a change](https://api.bymundi.com/docs/reference/changes.revert.md): Undoes a change, as Undo does, and needs the permissions of the operation that made it. - [Complete a document upload](https://api.bymundi.com/docs/reference/documents.completeUpload.md): Completes an upload after its bytes were PUT: the document appears in the trip's Documents tab — internal (`visibility: staff`) unless you release it with `visibility: traveler`, optionally into a folder (`folderId`), as dropping a file on a visible folder does. - [Delete a document](https://api.bymundi.com/docs/reference/documents.delete.md): Deletes a document and its file, as the Documents tab's Delete does. - [Get a document's download link](https://api.bymundi.com/docs/reference/documents.download.md): Returns a signed link, valid for 5 minutes, that downloads the file under its name (an n8n HTTP Request node can fetch it as binary). - [Create a document folder](https://api.bymundi.com/docs/reference/documents.folders.create.md): Creates a folder in a trip's documents, as New folder does. - [Delete a document folder](https://api.bymundi.com/docs/reference/documents.folders.delete.md): Deletes a document folder, as Delete folder does. - [List a trip's document folders](https://api.bymundi.com/docs/reference/documents.folders.list.md): Lists a trip's document folders by name, each with how many documents it holds, in one page. - [Rename a document folder](https://api.bymundi.com/docs/reference/documents.folders.update.md): Renames one of a trip's document folders. - [Get a document](https://api.bymundi.com/docs/reference/documents.get.md): Returns one document — also a `pending` one, so you can check an upload you started. - [List documents](https://api.bymundi.com/docs/reference/documents.list.md): Lists the agency's documents on live trips, most recently changed first. - [List a trip's documents](https://api.bymundi.com/docs/reference/documents.listForTrip.md): Lists one trip's documents as its Documents tab shows them — the same filters as GET /documents. - [Start a document upload](https://api.bymundi.com/docs/reference/documents.startUpload.md): Reserves a document on a trip and returns a single-use upload URL (valid 2 hours). - [Update a document](https://api.bymundi.com/docs/reference/documents.update.md): Renames a document, releases it to the trip's travelers (`visibility: traveler`) or takes it back to internal (`staff`), and files it in a folder (`folderId`; null = loose) — the Documents tab's Make visible, Back to internal and Move to folder, in one write. - [Get an event](https://api.bymundi.com/docs/reference/events.get.md): One event, thin. - [List events](https://api.bymundi.com/docs/reference/events.list.md): Events of the last 30 days, OLDEST first, limited to the types this key can read — the same events webhooks deliver, without `data`. - [Change the itinerary](https://api.bymundi.com/docs/reference/itinerary.applyOps.md): Applies a batch of block operations (`add`, `update`, `move`, `delete`) atomically, with the builder's own validation, and re-plans the route of every day it touches. - [Get a trip's itinerary](https://api.bymundi.com/docs/reference/itinerary.get.md): Returns the trip's itinerary as a flat list of blocks in rank order; `parentId` builds the tree (agenda → `dia` → activities, and so on). - [Get one block](https://api.bymundi.com/docs/reference/itinerary.getBlock.md): Returns one block of the trip's itinerary, with its full `data` and its current `version`. - [Sync the itinerary with the design](https://api.bymundi.com/docs/reference/itinerary.sync.md): Does what opening the Itinerario tab does in the app: rebuilds the days from the trip's design and latest quote (creating them the first time), then rewrites stop times planned by an older planner. - [Save a block to the library](https://api.bymundi.com/docs/reference/library.entries.create.md): Saves one block of a trip — and everything inside it — as a reusable library entry (Catalog → Blocks), as Save to library does. - [Delete a library block](https://api.bymundi.com/docs/reference/library.entries.delete.md): Deletes a library entry, as Delete in Catalog → Blocks. - [Get a library block](https://api.bymundi.com/docs/reference/library.entries.get.md): Returns one saved block with its whole subtree (`snapshot`: type, data, layout, children, with no ids): the content that inserting it into a trip copies. - [Search or browse the block library](https://api.bymundi.com/docs/reference/library.entries.list.md): The agency's saved blocks (Catalog → Blocks): reusable itinerary pieces such as a day or a section. - [Update a library block](https://api.bymundi.com/docs/reference/library.entries.update.md): Renames or re-tags a library entry, and/or REPLACES its content with a block of a trip (`fromTrip`: the same capture as saving; the block must be of the entry's type, else 422 `root_type_mismatch`; needs `trips:read`). - [Who am I](https://api.bymundi.com/docs/reference/me.get.md): Returns the key's owner, the agency, the key's permissions and the rate limits. - [Accept a quote on the customer's behalf](https://api.bymundi.com/docs/reference/quotes.accept.md): Records that the customer accepted, as the quote editor's Accept does (`acceptedVia: agent`). - [Create a quote](https://api.bymundi.com/docs/reference/quotes.create.md): Creates a draft quote on a trip, as the quote editor's + button does: seeded from the trip's design unless `seedFromDesign: false`, priced for the trip's headcount at the agency's default margin unless `marginPct` says otherwise. - [Delete a quote](https://api.bymundi.com/docs/reference/quotes.delete.md): Deletes a quote and its public page, as the quote editor's Delete does. - [Edit a quote's lines and packages](https://api.bymundi.com/docs/reference/quotes.editLines.md): Applies up to 50 ops to a quote's lines and packages as ONE change: `add_line` (a flight/transport, hotel or other line; into a package with `packageId`, or as an upgrade replacing a base line with `replacesItemId`), `update_line`, `remove_line` (a base line's upgrades go with it), `add_package` (up to 3; package quotes only), `rename_package`, `remove_package` (only when no line uses it). - [Get a quote](https://api.bymundi.com/docs/reference/quotes.get.md): Returns one quote with everything the quote editor shows: its mode (a package quote with upgrade packages, or a per_item basket), lines, packages, bill totals, status and decision, whether it changed since it was sent, the customer's engagement with the public page, the public link and your metadata. - [List quotes](https://api.bymundi.com/docs/reference/quotes.list.md): Lists the agency's quotes on live trips, most recently changed first. - [List a trip's quotes](https://api.bymundi.com/docs/reference/quotes.listForTrip.md): Lists one trip's quotes, as the quote editor's tabs show them — the same filters as GET /quotes. - [Reject a quote on the customer's behalf](https://api.bymundi.com/docs/reference/quotes.reject.md): Records that the customer declined, as the quote editor's Reject does. - [Reopen a quote](https://api.bymundi.com/docs/reference/quotes.reopen.md): Takes an accepted or rejected quote back to `sent`, as the quote editor's Reopen does; reopening an accepted quote also takes the trip back from `aceptada`. - [Send a quote](https://api.bymundi.com/docs/reference/quotes.send.md): Publishes the quote's public page, as the quote editor's Send / Update link does: renders the agency's template with the quote as it is now and stores that snapshot at `publicUrl`, which you share with the customer (nothing is emailed). - [Sync a quote with the trip's design](https://api.bymundi.com/docs/reference/quotes.syncDesign.md): Does what the quote editor's Sync does: adds a priced line for each new journey and a hotel for each new stop of the trip's design, updates what the design owns on linked lines (routes, dates, times, cities, nights), and removes linked lines whose journey or stop is gone — only if nobody priced or edited them. - [Get a quote template](https://api.bymundi.com/docs/reference/quotes.templates.get.md): Returns one quote template with its HTML (HTML, CSS and Liquid, as the agency wrote it). - [List quote templates](https://api.bymundi.com/docs/reference/quotes.templates.list.md): Lists the agency's quote templates — what the public quote page looks like — in one page. - [Update a quote](https://api.bymundi.com/docs/reference/quotes.update.md): Changes the quote's own fields, as the quote editor's header and copy editor do: name, travelers (must equal the trip's headcount), marginPct, finalPriceOverride, validUntil, ctaUrl, templateId, and the template's editable texts and images (`textOverrides`, `imageOverrides`: merged key by key, `null` restores the template's). - [Resend an access email](https://api.bymundi.com/docs/reference/travelers.access.resend.md): Queues the app-access email again for one address of the trip — a passenger's or the contact's — as the Travelers card's Resend does. - [Add a traveler](https://api.bymundi.com/docs/reference/travelers.add.md): Adds one passenger to the trip, last unless `position` says otherwise (0 = first). - [Add the booking contact](https://api.bymundi.com/docs/reference/travelers.contact.create.md): Makes a person the trip's booking contact (the one who books and pays; they need not travel), as the contact panel's Invite does: finds or creates their traveler account, makes them the booking's holder and stores the contact details you send. - [Get a trip's booking contact](https://api.bymundi.com/docs/reference/travelers.contact.get.md): The trip's booking contact — the person who books and pays, who need not travel — as the contact panel shows it, with the traveler `account` that holds the booking and its app `access`. - [Remove the booking contact](https://api.bymundi.com/docs/reference/travelers.contact.remove.md): Removes the booking contact from the trip, as the contact panel's Remove does: their access to this trip and the contact details stored with it go; their account and their other trips stay. - [Update the booking contact](https://api.bymundi.com/docs/reference/travelers.contact.update.md): Changes the booking contact's details, field by field (`null` clears one), as the contact panel does. - [Get a traveler](https://api.bymundi.com/docs/reference/travelers.get.md): One passenger, with every field the Travelers drawer shows, `missing`, `paxType` and app `access`. - [List travelers](https://api.bymundi.com/docs/reference/travelers.list.md): The agency's passengers across live trips, for polling (n8n, Zapier): pass the last `updatedAt` you saw as `updatedSince` with `sort=updatedAt`, and follow `nextCursor` until it is null. - [Remove a traveler](https://api.bymundi.com/docs/reference/travelers.remove.md): Removes a passenger from the trip, as the drawer's Delete does; the others close up the gap. - [Get a trip's travelers](https://api.bymundi.com/docs/reference/travelers.roster.get.md): The trip's passengers in booking order (`position` 0 first) with every field the Travelers card shows — names, birth date, nationality, identity document, contact details — plus each one's `missing` ticketing fields and app `access`; the booking contact; the contracted `headcount` and a summary. - [Update a traveler](https://api.bymundi.com/docs/reference/travelers.update.md): Changes a passenger's fields — an absent field is unchanged, `null` clears it — and/or moves it (`position`). - [Archive a trip](https://api.bymundi.com/docs/reference/trips.archive.md): Archives (soft-deletes) a trip, as Archive does in the app, subject to your trip-deletion permission (none / own trips / the agency's). - [Create a trip](https://api.bymundi.com/docs/reference/trips.create.md): Creates a trip owned by the key's owner: blank, from a trip template (`templateId`, which brings the template's design and blocks), or from a `design` (a route: origin, stops with nights, transfers), which builds one itinerary day per trip day and derives `endDate`. - [Duplicate a trip](https://api.bymundi.com/docs/reference/trips.duplicate.md): Copies a trip as `Copia de …`, in draft, as the app's Duplicate does. - [Get a trip](https://api.bymundi.com/docs/reference/trips.get.md): Returns one trip with every field the app shows: dates, headcount, owner, design (the route), presentation overrides, the planner profile, commercial state, payment coverage and your metadata. - [List trips](https://api.bymundi.com/docs/reference/trips.list.md): Lists the agency's live trips (archived ones are at GET /trips/archived), most recently changed first. - [List archived trips](https://api.bymundi.com/docs/reference/trips.listArchived.md): Lists the agency's archived trips, most recently archived first, in one page (the app's own archive list is not paginated either). - [Publish a trip](https://api.bymundi.com/docs/reference/trips.publish.md): Publishes the trip so its public link (`publicUrl`) and the traveler's app show it. - [Restore an archived trip](https://api.bymundi.com/docs/reference/trips.restore.md): Brings an archived trip back, as Restore does in the app, subject to your trip-deletion permission. - [Set a trip's commercial state](https://api.bymundi.com/docs/reference/trips.setCommercialState.md): Moves the trip's commercial state (nueva, propuesta_enviada, aceptada, reserva_provisional, reservada, rechazada, cancelada), as the state menu does in the app. - [Unpublish a trip](https://api.bymundi.com/docs/reference/trips.unpublish.md): Returns the trip to draft: its public link and the traveler's app stop showing it. - [Update a trip](https://api.bymundi.com/docs/reference/trips.update.md): Changes any field an agent can edit in the app: title, startDate, endDate, travelers (1–40; refused while a quote is accepted), ownerId (an active staff member), design, presentation, profile, and metadata. - [List an endpoint's deliveries](https://api.bymundi.com/docs/reference/webhooks.deliveries.list.md): The endpoint's deliveries, newest first, for 30 days: status, attempts, the receiver's last status code and error, and when a pending one is tried again. - [Resend a delivery](https://api.bymundi.com/docs/reference/webhooks.deliveries.resend.md): Queues the delivery again (same `webhook-id`), with the object's CURRENT state. - [Create a webhook endpoint](https://api.bymundi.com/docs/reference/webhooks.endpoints.create.md): Subscribes an HTTPS url to events. - [Delete a webhook endpoint](https://api.bymundi.com/docs/reference/webhooks.endpoints.delete.md): Stops and removes the endpoint and its delivery history. - [Get a webhook endpoint](https://api.bymundi.com/docs/reference/webhooks.endpoints.get.md): Returns one of this key's endpoints: its url, event types, whether it is on, and why it was switched off. - [List webhook endpoints](https://api.bymundi.com/docs/reference/webhooks.endpoints.list.md): Lists the webhook endpoints that belong to this key, newest first. - [Rotate a webhook endpoint's secret](https://api.bymundi.com/docs/reference/webhooks.endpoints.rotateSecret.md): Issues a new signing secret, returned ONCE. - [Send a test event](https://api.bymundi.com/docs/reference/webhooks.endpoints.test.md): Queues a `ping` event to this endpoint alone; it is sent within about 30 seconds. - [Update a webhook endpoint](https://api.bymundi.com/docs/reference/webhooks.endpoints.update.md): Changes the url, description or event types, or turns the endpoint off and on (`enabled`). ## Webhooks - [Webhook events](https://api.bymundi.com/docs/webhooks/events.md): Every webhook event type, when it fires and the permission it needs. - [Webhooks](https://api.bymundi.com/docs/guides/webhooks.md): Get a signed HTTPS call when trips, quotes, travelers or documents change. - [trip.created](https://api.bymundi.com/docs/webhooks/events/trip.created.md): A trip was created. - [trip.updated](https://api.bymundi.com/docs/webhooks/events/trip.updated.md): A trip's fields or metadata changed. - [trip.archived](https://api.bymundi.com/docs/webhooks/events/trip.archived.md): A trip was archived. - [trip.restored](https://api.bymundi.com/docs/webhooks/events/trip.restored.md): An archived trip was restored. - [trip.published](https://api.bymundi.com/docs/webhooks/events/trip.published.md): A trip was published to its travelers. - [trip.unpublished](https://api.bymundi.com/docs/webhooks/events/trip.unpublished.md): A trip was unpublished. - [trip.deleted](https://api.bymundi.com/docs/webhooks/events/trip.deleted.md): A trip was erased for good. - [trip.itinerary.updated](https://api.bymundi.com/docs/webhooks/events/trip.itinerary.updated.md): A trip's itinerary changed — one event per burst of edits. - [quote.created](https://api.bymundi.com/docs/webhooks/events/quote.created.md): A quote was created. - [quote.updated](https://api.bymundi.com/docs/webhooks/events/quote.updated.md): A quote changed. - [quote.sent](https://api.bymundi.com/docs/webhooks/events/quote.sent.md): A quote was sent (or sent again). - [quote.accepted](https://api.bymundi.com/docs/webhooks/events/quote.accepted.md): A quote was accepted. - [quote.rejected](https://api.bymundi.com/docs/webhooks/events/quote.rejected.md): A quote was rejected. - [quote.deleted](https://api.bymundi.com/docs/webhooks/events/quote.deleted.md): A quote was deleted. - [traveler.added](https://api.bymundi.com/docs/webhooks/events/traveler.added.md): A passenger was added to a trip. - [traveler.updated](https://api.bymundi.com/docs/webhooks/events/traveler.updated.md): A passenger changed. - [traveler.removed](https://api.bymundi.com/docs/webhooks/events/traveler.removed.md): A passenger was removed. - [trip.contact.updated](https://api.bymundi.com/docs/webhooks/events/trip.contact.updated.md): A trip's booking contact was made, changed or removed (`data` null when there is none). - [document.created](https://api.bymundi.com/docs/webhooks/events/document.created.md): A document finished uploading. - [document.updated](https://api.bymundi.com/docs/webhooks/events/document.updated.md): A document was renamed, moved or released. - [document.deleted](https://api.bymundi.com/docs/webhooks/events/document.deleted.md): A document was deleted. ## Errors - [Error codes](https://api.bymundi.com/problems.md): Every error code the bymundi API returns, with what it means and what to do. - [access_not_open](https://api.bymundi.com/problems/access_not_open.md): Travelers get app access when the trip is booked (`reservada`); before that there is nothing to resend. - [already_complete](https://api.bymundi.com/problems/already_complete.md): This upload was already completed. - [already_deleted](https://api.bymundi.com/problems/already_deleted.md): This catalog entry is already deleted. - [already_queued](https://api.bymundi.com/problems/already_queued.md): An access email to this address is already waiting to be sent. - [ambiguous_ref](https://api.bymundi.com/problems/ambiguous_ref.md): A short block ref matched more than one block. - [bad_pairing](https://api.bymundi.com/problems/bad_pairing.md): `pairedWithId` must name another transport line of this quote. - [basket_rules](https://api.bymundi.com/problems/basket_rules.md): The line breaks a rule of the quote's mode (for example a per-item quote has no packages). - [being_edited](https://api.bymundi.com/problems/being_edited.md): The template is open for editing in the builder as a working copy. - [body_too_large](https://api.bymundi.com/problems/body_too_large.md): Request bodies are capped at 1 MB. - [change_not_applied](https://api.bymundi.com/problems/change_not_applied.md): Only an applied change can be reverted; this one is already reverted, failed, or was superseded. - [confirmation_required](https://api.bymundi.com/problems/confirmation_required.md): This change is large or cannot be undone, so it must be confirmed (for example deleting more than 5 blocks or 30% of an itinerary, or deleting a quote, document, contact or catalog entry). The body sets `requiresConfirmation: true`. - [conflict](https://api.bymundi.com/problems/conflict.md): The resource changed after you read it (its `version` or `updatedAt` moved), so the write was refused. - [contact_exists](https://api.bymundi.com/problems/contact_exists.md): The trip already has a booking contact. - [day_plan_refused](https://api.bymundi.com/problems/day_plan_refused.md): The planner could not plan one of the days asked for; the detail names the day and why. - [days_occupied](https://api.bymundi.com/problems/days_occupied.md): The days already hold route content. `occupiedDays` lists them. - [decision_refused](https://api.bymundi.com/problems/decision_refused.md): The quote cannot take this decision in its current state; the detail carries the reason code. - [delivery_busy](https://api.bymundi.com/problems/delivery_busy.md): That delivery is still queued or being sent. - [dry_run_unsupported](https://api.bymundi.com/problems/dry_run_unsupported.md): This operation cannot preview its effect; `dryRun` is only accepted where the reference says so. - [duplicate_client_id](https://api.bymundi.com/problems/duplicate_client_id.md): Two ops in one call used the same `clientId`. - [empty_route](https://api.bymundi.com/problems/empty_route.md): That route has no stops. - [empty_selection](https://api.bymundi.com/problems/empty_selection.md): Name at least one of the quote's lines in `lineIds`. - [empty_update](https://api.bymundi.com/problems/empty_update.md): The update named no field to change. - [endpoint_disabled](https://api.bymundi.com/problems/endpoint_disabled.md): The endpoint is switched off. - [endpoint_exists](https://api.bymundi.com/problems/endpoint_exists.md): This key already has an endpoint with that url. - [endpoint_limit](https://api.bymundi.com/problems/endpoint_limit.md): A key has at most 10 webhook endpoints. - [entry_deleted](https://api.bymundi.com/problems/entry_deleted.md): This catalog entry is deleted. - [event_type_not_permitted](https://api.bymundi.com/problems/event_type_not_permitted.md): The key cannot read the area of one or more of these event types. `errors[]` lists them. - [external_id_taken](https://api.bymundi.com/problems/external_id_taken.md): Another live catalog entry already has this external id. - [field_not_applicable](https://api.bymundi.com/problems/field_not_applicable.md): The field does not exist on this kind of line. - [file_too_large](https://api.bymundi.com/problems/file_too_large.md): The file is above the size cap for its kind; the detail says the cap. - [filter_too_broad](https://api.bymundi.com/problems/filter_too_broad.md): A metadata filter matched more than 500 records. - [folder_not_in_trip](https://api.bymundi.com/problems/folder_not_in_trip.md): The folder is not one of this trip's folders. - [forbidden](https://api.bymundi.com/problems/forbidden.md): Your role in the agency does not allow this action, whatever the key's permissions (for example deleting a trip or quote someone else owns). - [https_required](https://api.bymundi.com/problems/https_required.md): Webhook URLs must use https. - [idempotency_key_reused](https://api.bymundi.com/problems/idempotency_key_reused.md): This key was already used within 24 hours with a different request. - [inline_too_large](https://api.bymundi.com/problems/inline_too_large.md): Inline uploads are capped at 512 KB. - [insufficient_scope](https://api.bymundi.com/problems/insufficient_scope.md): The key is valid but lacks the permission this operation needs. The detail names it. - [internal](https://api.bymundi.com/problems/internal.md): Something failed on our side. Nothing you sent caused it. - [invalid_base64](https://api.bymundi.com/problems/invalid_base64.md): `contentBase64` is not valid base64. - [invalid_block](https://api.bymundi.com/problems/invalid_block.md): This block cannot be saved to the library. - [invalid_content](https://api.bymundi.com/problems/invalid_content.md): Some content fields are not fields of this kind of entry, or their values do not validate. - [invalid_cursor](https://api.bymundi.com/problems/invalid_cursor.md): The `cursor` is malformed or belongs to another list. - [invalid_idempotency_key](https://api.bymundi.com/problems/invalid_idempotency_key.md): `Idempotency-Key` must be 1–255 characters. - [invalid_json](https://api.bymundi.com/problems/invalid_json.md): The request body is not valid JSON. - [invalid_line](https://api.bymundi.com/problems/invalid_line.md): One line op does not validate; `errors[]` points at it. - [invalid_lines](https://api.bymundi.com/problems/invalid_lines.md): The quote's lines do not validate. - [invalid_parent](https://api.bymundi.com/problems/invalid_parent.md): The parent entry cannot hold this kind of entry. - [invalid_request](https://api.bymundi.com/problems/invalid_request.md): One or more parameters or body fields failed validation. `errors[]` names each field (`path`) and why. - [invalid_rich_text](https://api.bymundi.com/problems/invalid_rich_text.md): Rich text must be plain text, or bymundi's own rich-text nodes exactly as a read returned them. - [invalid_route](https://api.bymundi.com/problems/invalid_route.md): The route does not validate. - [invalid_stop](https://api.bymundi.com/problems/invalid_stop.md): Every stop must be a live catalog place of this agency. - [invalid_url](https://api.bymundi.com/problems/invalid_url.md): The url must be an absolute URL of at most 2048 characters, with no credentials and no fragment. - [key_invalid](https://api.bymundi.com/problems/key_invalid.md): The endpoint's key is revoked, expired or no longer usable, so the endpoint cannot be turned on. - [kind_mismatch](https://api.bymundi.com/problems/kind_mismatch.md): A line can only replace a line of the same kind. - [mejora_needs_package](https://api.bymundi.com/problems/mejora_needs_package.md): A line that replaces another (an upgrade) belongs to a package. - [metadata_too_large](https://api.bymundi.com/problems/metadata_too_large.md): A resource holds at most 50 metadata keys. - [method_not_allowed](https://api.bymundi.com/problems/method_not_allowed.md): The path exists but does not accept this HTTP method. The `Allow` header lists the methods it does accept. - [mode_immutable](https://api.bymundi.com/problems/mode_immutable.md): A quote's mode is chosen when it is created. - [negative_price](https://api.bymundi.com/problems/negative_price.md): Prices and price overrides cannot be negative. - [no_contact](https://api.bymundi.com/problems/no_contact.md): The trip has no booking contact. - [no_design](https://api.bymundi.com/problems/no_design.md): The trip has no design (route) to work from. - [no_email](https://api.bymundi.com/problems/no_email.md): An email address is required here. - [no_inverse](https://api.bymundi.com/problems/no_inverse.md): This change recorded nothing to undo. - [not_a_base_line](https://api.bymundi.com/problems/not_a_base_line.md): Only a base line (in no package, and not itself an upgrade) can be replaced. - [not_an_image](https://api.bymundi.com/problems/not_an_image.md): The uploaded file is not a readable image and was discarded. - [not_archived](https://api.bymundi.com/problems/not_archived.md): Only an archived trip can be restored. - [not_deleted](https://api.bymundi.com/problems/not_deleted.md): Only a deleted catalog entry can be restored. - [not_found](https://api.bymundi.com/problems/not_found.md): The resource does not exist, or this key cannot see it. The two are indistinguishable on purpose. - [nothing_to_update](https://api.bymundi.com/problems/nothing_to_update.md): A webhook endpoint update named none of `url`, `description`, `eventTypes` or `enabled`. - [origin_not_allowed](https://api.bymundi.com/problems/origin_not_allowed.md): The MCP endpoint does not accept requests from web pages. - [output_contract](https://api.bymundi.com/problems/output_contract.md): The operation produced a response that breaks its own documented schema, so it was withheld. - [owner_not_staff](https://api.bymundi.com/problems/owner_not_staff.md): `ownerId` must be an active staff member of this agency. - [package_in_use](https://api.bymundi.com/problems/package_in_use.md): Lines still belong to this package. - [package_slot_taken](https://api.bymundi.com/problems/package_slot_taken.md): That base line already has an upgrade in this package. - [parent_not_found](https://api.bymundi.com/problems/parent_not_found.md): The parent entry does not exist or is deleted. - [pax_below_roster](https://api.bymundi.com/problems/pax_below_roster.md): The headcount cannot go below the number of passengers already on the trip. - [pax_exceeded](https://api.bymundi.com/problems/pax_exceeded.md): Adding them would put more passengers on the trip than its headcount. - [pax_locked](https://api.bymundi.com/problems/pax_locked.md): The headcount is locked because a quote was accepted. - [pax_out_of_range](https://api.bymundi.com/problems/pax_out_of_range.md): `travelers` must be between 1 and 40. - [place_required](https://api.bymundi.com/problems/place_required.md): This kind of entry needs a place. - [place_taken](https://api.bymundi.com/problems/place_taken.md): The agency already has a live entry of this kind for that Google place. - [plan_refused](https://api.bymundi.com/problems/plan_refused.md): The itinerary change breaks a structural rule (a block that cannot hold another, a day on a trip whose days come from its design, a missing anchor…). `errors[]` points at the op. - [private_destination](https://api.bymundi.com/problems/private_destination.md): The url points at a private or reserved address; webhooks go to public hosts only. - [quote_has_payments](https://api.bymundi.com/problems/quote_has_payments.md): A quote with payments cannot be deleted through the API. - [quote_sold](https://api.bymundi.com/problems/quote_sold.md): An accepted quote cannot be deleted through the API. - [rate_limited](https://api.bymundi.com/problems/rate_limited.md): The key (120 units a minute) or the agency (600 units a minute) used its budget for the current window. - [request_in_progress](https://api.bymundi.com/problems/request_in_progress.md): A request with this Idempotency-Key is still running. - [root_type_mismatch](https://api.bymundi.com/problems/root_type_mismatch.md): A library entry keeps its block type; the captured block is of another type. - [roster_locked](https://api.bymundi.com/problems/roster_locked.md): Passengers arrive with the customer's acceptance: before that, a trip whose commercial state is still `nueva`, `propuesta_enviada` or `rechazada` takes none. - [route_not_found](https://api.bymundi.com/problems/route_not_found.md): No operation answers at this method and path. - [route_too_short](https://api.bymundi.com/problems/route_too_short.md): A route of this type needs more stops. - [stop_not_found](https://api.bymundi.com/problems/stop_not_found.md): A stop names a place that is not a live catalog place of this agency. - [stored_content_invalid](https://api.bymundi.com/problems/stored_content_invalid.md): The entry's stored content is not valid for its kind, so it cannot be changed through the API. - [template_error](https://api.bymundi.com/problems/template_error.md): The quote's template could not render this quote. - [too_many_images](https://api.bymundi.com/problems/too_many_images.md): An entry keeps at most a fixed number of images; the detail says how many. - [too_many_packages](https://api.bymundi.com/problems/too_many_packages.md): A quote has a maximum number of packages; the detail says how many. - [travelers_mismatch](https://api.bymundi.com/problems/travelers_mismatch.md): The quote is priced for a different number of travelers than the trip has. - [trip_has_no_design](https://api.bymundi.com/problems/trip_has_no_design.md): Only a trip with a valid design can be saved as a template. - [unauthorized](https://api.bymundi.com/problems/unauthorized.md): The request carried no API key, or one that is unknown, revoked or expired, or its agency has no API access. - [undo_expired](https://api.bymundi.com/problems/undo_expired.md): Passenger changes can be undone for 30 days; this one is older. - [unknown_address](https://api.bymundi.com/problems/unknown_address.md): That address is not a passenger's or the booking contact's on this trip. - [unknown_image](https://api.bymundi.com/problems/unknown_image.md): `images` can only reorder, re-describe or remove the entry's own images, or attach one uploaded through this API. - [unknown_line](https://api.bymundi.com/problems/unknown_line.md): The quote has no line with that id. - [unknown_package](https://api.bymundi.com/problems/unknown_package.md): The quote has no package with that id. - [unknown_stop](https://api.bymundi.com/problems/unknown_stop.md): The trip's design has no stop with that id. - [unknown_template](https://api.bymundi.com/problems/unknown_template.md): This agency has no quote template with that id. - [unprocessable](https://api.bymundi.com/problems/unprocessable.md): The request is well formed but cannot be applied to the resource as it is now. The detail says why. - [unresolvable](https://api.bymundi.com/problems/unresolvable.md): The url's host has no DNS record. - [unsupported_media_type](https://api.bymundi.com/problems/unsupported_media_type.md): This file type is not accepted here; the detail lists the accepted types. - [upload_incomplete](https://api.bymundi.com/problems/upload_incomplete.md): This document's upload was never completed. - [upload_missing](https://api.bymundi.com/problems/upload_missing.md): Completing an upload found no file at its upload URL. - [upstream_unavailable](https://api.bymundi.com/problems/upstream_unavailable.md): A service bymundi depends on did not answer.