---
title: "Create Budget"
method: POST
path: "/api/v1/budgets"
tags: ["Budget"]
---

# Create Budget

`POST /api/v1/budgets`

## Request

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

Create a new budget calculation.

## Request body

- object
  - `trip_external_id` string, nullable: Link to a trip.
  - `input_destination` string, required: The destination.
  - `departure_city` string: The departure city.
  - `departure_date` string, required
  - `return_date` string, required: Must be after departure_date.
  - `num_adults` integer, required: Min 1, max 20.
  - `num_children` integer, required: Min 0, max 20.
  - `children_ages` integer[]: Must be at least 0. Must not be greater than 17.
  - `travel_style` string, required: One of: budget, moderate, luxury.
  - `rooms` integer, nullable: Default 1.
  - `departure_city_latitude` number, nullable
  - `departure_city_longitude` number, nullable
  - `transport_mode` 'rental_car' | 'rideshare' | 'public_transit' | 'walking_only', nullable
  - `cabin_class` 'economy' | 'premium_economy' | 'business', nullable
  - `departure_country` string, nullable: Must not be greater than 100 characters.
  - `flight_type` 'round_trip' | 'roundtrip' | 'one_way' | 'multi_city', nullable
  - `stops` object[]: Must not have more than 8 items.
    - `destination` string: This field is required when <code>stops</code> is present. Must not be greater than 255 characters.
    - `nights` integer: This field is required when <code>stops</code> is present. Must be at least 1. Must not be greater than 30.
    - `order` integer, nullable
    - `latitude` number, nullable
    - `longitude` number, nullable
    - `country` string, nullable: Must not be greater than 100 characters.
    - `destination_id` integer, nullable
  - `trip_type` 'theme_park' | 'cruise' | 'all_inclusive' | 'city', nullable
  - `park` 'wdw' | 'uor' | 'dlr' | 'dlp', nullable
  - `stay_tier` string, nullable: Must not be greater than 24 characters.
  - `park_days` integer, nullable: Must be at least 1. Must not be greater than 14.
  - `park_hopper` boolean, nullable
  - `cruise_line` string, nullable: Must not be greater than 32 characters.
  - `cabin_type` 'interior' | 'oceanview' | 'balcony' | 'suite', nullable
  - `port` string, nullable: Must not be greater than 32 characters.
  - `cruise_region` 'caribbean' | 'mediterranean' | 'alaska', nullable
  - `cruise_nights` integer, nullable: Must be at least 2. Must not be greater than 21.
  - `coast` string, nullable: Must not be greater than 32 characters.
  - `mode` 'fly' | 'drive' | 'train', nullable
  - `rail_class` 'standard' | 'first', nullable
  - `bags` integer, nullable: Must be at least 0. Must not be greater than 6.
  - `insurance` boolean, nullable
  - `carrier` string, nullable: Must not be greater than 8 characters.
  - `home_country` string, nullable: Must be 2 characters.
  - `presentation_currency` 'USD' | 'EUR' | 'GBP' | 'CAD', nullable
  - `contingency_pct` integer, nullable: Must be at least 0. Must not be greater than 25.
  - `essentials` object, nullable

## Response `201`

- object
  - `budget` object
    - `external_id` string
    - `status` 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`
- `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)
