---
title: "Check inputs"
method: POST
path: "/api/v2/packing-lists/validate"
tags: ["Packing lists (v2)"]
---

# Check inputs

`POST /api/v2/packing-lists/validate`

## Request

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

Runs the wizard's step-1 rules on a body without saving anything, and step 2's (at least one activity, a
packing strategy) when the body carries `selectedActivities` or `packingStrategyId`. The place is not looked
up here. Always 200: `valid`, the `errors` keyed by field in the wizard's words, and the normalised `inputs`.

## Request body

- object
  - `tripExternalId` string, nullable: Must not be greater than 64 characters.
  - `tripType` 'leisure' | 'business' | 'adventure' | 'mixed', nullable
  - `tripMode` 'single_city' | 'multi_city', nullable
  - `inputDestination` string, nullable: Must not be greater than 255 characters.
  - `destinationId` integer, nullable
  - `stops` object[]: Must not have more than 8 items.
    - `destination` string, nullable: Must not be greater than 255 characters.
    - `destination_id` integer, nullable
    - `nights` integer: Must be at least 0. Must not be greater than 60.
    - `lat` number, nullable: Must be between -90 and 90.
    - `lon` number, nullable: Must be between -180 and 180.
    - `country` string, nullable: Must not be greater than 100 characters.
  - `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>.
  - `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.
  - `specialNeeds` integer[]
  - `quickStartTemplateId` integer, nullable
  - `selectedActivities` integer[]
  - `packingStrategyId` integer, nullable

## Response `200`

- object
  - `valid` boolean
  - `errors` object
    - `departure_date` string
  - `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)
