Sealio Docs

Conventions

Objects, paging, idempotency, errors and rate limits.

Objects

  • JSON with snake_case fields. Every object has an object field (client, request, document…) and a prefixed id (cli_…, req_…, doc_…).
  • Times are ISO 8601 in UTC (2026-09-28T14:03:11.204Z); dates without a time are YYYY-MM-DD.
  • New fields can appear at any time within v1; ignore fields you don't know. Fields are never renamed or removed within a version.

Paging

Lists return { "object": "list", "data": [...], "has_more": true, "next_cursor": "cli_…" }. Pass limit (1–100, default 25) and, for the next page, starting_after=<next_cursor>. Lists are ordered oldest first by id, so paging is stable while new records arrive. The audit log is newest first and pages with before_sequence.

Idempotency

Send an Idempotency-Key header (any unique string up to 255 characters, such as a UUID) with POST requests. If a network error makes you retry, the same key within 24 hours returns the first response (with Idempotent-Replayed: true) instead of doing the work twice. Reusing a key with a different body returns 409.

Errors

Errors use RFC 9457 problem details with Content-Type: application/problem+json:

{
  "type": "https://sealio.ca/docs/developers/errors#validation-failed",
  "title": "Validation failed",
  "status": 422,
  "detail": "Check the client details.",
  "request_id": "req_…",
  "errors": { "fields": { "displayName": ["Enter the client’s name."] } }
}
StatusMeaning
400The query or body isn't well formed (bad limit, not JSON).
401Missing, unknown, revoked or expired key, or a key for the other market.
403The key's scopes or its creator's role don't allow this, or the IP address isn't allowed.
404Not found (or not in your firm).
409Conflict with the current state, such as sending a request twice or reusing an idempotency key.
413 / 415Body over 256 KB, or not application/json.
422Validation failed; errors has details.
429Rate limit reached; wait for Retry-After seconds.
500Our fault. Retry, and quote the request_id if it keeps happening.

Every response has a Request-Id header.

Rate limits

300 requests a minute per key and 1,000 per firm. Each response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds).

On this page