Estateur API
The Estateur REST API lets Advanced-plan firms automate their workflows: create clients, send intake questionnaires, and read client, intake, and document status. Every request is scoped to the firm that owns the API key, so a key can only ever access its own data.
Generate and revoke keys in Settings → API.
Base URL
All endpoints live under your Estateur domain:
https://<your-estateur-domain>/api/v1Authentication
Send your API key as a Bearer token. The API is available only on the Firm plan; other tiers receive 403 advanced_required. Keys are hashed at rest and never logged.
curl https://<your-estateur-domain>/api/v1/me \
-H "Authorization: Bearer est_live_your_key_here"Rate limits
Up to 120 requests per minute per key. Every response includes X-RateLimit-Limit and X-RateLimit-Remaining; exceeding the limit returns 429 rate_limited with a Retry-After header.
Endpoints
/api/v1/meReturns the firm behind the key, its plan tier, and your remaining rate budget.
/api/v1/clientsList your clients with per-status counts. Optional query params: q (search name/matter) and status (one of lead, intake, drafting, in_review, executed, archived).
/api/v1/clientsCreate a client. Body: displayName (required, 2–160 characters), and optional matterName, email (valid address), phone (7–15 digits), state (U.S. state or DC), and planType (will_based or trust_based).
curl -X POST https://<your-estateur-domain>/api/v1/clients \
-H "Authorization: Bearer est_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"displayName":"Jane Roe","email":"jane@example.com","state":"IL"}'201 Created
{
"client": {
"id": "665f...",
"displayName": "Jane Roe",
"email": "jane@example.com",
"state": "IL",
"status": "lead"
}
}/api/v1/clients/:clientIdFetch one client and its current status.
/api/v1/clients/:clientId/questionnairesSend an intake questionnaire to the client and email them the secure link. Provide exactly one source: templateId (a saved firm template), serviceKey (a premade package), or a full definition.
curl -X POST \
https://<your-estateur-domain>/api/v1/clients/665f.../questionnaires \
-H "Authorization: Bearer est_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"serviceKey":"will_based_plan"}'201 Created
{
"questionnaire": { "id": "667a...", "status": "sent", "completeness": 0 },
"link": "https://<your-estateur-domain>/q/eyJ...",
"emailed": true
}/api/v1/clients/:clientId/questionnairesList the questionnaires sent to a client with sent / completed status.
/api/v1/clients/:clientId/intakeRead a client's intake responses (answers plus the questionnaire definition).
/api/v1/clients/:clientId/documentsList a client's documents with their draft / review / execution status.
Errors
Errors are JSON with an error message and a stable code:
400 invalid_request Missing or invalid input
400 invalid_client_input Client field failed validation (response includes field)
401 missing_key No API key was supplied
401 invalid_key Key is unknown or revoked
402 inactive Subscription is not active
403 advanced_required API access requires the Firm plan
404 not_found No such client / resource for this firm
429 rate_limited Too many requests (see Retry-After)Webhooks for push notifications are on the roadmap; until then, poll the status endpoints above to track progress.
