Skip to main content

Pagination

All list endpoints support cursor-based pagination using two parameters: Paginated responses include a pagination object with a next_cursor field:
When has_more is true, pass the next_cursor value as the after parameter to fetch the next page. When there are no more pages, next_cursor is null. Example flow:
  1. GET /v1/transactions?limit=10 — returns records 1–10, "next_cursor": "txn_abc123"
  2. GET /v1/transactions?limit=10&after=txn_abc123 — returns records 11–20, "next_cursor": "txn_xyz789"
  3. GET /v1/transactions?limit=10&after=txn_xyz789 — returns records 21–25, "has_more": false, "next_cursor": null
The collection key in the response mirrors the resource name (e.g., "contracts", "transactions", "nominations", "customers").

Timestamps

All timestamps are ISO 8601 in UTC:

Delivery Periods

Energy delivery uses the standard PTU (Programme Time Unit) convention with 15-minute intervals:
Each delivery day typically has 96 quarter-hour slots (numbered 1–96). On DST transition days, this may be 92 or 100 slots. Slot-based filtering is available on transaction and nomination endpoints via the slot_number_from and slot_number_to parameters.

Error Responses

All errors follow RFC 9457 — Problem Details for HTTP APIs and are returned with Content-Type: application/problem+json:
Validation errors include a field-level errors array:
Field-level error codes: unknown_field, read_only_field, required, invalid_type, invalid_enum_value, invalid_format, invalid_literal, value_too_small, value_too_large, validation_failed. Standard HTTP status codes are used:

Rate Limiting

API requests are rate-limited to 300 requests per 60-second window. Every response includes the following headers: When the limit is exceeded, the API returns 429 Too Many Requests.