Project Budgets
/v1/project-budgetsList project budgets
The ledger's project budgets, each with what has been spent on it so far.
Parameters
limit integer · query | Page size, 1–200. |
cursor string | null · query | The next_cursor of the previous page. |
X-Organization-Id string | null · header |
Returns 200 · ProjectBudgetList
data | |
has_more boolean · required | |
next_cursor string | null · required |
curl -X GET "https://api.lumaledger.app/v1/project-budgets" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/project-budgetsCreate a project budget
Budget a project: an amount for everything tagged with its tag between two dates. Tag its transactions (by hand or with a rule) and they count towards it.
Parameters
Idempotency-Key string | null · header | Any unique string (a UUID is ideal). A retry with the same key returns the first attempt's response instead of doing the work twice. Keys are kept for 24 hours. |
X-Organization-Id string | null · header |
Body · ProjectBudgetCreate
amount string · required | Decimal string, at most two decimal places. Pattern: ^\d{1,12}(\.\d{1,2})?$. |
end_date date | null | Omit for an open-ended project. |
name string · required | |
start_date date · required | |
tag string | null | The name of the tag that marks the project's transactions. Created if the ledger has no tag by that name (case-insensitively). Defaults to name. A tag budgets one project at most. |
Returns 201 · ProjectBudget
amount Money · required | The budget for the whole project. |
end_date date | null · required | Null: open-ended. |
id integer · required | |
is_current boolean · required | Today is inside the window. |
name string · required | |
remaining Money · required | amount − spent. Negative is over budget. |
spent Money · required | Tagged expenses inside the window, refunds netted off. |
start_date date · required | |
tag_color string | null · required | |
tag_id integer · required | The tag that marks this project's transactions. |
tag_name string · required | |
transaction_count integer · required | How many tagged transactions count towards it. |
curl -X POST "https://api.lumaledger.app/v1/project-budgets" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"amount": "2500.00",
"name": "…",
"start_date": "2026-09-01"
}'/v1/project-budgets/{project_budget_id}Delete a project budget
Remove a project budget. Its tag, and the transactions carrying it, stay.
Parameters
project_budget_id integer · path · required | |
X-Organization-Id string | null · header |
Returns 204 with no body.
curl -X DELETE "https://api.lumaledger.app/v1/project-budgets/{project_budget_id}" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/project-budgets/{project_budget_id}Get a project budget
One project budget by its id.
Parameters
project_budget_id integer · path · required | |
X-Organization-Id string | null · header |
Returns 200 · ProjectBudget
amount Money · required | The budget for the whole project. |
end_date date | null · required | Null: open-ended. |
id integer · required | |
is_current boolean · required | Today is inside the window. |
name string · required | |
remaining Money · required | amount − spent. Negative is over budget. |
spent Money · required | Tagged expenses inside the window, refunds netted off. |
start_date date · required | |
tag_color string | null · required | |
tag_id integer · required | The tag that marks this project's transactions. |
tag_name string · required | |
transaction_count integer · required | How many tagged transactions count towards it. |
curl -X GET "https://api.lumaledger.app/v1/project-budgets/{project_budget_id}" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/project-budgets/{project_budget_id}Update a project budget
Rename a project budget, change its amount or dates, or move it to another tag. Only the fields sent change.
Parameters
project_budget_id integer · path · required | |
X-Organization-Id string | null · header |
Body · ProjectBudgetUpdate
amount string | null | Pattern: ^\d{1,12}(\.\d{1,2})?$. |
end_date date | null | |
name string | null | |
start_date date | null | |
tag string | null | See ProjectBudgetCreate.tag. |
Returns 200 · ProjectBudget
amount Money · required | The budget for the whole project. |
end_date date | null · required | Null: open-ended. |
id integer · required | |
is_current boolean · required | Today is inside the window. |
name string · required | |
remaining Money · required | amount − spent. Negative is over budget. |
spent Money · required | Tagged expenses inside the window, refunds netted off. |
start_date date · required | |
tag_color string | null · required | |
tag_id integer · required | The tag that marks this project's transactions. |
tag_name string · required | |
transaction_count integer · required | How many tagged transactions count towards it. |
curl -X PATCH "https://api.lumaledger.app/v1/project-budgets/{project_budget_id}" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Objects
Money
An amount and its currency. `amount` is a base-10 string with two
decimal places and an optional leading minus sign. Parse it with a
decimal type, not a float.
Fields
amount string · required | Pattern: ^-?\d+\.\d{2}$. |
currency string · required | ISO 4217 code. Pattern: ^[A-Z]{3}$. |
ProjectBudget
A budget for a project, measured from the transactions carrying its tag.
Fields
amount Money · required | The budget for the whole project. |
end_date date | null · required | Null: open-ended. |
id integer · required | |
is_current boolean · required | Today is inside the window. |
name string · required | |
remaining Money · required | amount − spent. Negative is over budget. |
spent Money · required | Tagged expenses inside the window, refunds netted off. |
start_date date · required | |
tag_color string | null · required | |
tag_id integer · required | The tag that marks this project's transactions. |
tag_name string · required | |
transaction_count integer · required | How many tagged transactions count towards it. |
ProjectBudgetCreate
Fields
amount string · required | Decimal string, at most two decimal places. Pattern: ^\d{1,12}(\.\d{1,2})?$. |
end_date date | null | Omit for an open-ended project. |
name string · required | |
start_date date · required | |
tag string | null | The name of the tag that marks the project's transactions. Created if the ledger has no tag by that name (case-insensitively). Defaults to name. A tag budgets one project at most. |
ProjectBudgetList
A page of project budgets, by id.
Fields
data | |
has_more boolean · required | |
next_cursor string | null · required |
ProjectBudgetUpdate
Only the fields sent change. end_date: null makes it open-ended.
Fields
amount string | null | Pattern: ^\d{1,12}(\.\d{1,2})?$. |
end_date date | null | |
name string | null | |
start_date date | null | |
tag string | null | See ProjectBudgetCreate.tag. |