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
| Field | Type | Notes |
|---|---|---|
title | string | null | Document heading. |
effective_date / expiration_date | string (ISO 8601) | null | |
parties[] | array | At least one entry; role is best-effort. |
governing_law | string | null | Jurisdiction clause. |
payment_terms | object | null | Top-level dollar amount + frequency + net days. |
auto_renewal | boolean | null | true if any auto-renew language detected. |
termination_notice_days | integer | null | Required 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.