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

# Create a milestone

`POST /milestones`

Creates a new milestone within a project.

**Rate limit:** 300 requests per minute

## Request body

- CreateMilestoneRequestBody
  - `account_id` string — Account ID for this project
  - `due_date` string — Due date for this milestone, in RFC 3339 format
  - `name` string, required — Name for this milestone
  - `project_id` string, required — Project ID for this milestone

## Response `200`

- CreateMilestoneResponseBody
  - `data` Milestone
    - `account` MiniAccount
      - `external_ids` ExternalID[] — External IDs associated with the account.
        - `external_id` string — The external ID. Must be unique per object type (ex. account).
        - `label` string — The label of the external ID. Must be unique per object.
      - `id` string — The ID of the account.
    - `created_at` string
    - `due_date` string
    - `id` string
    - `name` string
    - `project` MiniProject
      - `id` string — The ID of the project.
    - `updated_at` string
  - `request_id` string — The request ID for tracking.

## Other responses

- `400` — The request was invalid or could not be completed.
- `403` — The authenticated caller or organization is not allowed to access this endpoint or operation.
- `404`

## Changes

- **2026-08-28** `fe3adb90ea45` — 1 info
  - added the non-success response with the status `403`

[Change history](https://skmtc.dev/usepylon/apis/pylon-api/changes/milestones/post.md)

---

[API](https://skmtc.dev/usepylon/apis/pylon-api.md) · [All operations](https://skmtc.dev/usepylon/apis/pylon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usepylon/pylon-api/revisions/7b12ab92de27/schema)
