initialed.ai API (v1)
The initialed.ai API starts contract reviews and drafts for a signed-in initialed.ai account and reports their results. It powers the Zapier integration. Results carry a summary and a link; the full review or draft opens on initialed.ai.
Base URL
https://api.initialed.ai
Requests and responses are JSON. Every error is { "error": "<code>", "message": "<text>" }.
Authentication
OAuth 2.1 (authorization code with PKCE, plus refresh tokens). The user signs in to initialed.ai and approves the connecting app; requests then send Authorization: Bearer <access token>.
- Authorize:
https://api.initialed.ai/oauth/authorize - Token:
https://api.initialed.ai/oauth/token
Only tokens issued to an approved app are accepted. To register an app, email hello@initialed.ai.
Endpoints
GET /v1/me
The connected account.
Returns: { id, email, surface }
POST /v1/reviews
Start a contract review. Provide exactly one of file_base64 (a PDF or .docx, up to 25 MB), file_url or text. The review runs to completion without further input.
Body: { file_base64 | file_url | text, file_name?, user_party, concerns?, depth?: "full" | "deal_breakers", callback_url? }
Returns: 201 with a Review (status "processing")
GET /v1/reviews/{id}
One review.
Returns: a Review
GET /v1/reviews?status=completed&limit=10
Recently completed reviews, newest first (at most 10).
Returns: { items: Review[] }
POST /v1/drafts
Start a contract draft from a plain-language request. Anything not provided becomes a placeholder to fill in on initialed.ai.
Body: { request, state?, details?, callback_url? }
Returns: 201 with a Draft (status "processing")
GET /v1/drafts/{id}
One draft.
Returns: a Draft
GET /v1/drafts?status=completed&limit=10
Recently completed drafts, newest first (at most 10).
Returns: { items: Draft[] }
POST /v1/hooks
Subscribe a webhook to review.completed or draft.completed (REST hooks).
Body: { event: "review.completed" | "draft.completed", target_url }
Returns: 201 { id, event }
DELETE /v1/hooks/{id}
Remove a webhook subscription.
Returns: 204, or 404 if unknown
Review and Draft objects
A Review has id, status (processing, completed, failed or unsupported), the document name and type, a summary, risk counts by severity, up to three top risks, the counts held back for the full report, an error message when it failed, and a link to the full review on initialed.ai.
On a free account the preview never includes a high-severity risk; those are counted in the held-back totals and shown in the full report.
A Draft has id, status (processing, needs_input, completed, failed, declined or not_available), its title and document type, the original request, an error message when it failed, and a link to the draft on initialed.ai.
Webhooks
- When a review or draft finishes, initialed.ai POSTs
{ event, id, status }to each subscribed URL. Read the item with the GET endpoint for its details. - Subscriptions fire on successful completion. A
callback_urlgiven when starting a review or draft fires once on any final status. - A
410response removes the subscription. Webhook targets must be on an approved host.
Limits
- 60 requests per minute per account.
- 4 new reviews or drafts per minute, and 20 of each per day.
- 25 webhooks per account.
- Each review uses one review credit, the same as on the website.
Errors
| HTTP | Codes |
|---|---|
| 400 | invalid_input, invalid_json, invalid_callback_url, invalid_target_url |
| 401 | unauthorized (missing or expired token) |
| 402 | quota_exceeded (no review credits left on the account) |
| 403 | account_required |
| 404 | not_found |
| 413 | file_too_large (over 25 MB) |
| 415 | unsupported_file (only PDF and .docx) |
| 422 | file_download_failed |
| 429 | rate_limited, webhook_limit |
| 500 / 503 | failed, internal, busy |
Support
Email hello@initialed.ai.
initialed is not a law firm and does not give legal advice.