Everything you need to file documents with any US court programmatically.
All API requests require a Bearer token in the Authorization header. Get your API key from the dashboard after signing up.
curl https://api.courtfile.dev/v1/filings \
-H "Authorization: Bearer cf_live_sk_1234567890abcdef" \
-H "Content-Type: application/json"API keys start with cf_live_ for production and cf_test_ for sandbox mode.
/v1/filings— Submit a new filing/v1/filings/{id}— Get filing details/v1/filings/{id}/status— Get filing status/v1/courts— List supported courtsSubmit a document to a court. CourtFile handles formatting, fee calculation, and submission.
| Parameter | Type | Required | Description |
|---|---|---|---|
| court | string | Yes | Court identifier (e.g., ca-superior-los-angeles) |
| case_number | string | Yes | Case number at the court |
| document_type | string | Yes | motion, complaint, answer, brief, petition, etc. |
| document_url | string | Yes | URL to the PDF document (must be accessible) |
| filer_name | string | Yes | Name of the filing attorney or party |
| filer_bar_number | string | No | State bar number of the filer |
| service_contacts | string[] | No | Email addresses for service of process |
| metadata | object | No | Court-specific metadata fields |
| webhook_url | string | No | URL to receive status update webhooks |
const response = await fetch('https://api.courtfile.dev/v1/filings', {
method: 'POST',
headers: {
'Authorization': 'Bearer cf_live_sk_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
court: 'ca-superior-los-angeles',
case_number: '24STCV01234',
document_type: 'motion',
document_url: 'https://your-storage.com/motion.pdf',
filer_name: 'Jane Smith, Esq.',
filer_bar_number: '123456',
service_contacts: ['opposing@lawfirm.com'],
webhook_url: 'https://your-app.com/webhooks/courtfile'
})
});
const filing = await response.json();
console.log(filing.filing_id); // "fil_7x9k2m3n"
console.log(filing.status); // "submitted"import requests
response = requests.post(
'https://api.courtfile.dev/v1/filings',
headers={
'Authorization': 'Bearer cf_live_sk_...',
'Content-Type': 'application/json'
},
json={
'court': 'ca-superior-los-angeles',
'case_number': '24STCV01234',
'document_type': 'motion',
'document_url': 'https://your-storage.com/motion.pdf',
'filer_name': 'Jane Smith, Esq.',
'service_contacts': ['opposing@lawfirm.com']
}
)
filing = response.json()
print(filing['filing_id']) # "fil_7x9k2m3n"curl -X POST https://api.courtfile.dev/v1/filings \
-H "Authorization: Bearer cf_live_sk_..." \
-H "Content-Type: application/json" \
-d '{
"court": "ca-superior-los-angeles",
"case_number": "24STCV01234",
"document_type": "motion",
"document_url": "https://your-storage.com/motion.pdf",
"filer_name": "Jane Smith, Esq.",
"service_contacts": ["opposing@lawfirm.com"]
}'{
"filing_id": "fil_7x9k2m3n",
"status": "submitted",
"court": "ca-superior-los-angeles",
"case_number": "24STCV01234",
"document_type": "motion",
"confirmation_number": "2024-LA-0098234",
"timestamp": "2024-11-15T14:23:01Z",
"estimated_processing": "same_day",
"fee": {
"filing_fee": 61.00,
"service_fee": 2.50,
"total": 63.50,
"currency": "usd"
}
}curl https://api.courtfile.dev/v1/filings/fil_7x9k2m3n/status \
-H "Authorization: Bearer cf_live_sk_..."{
"filing_id": "fil_7x9k2m3n",
"status": "confirmed",
"confirmation_number": "2024-LA-0098234",
"filed_at": "2024-11-15T14:23:01Z",
"confirmed_at": "2024-11-15T14:24:12Z",
"court_response": "Filing accepted and docketed.",
"document_stamp_url": "https://api.courtfile.dev/v1/filings/fil_7x9k2m3n/stamp.pdf"
}Status values: pending → submitted → confirmed or rejected
Set a webhook_url on your filing to receive real-time status updates via POST.
filing.submittedFiling received and queued for submission to the courtfiling.confirmedCourt accepted the filing and returned a confirmation numberfiling.rejectedCourt rejected the filing (includes rejection reason)filing.fee_chargedFiling fee successfully collected{
"event": "filing.confirmed",
"filing_id": "fil_7x9k2m3n",
"timestamp": "2024-11-15T14:24:12Z",
"data": {
"status": "confirmed",
"confirmation_number": "2024-LA-0098234",
"court_response": "Filing accepted and docketed."
}
}We support 3,000+ US courts. Here are some of the most commonly used.
Get your API key and start sending test filings in 5 minutes.
Get API Key