---
title: "List project budget histories"
method: GET
path: "/v2/projects/{project_id}/budget_histories"
tags: ["budgets"]
---

# List project budget histories

`GET /v2/projects/{project_id}/budget_histories`

## Request

- Base URL: `https://api.hubstaff.com`
- URL: `https://api.hubstaff.com/v2/projects/{project_id}/budget_histories`
- Auth: OAuth 2
  - Authorization code: `https://account.hubstaff.com/authorizations/new`
  - Token URL: `https://account.hubstaff.com/access_tokens` scopes: `hubstaff:read`, `hubstaff:write`
- TypeScript: <https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/docs/v2/projects/:project_id/budget_histories/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns budget configuration history (changes to budget settings over time) for the given project.

## Path parameters

- `project_id` integer, required

## Query parameters

- `page_start_id` integer
- `page_limit` integer

## Response `200`

A list of budget histories

- object
  - `budget_histories` BudgetHistory[]
    - `id` integer, required: the budget history ID
    - `project_id` integer: The project ID the budget is for
    - `client_id` integer: The client ID the budget is for
    - `budget` Budget, required
      - `type` string, required: The budget type
      - `rate` string: The budget rate type
      - `cost` number, float: The budget cost limit
      - `hours` number, float: The budget hours limit
      - `start_date` string, date: The budget start date
      - `alerts` object, required
        - `near_limit` integer, required: The budget near limit percentage
        - `notify_enabled` boolean, required: Whether budget notifications are enabled
        - `notify_all_members` boolean, required: Whether to notify all project members
        - `notify_group` string: The group to notify
      - `recurrence` string: The budget recurrence frequency
      - `recurrence_start` integer: Day of week (0-6, 0=Sunday) for weekly recurrence, or day of month (1-31) for monthly recurrence
      - `include_non_billable` boolean, required: Whether the budget includes non-billable time
      - `stop_timer_when_budget_reached` boolean, required: Whether to stop timers when budget is reached
      - `stop_at` integer: The budget percentage at which timers stop
    - `start_date` string, date: The start date of the budget
    - `stop_date` string, date: The stop date of the budget
    - `spent` number, float, required: The amount spent. Either cost or hours depending on the budget type
    - `created_at` string, date-time, required: When the record was created
    - `updated_at` string, date-time, required: When the record was last updated

## Other responses

- `400`: Invalid parameters
- `401`: Unauthorized
- `403`: API access is only for organizations on an active plan
- `404`: Could not find record
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api.md) - [All operations](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/revisions/c6b90e4e4bdc?raw)
