Endpoints
What the v1 API can do today.
A one-page summary of every endpoint. For each endpoint's parameters, request and response schemas and code samples, see the API reference in the sidebar (starting with Create a client). The machine-readable description is at https://api.sealio.ca/v1/openapi.json (OpenAPI 3.1).
Clients
| Method and path | Scope | Does |
|---|---|---|
GET /v1/clients?status=active|archived|any&q= | clients:read | List clients (q matches name, email or phone). |
POST /v1/clients | clients:write | Create a client. |
GET /v1/clients/{id} | clients:read | Get a client, with contacts and custom fields. |
PATCH /v1/clients/{id} | clients:write | Update; fields you send replace the stored ones. |
POST /v1/clients/{id}/archive, /restore | clients:write | Archive or restore. |
curl https://api.sealio.ca/v1/clients \
-H "Authorization: Bearer $SEALIO_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"kind":"individual","display_name":"Asha Rao","email":"asha@example.com","preferred_language":"en"}'Custom fields go in custom_fields, keyed by field id. Masked fields read as •••• unless the key's creator may see sensitive values.
Checklist templates
| Method and path | Scope | Does |
|---|---|---|
GET /v1/checklist-templates?status=active|archived | templates:read | List templates. |
GET /v1/checklist-templates/{id} | templates:read | Get a template with its items. |
Requests
| Method and path | Scope | Does |
|---|---|---|
GET /v1/requests?status=open|draft|closed|all&client_id= | requests:read | List requests. |
POST /v1/requests | requests:write | Create a request from a template for one or more clients; send: true sends it. |
GET /v1/requests/{id} | requests:read | Get a request and its items; with documents:read, each item has a state. |
POST /v1/requests/{id}/send | requests:write | Send a draft. |
POST /v1/requests/{id}/cancel | requests:write | Cancel. |
curl https://api.sealio.ca/v1/requests \
-H "Authorization: Bearer $SEALIO_KEY" \
-H "Content-Type: application/json" \
-d '{"client_ids":["cli_…"],"template_id":"tpl_…","title":"2026 tax return","due_date":"2027-04-30","send":true}'Item states: to_upload, uploaded, processing, accepted, returned. Request statuses: draft, sent, in_progress, under_review, complete, cancelled, expired.
Documents
| Method and path | Scope | Does |
|---|---|---|
GET /v1/requests/{id}/documents | documents:read | Files on a request (details only). |
GET /v1/documents?review=pending|accepted|returned&limit= | documents:read | The firm's newest files across all requests (details only). For an automation's sample data, or polling. |
GET /v1/documents/{id}/download-url | documents:download | A link valid for 5 minutes. The API never sends file contents itself. Every download is audited. |
POST /v1/documents/{id}/review | documents:review | {"decision":"accepted"} or {"decision":"returned","reason":"…"}; the client sees the reason. |
Audit
| Method and path | Scope | Does |
|---|---|---|
GET /v1/audit-events?action=&target_id=&before_sequence= | audit:read | Audit events, newest first. |
Webhook endpoints
| Method and path | Scope | Does |
|---|---|---|
GET /v1/webhook-endpoints | webhooks:manage | List endpoints. |
POST /v1/webhook-endpoints | webhooks:manage | Register one; the response has secret once. |
GET, PATCH, DELETE /v1/webhook-endpoints/{id} | webhooks:manage | Read, change (url, events, description, status) or delete. |
GET /v1/webhook-endpoints/{id}/deliveries?status= | webhooks:manage | Deliveries from the last 30 days. |
POST /v1/events/{id}/resend | webhooks:manage | Send an event again (optionally to one endpoint_id). |
See Webhooks for events and signatures.
Planned
Cases, schedules, team members and uploads on behalf of a client.