---
title: "Create one deadline"
method: POST
path: "/deadlines"
---

# Create one deadline

`POST /deadlines`

## Request

- Base URL: `https://www.scadenzario.app/api/v1`
- URL: `https://www.scadenzario.app/api/v1/deadlines`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- CreateDeadlineInput
  - `title` string, required
  - `due_at` string, required: ISO date (treated as that morning) or full ISO date-time.
  - `notes` string
  - `emoji` string
  - `recurrence` 'none' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'multiple_daily' | 'interval' | 'quarterly' | 'bimonthly' | 'biennial' | 'semiannual'
  - `custom_interval` integer
  - `reminder_days` integer[]
  - `notification_times` string[]
  - `amount` number
  - `transaction_type` 'none' | 'expense' | 'income'
  - `label_id` string
  - `label_ids` string[]
  - `time_zone` string: IANA zone for the civil due date. Defaults to the digest preference, else Europe/Rome.
  - `client_request_id` string: Stable key making retries idempotent. The Idempotency-Key header fills this automatically.

## Response `201`

Created. Location points at the new resource.

- object
  - `deadline` Deadline, required
    - `id` string, required
    - `title` string, required
    - `due_at` string, date-time, required
    - `notes` string, nullable
    - `emoji` string, nullable
    - `recurrence` 'none' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'multiple_daily' | 'interval' | 'specific_dates' | 'yearly_dates' | 'quarterly' | 'bimonthly' | 'biennial' | 'semiannual', required
    - `custom_interval` integer
    - `reminder_days` integer[]
    - `notification_times` string[]
    - `amount` number, nullable
    - `transaction_type` 'none' | 'expense' | 'income'
    - `is_paid` boolean
    - `paid_at` string, date-time, nullable
    - `paid_amount` number, nullable: Amount actually paid, when it differs from amount.
    - `is_done` boolean, required
    - `label_id` string, nullable
    - `label_ids` string[]
    - `has_attachment` boolean
    - `created_at` string, nullable
    - `updated_at` string, nullable

## Other responses

- `400`: Invalid input.
- `401`: Missing or invalid token.
- `403`: Missing scope (token without write access).
- `409`: Plan limit reached (details: count, limit).
- `429`: Rate limited (60 req/min).

---

[API](https://skmtc.dev/scadenzario/apis/scadenzario-api.md) · [All operations](https://skmtc.dev/scadenzario/apis/scadenzario-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scadenzario/apis/scadenzario-api/revisions/4ad6b339ccef?raw)
