API Documentation

Last updated: April 1, 2026

Authentication

All API requests require a valid Clerk session. Include your session token in the request headers. Unauthenticated requests return 401.

POST /api/analyze

Analyze a contract. Accepts multipart/form-data with a 'file' field (PDF or DOCX, max 10MB) and optional 'language' field (English, Korean, Spanish, French, Japanese, Chinese, German, Portuguese). Alternatively, send JSON with 'text' and 'language' fields.

Response Format

Returns JSON with: summary (string), risks (array of {title, clause, explanation, severity, suggestion}), riskScore (0-100), riskHigh (boolean), savedId (UUID of saved contract), contractType (string), keyDates (array of {date, description}), financialObligations (array of {amount, description, frequency}), missingClauses (array of strings), fairnessScore (0-100), fairnessSummary (string), and actionItems (array of {priority, description}).

GET /api/contracts

List all contracts for the authenticated user. Returns an array of contract objects sorted by creation date (newest first).

GET /api/contracts/:id

Get a single contract by ID. Returns 404 if not found or not owned by the authenticated user.

Rate Limits

Free tier: 5 analyses per month, 20 requests per hour. Pro tier: 30 analyses per month, 20 requests per hour. Business tier: unlimited analyses. Rate limit headers are included in responses. Note: limits may vary as The Curator is currently in beta with generous limits.

arrow_backBack to home