UntangledAPI
Extract

Contract

Extract parties, dates, payment terms, and named clauses from a contract.

POST /v1/extract/contract is built for the structured metadata most contract pipelines need. It does not attempt full clause-by-clause analysis — that's on the Roadmap under analyze.

Request

curl https://api.untangledapi.com/v1/extract/contract \
  -H "x-api-key: $UNTANGLED_KEY" \
  -H "content-type: application/json" \
  -d '{
    "document": { "text": "<<full contract text>>" }
  }'

For PDFs, pass document.url instead of document.text.

Response

{
  "data": {
    "title": "Master Services Agreement",
    "effective_date": "2026-05-01",
    "expiration_date": "2027-04-30",
    "parties": [
      { "name": "Acme Co.", "role": "Service Provider" },
      { "name": "Globex Corp.", "role": "Client" }
    ],
    "governing_law": "State of Delaware",
    "payment_terms": {
      "amount": 25000.00,
      "currency": "USD",
      "frequency": "monthly",
      "net_days": 30
    },
    "auto_renewal": true,
    "termination_notice_days": 60
  },
  "model": "claude-haiku-4-5",
  "usage": {
    "inputTokens": 2600,
    "outputTokens": 240
  }
}

Fields

FieldTypeNotes
titlestring | nullDocument heading.
effective_date / expiration_datestring (ISO 8601) | null
parties[]arrayAt least one entry; role is best-effort.
governing_lawstring | nullJurisdiction clause.
payment_termsobject | nullTop-level dollar amount + frequency + net days.
auto_renewalboolean | nulltrue if any auto-renew language detected.
termination_notice_daysinteger | nullRequired notice for termination, if specified.

When you need more

For named clause extraction (limitation of liability, indemnity, IP assignment), use Custom with a clause-specific schema. The contract endpoint is intentionally narrow.

On this page