---
title: "Check inputs"
method: POST
path: "/api/v2/budgets/validate"
tags: ["Budgets (v2)"]
---

# Check inputs

`POST /api/v2/budgets/validate`

## Request

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

Runs the wizard's step-1 and step-2 rules on a body without saving anything. Always 200: `valid`, the
`errors` keyed by field in the wizard's words, the silent `notices` (a mode reset, sleeping forced off) and
the normalised `inputs` the wizard would carry forward.

## Request body

- object
  - `tripExternalId` string, nullable: Must not be greater than 64 characters.
  - `tripType` 'theme_park' | 'cruise' | 'all_inclusive' | 'city', nullable
  - `park` string, nullable: Must not be greater than 32 characters.
  - `sleeping` 'on' | 'off' | 'compare', nullable
  - `sleepingForced` boolean
  - `cruiseLine` string, nullable: Must not be greater than 32 characters.
  - `port` string, nullable: Must not be greater than 32 characters.
  - `cruiseNights` integer: Must be at least 1. Must not be greater than 30.
  - `cruiseRegion` string, nullable: Must not be greater than 32 characters.
  - `preNight` boolean
  - `coast` string, nullable: Must not be greater than 32 characters.
  - `destination` string, nullable: Must not be greater than 120 characters.
  - `destinationId` integer, nullable
  - `destLat` number, nullable: Must be between -90 and 90.
  - `destLon` number, nullable: Must be between -180 and 180.
  - `destCountry` string, nullable: Must not be greater than 100 characters.
  - `destTyped` boolean
  - `places` 'one' | 'several', nullable
  - `stops` object[]: Must not have more than 8 items.
    - `destination` string, nullable: Must not be greater than 120 characters.
    - `destination_id` integer, nullable
    - `latitude` number, nullable: Must be between -90 and 90.
    - `longitude` number, nullable: Must be between -180 and 180.
    - `country` string, nullable: Must not be greater than 100 characters.
    - `nights` integer: Must be at least 1. Must not be greater than 30.
    - `travel_mode` 'flight' | 'train' | 'drive' | 'bus', nullable
    - `typed` boolean
  - `departureDate` string, nullable: Must be a valid date in the format <code>Y-m-d</code>.
  - `returnDate` string, nullable: Must be a valid date in the format <code>Y-m-d</code>.
  - `homeCity` string, nullable: Must not be greater than 120 characters.
  - `homeLat` number, nullable: Must be between -90 and 90.
  - `homeLon` number, nullable: Must be between -180 and 180.
  - `homeCountryName` string, nullable: Must not be greater than 100 characters.
  - `homeTyped` boolean
  - `mode` 'fly' | 'drive' | 'train', nullable
  - `modeSwitched` string, nullable: Must not be greater than 16 characters.
  - `homeCountry` string, nullable: Must be 2 characters.
  - `currency` 'USD' | 'EUR' | 'GBP' | 'CAD', nullable
  - `adults` integer: Must be at least 0. Must not be greater than 40.
  - `seniors` integer: Must be at least 0. Must not be greater than 40.
  - `children` integer: Must be at least 0. Must not be greater than 40.
  - `childrenAges` integer[]: Must be at least 0. Must not be greater than 17.
  - `stayTier` string, nullable: Must not be greater than 24 characters.
  - `rooms` integer: Must be at least 1. Must not be greater than 20.
  - `roomsSet` boolean
  - `parkDays` integer: Must be at least 1. Must not be greater than 14.
  - `parkHopper` boolean
  - `skipLine` boolean
  - `diningPlan` boolean
  - `drinks` boolean
  - `wifi` boolean
  - `excursions` integer: Must be at least 0. Must not be greater than 6.
  - `excursion` boolean
  - `pace` string, nullable: Must not be greater than 16 characters.
  - `cabin` string, nullable: Must not be greater than 24 characters.
  - `railClass` 'standard' | 'first', nullable
  - `bags` integer: Must be at least 0. Must not be greater than 6.
  - `airportParking` boolean
  - `gettingAround` string, nullable: Must not be greater than 32 characters.
  - `insurance` boolean
  - `carSeat` boolean
  - `contingencyPct` integer: Must be at least 0. Must not be greater than 25.

## Response `200`

- object
  - `valid` boolean
  - `errors` object
    - `destination` string
  - `notices` unknown[]
    - unknown
  - `inputs` object
    - `tripType` string
    - `adults` integer

## 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)
