Conventions
Rules that hold across the whole API. Anything that differs is called out on the operation itself in the interactive API reference.
Base URL and versioning
https://api.warrants.ecourtdate.com/v1
Every endpoint lives under /v1. What that version guarantees, and how
changes are made, is in versioning.
Requests
Requests and responses are JSON, UTF-8. Send Content-Type: application/json
on any request with a body.
| Header | When | Purpose |
|---|---|---|
x-api-key | Every authenticated call | Your agency's API key |
X-On-Behalf-Of | Every write | The person the call is made for |
Content-Type | Requests with a body | Always application/json |
X-Request-ID | Optional | Your own identifier for the call, echoed back |
Identifiers
Every resource is identified by a UUID:
9d2b6e14-6f1a-4a1c-9c0e-6f5f4b3a2d10
Warrant applications also carry a human-facing warrant_number
(EW-2026-004182), unique within the agency, which is what appears on the
document and what court staff quote. Use the UUID in API calls and the number
in anything a person reads.
Published applications additionally carry a slug, which is the identifier in
a public link.
Timestamps
All timestamps are RFC 3339 in UTC, with an explicit Z:
{"created_at": "2026-08-19T14:32:07Z", "signed_at": "2026-08-19T15:04:51Z"}
Localize for display using the agency's timezone
(agency settings), which is the timezone the court
records signing times in.
Paging
List endpoints page with skip and limit:
curl -s "$BASE/warrants?status=SUBMITTED&skip=0&limit=50" \
-H "x-api-key: $API_KEY"
skip defaults to 0 and limit to a per-endpoint default. Results are ordered
newest first unless the operation says otherwise, so page in one pass rather
than holding an offset across hours: a new application arriving between pages
shifts the window.
Field conventions
- Property names are
snake_case, except insideform_data, templateelements, and agency settings, which carry the keys you define. - Optional fields are present and
nullrather than absent. - Enumerated values are upper case:
DRAFT,URGENT,PUBLIC,JUDGE. - Money, dates, and identifiers inside
form_dataare whatever the template declares. The API stores and returns them unchanged.
Free-form data
Three objects are deliberately open:
| Object | Shape |
|---|---|
form_data on an application | The template's fieldId values, see form elements |
elements on a template | The field definitions themselves |
| Agency settings | The documented keys plus anything your agency adds |
Everything else is a fixed schema, published in the OpenAPI specification.
Request ids
Every response carries X-Request-ID. Send your own to correlate with your
logs, or read the one the API generates. Quote it in support requests: it maps
to the exact server-side record of the call, and it is repeated inside every
error body.
Rate limits
Every response carries RateLimit-Limit, RateLimit-Remaining, and
RateLimit-Reset. See rate limits.
Encryption
Warrant contents, signatures, and the personal data inside them are encrypted at rest and decrypted only for callers entitled to read them. This is invisible in the API: you send and receive plain JSON. See security.