Skip to main content

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.

HeaderWhenPurpose
x-api-keyEvery authenticated callYour agency's API key
X-On-Behalf-OfEvery writeThe person the call is made for
Content-TypeRequests with a bodyAlways application/json
X-Request-IDOptionalYour 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 inside form_data, template elements, and agency settings, which carry the keys you define.
  • Optional fields are present and null rather than absent.
  • Enumerated values are upper case: DRAFT, URGENT, PUBLIC, JUDGE.
  • Money, dates, and identifiers inside form_data are whatever the template declares. The API stores and returns them unchanged.

Free-form data

Three objects are deliberately open:

ObjectShape
form_data on an applicationThe template's fieldId values, see form elements
elements on a templateThe field definitions themselves
Agency settingsThe 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.