Skip to content

Conventions

Requests

The base URL for Breqwatr Cloud is https://dashboard.breqwatr.cloud/api/v1. Requests go over HTTPS, and request bodies are JSON with Content-Type: application/json.

Single resources and lists

A single resource is wrapped in data:

{ "data": { "id": "a9d27e10-64b3-4f18-8c05-71e3f6ab20d9", "name": "web" } }

A list adds a cursor, as Pagination explains:

{ "data": [ ], "next_cursor": null }

Ids

Most ids are UUIDs. A region is identified by its Keystone region id, such as yul1, the same value the OpenStack catalogue uses. If a region is renamed, its old id still works in a request and responses carry the new one.

Money

Money is an integer in minor units (cents), so 11300 in CAD is $113.00. Invoices and usage carry a currency alongside their amounts.

tax_rate is the exception, because it's a rate rather than an amount: a decimal string, such as "0.1300".

Dates and times

Timestamps are ISO 8601 in UTC, such as 2026-09-14T15:04:05Z. Date-only fields, such as an invoice's due_date, are YYYY-MM-DD. An invoice's billing_period is YYYY-MM.

Language

Error title and detail follow the language set on the key owner's account, then the Accept-Language header. English and Canadian French are available. Error code never changes, so match on that.

Invoices as PDF

GET /orgs/{org_id}/invoices/{id} returns JSON by default, or the invoice's PDF with Accept: application/pdf:

curl -s "$BASE/orgs/$ORG_ID/invoices/$INVOICE_ID" \
  -H "Authorization: Bearer $BREQWATR_API_KEY" \
  -H "Accept: application/pdf" \
  -o invoice.pdf

Getting help

Every response carries an X-Request-Id header, and every error repeats it as request_id. Quote it when you contact support.