Contract Review
Upload, parse, and review contracts as an operating line.
Contract review is a line of work, not a one-off prompt. Upload, parse into structured fields, extract clauses, then send a counsel-readable brief. Every step is attributed and residencied.
Parse
After uploading a document:
POST /v1/legal/contracts
Authorization: Bearer eridian_sk_...
Content-Type: application/json
Idempotency-Key: parse-doc-msa-4821
{
"project_id": "prj_legal_001",
"matter_id": "mtr_4821",
"document_id": "doc_msa_4821",
"model": "auto",
"routing_policy": "quality_optimized",
"schema": "msa_v4",
"features": ["pii_redaction", "structured_output"]
}
Required scope: legal:write.
{
"id": "ctr_4821",
"object": "eridian.legal.contract",
"status": "parsed",
"model": "gpt",
"parties": ["ACME Holdings Ltd", "RENEDOR LLC"],
"effective_date": "2026-04-01",
"governing_law": "UAE",
"liability_cap_usd": 1000000,
"termination": {
"for_cause": true,
"for_convenience_days": 90
},
"clause_ids": ["cls_01", "cls_02"],
"eridian": {
"route": "gpt",
"structured_output_valid": true,
"pii_redacted": 12,
"region": "me-central-1"
}
}
schema selects a published JSON schema. Custom schemas go through Structured Output. Invalid output retries once, then 422 structured_output_failed.
Review brief
POST /v1/legal/contracts/ctr_4821/brief
Authorization: Bearer eridian_sk_...
{
"model": "gpt",
"focus": ["liability", "data_protection", "termination"],
"audience": "counsel"
}
The brief cites clause ids. Counsel edits in the workspace. Publishing the brief to a client channel is a human action. The API will not email counterparties.
Operating line
Recommended loop for a legal-ops desk:
- Ingest (email, DMS, or API) into the matter.
- Parse with
msa_v4ornda_v3. - Extract clauses (automatic on parse).
- Map to PDPL/GDPR if the playbook requires it.
- Queue exceptions (
severity: high) to named counsel. - Close the matter or file the executed copy.
Do not skip eval when you change schema or the prompt template. See Evaluations.
Versions
Re-parse after an amendment:
POST /v1/legal/contracts/ctr_4821/reparse
{
"document_id": "doc_msa_4821_amd1",
"model": "gpt"
}
Versions are immutable. ctr_4821 stays. A new version field increments. Comparisons use Clause Extraction.
Batch
POST /v1/legal/contracts/batch
{
"matter_id": "mtr_4821",
"document_ids": ["doc_a", "doc_b"],
"model": "auto"
}
Batch size limits are on Legal Limits. Partial failure returns per-item errors. It does not roll back successful parses.
See Legal API.
Production API credentials are issued with an institution workspace. Contact sales if you need access.