Eridian

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:

  1. Ingest (email, DMS, or API) into the matter.
  2. Parse with msa_v4 or nda_v3.
  3. Extract clauses (automatic on parse).
  4. Map to PDPL/GDPR if the playbook requires it.
  5. Queue exceptions (severity: high) to named counsel.
  6. 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.