Budgets API
Call the Budgets API: base URL, authentication, a first request, and every operation.
The Budgets API is a JSON API over HTTPS. Spending limits for projects, with alerts by email or webhook when spend or its forecast crosses a threshold.
Base URL
https://budget.public.global.vexxhost.netAuthentication
Send a token from Identity in the X-Auth-Token header with every request. See Make API requests for status codes and retries.
Make your first request
List your project's budgets:
curl https://budget.public.global.vexxhost.net/v1/budgets \
--header "X-Auth-Token: $TOKEN"{
"budgets": [
{
"id": "c7e1a5b3-9d2f-4e8c-a6b4-1f3d5e7c9a2b",
"name": "compute-monthly",
"project_id": "a6f1c2d93b8e4f07b5d4e2c1a9f8e7d6",
"enabled": true,
"amount": "1000",
"currency": "USD",
"period": "monthly",
"filter": {"services": ["compute"]},
"thresholds": [
{"name": "warn", "basis": "actual", "unit": "percentage", "value": "80",
"comparison": "greater_than_or_equal", "enabled": true,
"channels": ["3f9c1e7a-2b4d-4c6e-8a1f-5d7b9e2c4a6f"]}
],
"revision": 1,
"created_by": "4c8e2f1a9b7d4e6f8a3c5b1d7e9f2a4c",
"created_at": "2026-10-07T14:10:27Z",
"updated_at": "2026-10-07T14:10:27Z",
"status": {
"time_period": {"start": "2026-10-01T00:00:00Z", "end": "2026-11-01T00:00:00Z"},
"evaluated_at": "2026-10-07T15:00:04Z",
"as_of": "2026-10-07T15:00:00Z",
"data_through": "2026-10-07T14:00:00Z",
"currency": "USD",
"amount": "1000",
"actual_spend": "248.731250000000",
"forecast_spend": "1155.164285714286",
"estimated": true,
"thresholds": [
{"name": "warn", "state": "ok", "target_amount": "800", "observed": "248.731250000000"}
]
}
}
]
}Budgets and notification channels are the two resources. A budget's thresholds name channels by ID, so create channels first.
Errors
Errors use the problem details format, application/problem+json. detail says what went wrong, and a validation error lists each problem in errors with the location of the field:
{
"status": 422,
"title": "Unprocessable Entity",
"detail": "validation failed",
"errors": [
{
"location": "body",
"message": "expected required property name to be present",
"value": {}
}
]
}Every response carries an X-Request-ID header. Include it when you contact support about a request.
Operations
| Method | Path | Description |
|---|---|---|
GET | /v1/budgets | List budgets |
POST | /v1/budgets | Create a budget |
GET | /v1/budgets/{budget_id} | Get a budget and the status of its current window |
PUT | /v1/budgets/{budget_id} | Replace a budget |
DELETE | /v1/budgets/{budget_id} | Delete a budget and its history |
GET | /v1/budgets/{budget_id}/notifications | List a budget's alerts and their delivery, newest first |
GET | /v1/budgets/{budget_id}/windows | List a budget's past and current windows, newest first |
GET | /v1/notification_channels | List notification channels |
POST | /v1/notification_channels | Create a notification channel |
GET | /v1/notification_channels/{channel_id} | Get a notification channel |
DELETE | /v1/notification_channels/{channel_id} | Delete a notification channel |
POST | /v1/notification_channels/{channel_id}/resend_confirmation | Send an email channel's confirmation link again |
POST | /v1/notification_channels/{channel_id}/rotate_secret | Replace a webhook channel's signing secret |
OpenAPI schema
Download the schema as JSON or YAML to generate a client or import the API into a tool such as Postman.