API Documentation

Integrate ContractLab's AI-powered contract analysis into your applications

Contracts

POST
/api/contracts/upload

Upload Contract

Upload a new contract for AI analysis

professional

Parameters

file
file
requiredContract file (PDF, DOCX, DOC)
title
string
optionalContract title
contract_type
string
optionalType of contract
jurisdiction
string
optionalLegal jurisdiction

Response

{
  "success": true,
  "contract_id": "CON-2025-0173",
  "status": "analyzing",
  "message": "Contract uploaded successfully. Analysis in progress."
}

Example

const formData = new FormData();
formData.append('file', contractFile);
formData.append('title', 'Service Agreement');
formData.append('contract_type', 'service_agreement');

const response = await fetch('https://api.contractguard.com/api/contracts/upload', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
});

const data = await response.json();
console.log(data);
GET
/api/contracts/{contract_id}

Get Contract Analysis

Retrieve complete AI analysis for a contract

professional

Parameters

contract_id
string
requiredContract ID

Response

{
  "contract_id": "CON-2025-0173",
  "title": "Service Agreement",
  "status": "completed",
  "risk_score": 72,
  "executive_summary": "This service agreement contains...",
  "top_risks": [...],
  "clauses_analysis": [...],
  "missing_clauses": [...],
  "negotiation_points": [...]
}

Example

const response = await fetch('https://api.contractguard.com/api/contracts/CON-2025-0173', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  }
});

const contract = await response.json();
console.log('Risk Score:', contract.risk_score);
GET
/api/contracts

List Contracts

List all contracts with optional filtering

professional

Parameters

status
string
optionalFilter by status
contract_type
string
optionalFilter by type
risk_min
number
optionalMinimum risk score
risk_max
number
optionalMaximum risk score
limit
number
optionalResults per page (default: 50)
offset
number
optionalPagination offset

Response

{
  "contracts": [...],
  "total": 142,
  "limit": 50,
  "offset": 0
}

Example

const response = await fetch('https://api.contractguard.com/api/contracts?status=active&risk_min=70&limit=20', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(`Found ${data.total} contracts`);

Alerts

POST
/api/alerts

Create Alert

Create a custom alert for a contract

professional

Parameters

contract_id
string
requiredContract ID
alert_type
string
requiredType of alert
severity
string
requiredSeverity level
title
string
requiredAlert title
description
string
requiredAlert description
due_date
string
optionalDue date (ISO 8601)

Response

{
  "success": true,
  "alert_id": "ALT-001",
  "message": "Alert created successfully"
}

Example

const response = await fetch('https://api.contractguard.com/api/alerts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    contract_id: 'CON-2025-0173',
    alert_type: 'compliance',
    severity: 'high',
    title: 'Missing compliance clause',
    description: 'GDPR compliance clause is missing',
    due_date: '2025-02-15T00:00:00Z'
  })
});

const data = await response.json();
GET
/api/alerts

List Alerts

List all alerts with optional filtering

professional

Parameters

status
string
optionalFilter by status
severity
string
optionalFilter by severity
contract_id
string
optionalFilter by contract

Response

{
  "alerts": [...],
  "total": 23
}

Example

const response = await fetch('https://api.contractguard.com/api/alerts?severity=high&status=active', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const alerts = await response.json();

Webhooks

POST
/api/webhooks

Configure Webhook

Set up webhook notifications for events

team

Parameters

url
string
requiredWebhook URL
events
array
requiredEvents to subscribe to
secret
string
optionalWebhook secret for verification

Response

{
  "success": true,
  "webhook_id": "WHK-001",
  "webhook_secret": "whsec_..."
}

Example

const response = await fetch('https://api.contractguard.com/api/webhooks', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://your-app.com/webhooks/contractguard',
    events: ['contract.analyzed', 'contract.high_risk', 'alert.created'],
    secret: 'your-secret-key'
  })
});

Need Help with the API?

Our developer support team is here to help you integrate ContractLab into your applications.