Docs › API Reference

API Reference

The District Seal REST API lets you create signature transactions, receive webhook notifications when events occur, and query certificate verification status — from any language that can make HTTPS requests.

Base URL

https://districtseal.com/api

Content type

All request and response bodies are application/json. File upload endpoints use multipart/form-data. This is documented per endpoint.

Authentication

The API supports two authentication methods:

See Authentication for full details and examples.

Rate limits

Endpoint classLimit
Authentication routes (/api/auth/*)5–30 requests per minute per IP, depending on the route
Transaction creationNo hard limit; plan signature quota applies
Read endpointsNo hard limit at current scale
Webhook receipt120 requests per minute per IP

Rate-limited responses return HTTP 429 with a Retry-After header.

Errors

Errors return a JSON object with a detail field:

{
  "detail": "Human-readable description of the error"
}
StatusMeaning
400Request malformed or missing required field
401Missing or invalid authentication
402Plan limit reached — upgrade to continue
403Authenticated but not authorized for this resource
404Resource not found
409State conflict (e.g. consent already recorded)
429Rate limited
500Server error — retry; contact support if persistent

Endpoints by category

Authentication

POST /api/auth/registerCreate a new signup intent
POST /api/auth/loginSign in and receive a JWT
POST /api/auth/meGet the current user profile
POST /api/auth/check-emailCheck whether an email already has an account
POST /api/auth/onboardingComplete onboarding after verification
POST /api/auth/verify-emailVerify the email OTP
POST /api/auth/change-passwordChange password (requires current password)
POST /api/auth/2fa/setup | enable | disableManage TOTP two-factor authentication

Transactions

GET /api/transactionsList your transactions
POST /api/transactionsCreate a new signature request (multipart)
GET /api/transactions/{id}Get one transaction with full event log
POST /api/transactions/{id}/resendRe-send the signing link to the signer
POST /api/transactions/{id}/cancelCancel a pending transaction
GET /api/transactions/export.csvExport your transactions as CSV

Signing ceremony (public, token-based)

GET /api/sign/{token}/summaryGet the signing session state
POST /api/sign/{token}/consentRecord signer consent
GET /api/sign/{token}/challengeIssue the random words and liveness sequence
POST /api/sign/{token}/captureSubmit the signing video and final frame
POST /api/sign/{token}/webauthn/optionsGet WebAuthn challenge options
POST /api/sign/{token}/webauthn/verifyVerify the WebAuthn assertion
POST /api/sign/{token}/forensicLog client-side forensic events (camera enumeration, sensor variance)

Verification (public)

GET /api/verify/{label}/{hash}Verify a certificate by its reference and document hash prefix

Webhooks (inbound)

POST /api/webhooks/dodoReceive Dodo Payments events (subscription state changes)

SDKs

District Seal does not currently provide official client SDKs. The API is standard REST and works from any HTTP client. If you build an integration you would like listed here, contact support@districtseal.com.

API stability. District Seal is a young platform and reserves the right to change endpoints, request shapes, and response fields. Breaking changes will be announced at least 30 days in advance to any account with an active API key.

District Seal is a product of NEXSIM LLC, Montana, United States.

API support: support@districtseal.com

Back to documentation