---
title: "Create milestone"
method: POST
path: "/milestones"
tags: ["milestones"]
---

# Create milestone

`POST /milestones`

## Request

- Base URL: `https://api.vepathos.com`
- URL: `https://api.vepathos.com/milestones`
- Auth: API key in header `Authorization`

Returns `403` with `reason: "max_milestones"` when the plan's cap is reached.

## Request body

- MilestoneCreate
  - `name` string, required: Display name.
  - `location` string, required: Coordinates in ISO 6709 decimal degrees, latitude then longitude with signs, e.g. `+40.7128-74.0060`.
  - `category` 'DEPOT' | 'DISTRIBUTION_CENTER' | 'LOADING_POINT' | 'WAREHOUSE' | 'TRANSFER_POINT'

## Response `201`

The created milestone.

- MilestoneResponse
  - `name` string, required: Display name.
  - `location` string, required: Coordinates in ISO 6709 decimal degrees, latitude then longitude with signs, e.g. `+40.7128-74.0060`.
  - `category` 'DEPOT' | 'DISTRIBUTION_CENTER' | 'LOADING_POINT' | 'WAREHOUSE' | 'TRANSFER_POINT'
  - `id` union, required
    - string
    - integer

## Other responses

- `401`: Missing, expired or invalid access token.
- `403`: A plan quota or optimization option blocks the request. `reason` names the limit. Nothing is reserved or charged.
- `422`: The body or a parameter does not match the schema.

---

[API](https://skmtc.dev/vepathos/apis/vepathos-route-optimization-api.md) · [All operations](https://skmtc.dev/vepathos/apis/vepathos-route-optimization-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vepathos/apis/vepathos-route-optimization-api/revisions/00caa1ca62d9?raw)
