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

# Create Budget

`POST /api/budgets`

## Request

- Base URL: `https://api.earmarkiq.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.earmarkiq.app/api/budgets`
- Auth: HTTP bearer

Create a spending budget for a category.

## Request body

- BudgetCreate
  - `client_id` string, uuid, nullable
  - `category` string, required
  - `monthly_limit` union, required
    - number
    - string
  - `period` 'weekly' | 'monthly' | 'annual' | 'custom'
  - `period_start_date` string, date, nullable
  - `period_end_date` string, date, nullable
  - `shared_with_partner` boolean
  - `rollover_enabled` boolean
  - `budget_type` string
  - `income_percentage` number, nullable
  - `payday_cycle` boolean

## Response `201`

Successful Response

- BudgetResponse
  - `id` string, required
  - `category` string, required
  - `monthly_limit` number, required
  - `period` string, required
  - `current_spend` number, required
  - `remaining` number, required
  - `utilisation_pct` number, required
  - `period_start` string, required
  - `period_start_date` string, nullable
  - `period_end_date` string, nullable
  - `shared_with_partner` boolean
  - `partner_spend` number
  - `budget_type` string
  - `dismissed` boolean
  - `rollover_enabled` boolean
  - `rollover_amount` number
  - `limit_mode` string
  - `income_percentage` number, nullable
  - `payday_cycle` boolean
  - `effective_limit` number
  - `pot_category` string
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `422`: Validation Error

---

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