---
title: "Check itinerary inputs"
method: POST
path: "/api/v2/itineraries/validate"
tags: ["Itineraries (v2)"]
---

# Check itinerary inputs

`POST /api/v2/itineraries/validate`

## Request

- Base URL: `https://www.endlesstravelplans.com`
- URL: `https://www.endlesstravelplans.com/api/v2/itineraries/validate`
- Auth: HTTP bearer

Runs the Setup step's rules on a body without saving anything: the dates, the pace, the travellers, the
stops with the caller's stop cap (3 free, 8 Pro), the trip length rule. The errors carry the step's exact
words keyed by its field names (`input_destination`, `start_date`, `end_date`, `stops`, `stops.1.destination`).

## Request body

- object
  - `generate` boolean
  - `tripExternalId` string, nullable: Must not be greater than 64 characters.
  - `destination` string, nullable: Where the trip goes.
  - `destinationId` integer, nullable
  - `startDate` string, nullable: The day of arrival (Y-m-d).
  - `endDate` string, nullable: The day of leaving (Y-m-d).
  - `intensityLevel` string, nullable: relaxed, moderate or intense.
  - `numAdults` integer: Adults travelling.
  - `numSeniors` integer: Must be at least 0. Must not be greater than 50.
  - `numChildren` integer, nullable: Must be at least 0. Must not be greater than 50.
  - `childrenAges` integer[]: Must be at least 0. Must not be greater than 17.
  - `interests` string[]: Must not be greater than 100 characters.
  - `categories` string[]: Must not be greater than 100 characters.
  - `mustDo` string, nullable: Must not be greater than 2000 characters.
  - `mustDoChips` string[]: Must not be greater than 255 characters.
  - `tripType` string: single_city or multi_city.
  - `stops` object[]: The cities of a multi-city trip, each `destination` and `nights`.
    - `destination` string, nullable: Must not be greater than 255 characters.
    - `destination_id` integer, nullable
    - `nights` integer, nullable: Must be at least 0. Must not be greater than 60.
  - `quickStartTemplateId` integer, nullable

## Response `200`

- object
  - `valid` boolean
  - `errors` object
    - `end_date` string
  - `warning` string, nullable
  - `inputs` object
    - `destination` string

## Other responses

- `401`: unauthenticated: No valid bearer token was sent.
- `422`: validation_failed: The request body failed validation; field messages are in `errors`.
- `429`: rate_limited: A throttle or a per-account allowance refused the request; `retry_after` or `remaining` may be present.
- `500`: server_error: Unhandled failure; quote `request_id` to support.

---

[API](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api.md) · [All operations](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api/llms.txt) · [OpenAPI document](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api/revisions/ae82ed3e4a8f?raw)
