Skip to main content

Pagination

All list endpoints support cursor-based pagination using two parameters:
ParameterTypeDescription
limitintegerMax items per page (default: 10, max: 100)
afterstringReturn records after this ID
Results are always ordered by ID ascending. To paginate, pass the id of the last record from the previous response as the after parameter. Paginated responses include a pagination object:
{
  "contracts": [ ... ],
  "pagination": {
    "limit": 10,
    "has_more": true
  }
}
Example flow:
  1. GET /v1/transactions?limit=10 — returns records 1–10
  2. GET /v1/transactions?limit=10&after=txn_abc123 — returns records 11–20
  3. GET /v1/transactions?limit=10&after=txn_xyz789 — returns records 21–25, "has_more": false
The collection key in the response mirrors the resource name (e.g., "contracts", "transactions", "nominations", "customers").

Timestamps

All timestamps are ISO 8601 in UTC:
2025-07-15T14:30:00Z

Delivery Periods

Energy delivery uses the standard PTU (Programme Time Unit) convention with 15-minute intervals:
{
  "delivery_date": "2025-07-15",
  "period_from": "2025-07-15T14:00:00Z",
  "period_to": "2025-07-15T14:15:00Z"
}
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 a standard format:
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Human-readable description",
    "details": [
      {
        "field": "volume_mwh",
        "issue": "Must be a positive number"
      }
    ]
  }
}
Standard HTTP status codes are used:
CodeDescription
400Bad request
401Unauthorized — missing or invalid API key
403Forbidden — insufficient permissions
404Not found — resource does not exist or caller has no access
422Unprocessable entity — validation error
429Too many requests — rate limit exceeded
500Internal server error

Rate Limiting

API requests are rate-limited to 300 requests per 60-second window. Every response includes the following headers:
HeaderExampleDescription
x-ratelimit-limit300Maximum requests allowed per window
x-ratelimit-remaining299Remaining requests in the current window
x-ratelimit-reset60Seconds until the window resets
When the limit is exceeded, the API returns 429 Too Many Requests.