Authentication
All API requests require an API key sent in the Authorization header as a Bearer token.
Authorization: Bearer sk_live_your_api_key_here
API keys are available in your account dashboard under Settings > API Keys. Generate a separate key per integration for easier revocation. Test keys (sk_test_) are rate-limited to 10 req/min and extractions do not count against your monthly page quota.
Webhooks
Webhooks deliver extraction results to your endpoint as soon as processing completes. Use them for batch processing or when document size exceeds the 30-second sync window.
Parseloom signs each webhook payload with a shared secret. Verify the X-Parseloom-Signature header against an HMAC-SHA256 of the raw body using your webhook secret.
POST https://your-endpoint.com/parseloom-hook
Content-Type: application/json
X-Parseloom-Signature: sha256=abc123...
{
"event": "extraction.complete",
"extraction_id": "ext_9f2a4d8c",
"fields": { ... }
}
Field schemas
You can override the field output schema per request, or set a default schema per template. Schema fields define the name, type, and required status of each extracted field.
{
"schema": [
{ "name": "vendor_name", "type": "text", "required": true },
{ "name": "invoice_date", "type": "date", "required": true },
{ "name": "total_amount", "type": "currency", "required": true },
{ "name": "line_items", "type": "table",
"columns": ["description", "qty", "unit_price"]
}
]
}
Templates API
List, create, and manage your extraction templates via API. All template operations require a Professional or Scale plan.
| Method | Endpoint | Description |
| GET | /v1/templates | List all templates in your account |
| GET | /v1/templates/:id | Get a single template with field definitions |
| POST | /v1/templates | Create a new template (requires training examples) |
| PATCH | /v1/templates/:id | Update template name or field schema |
| DELETE | /v1/templates/:id | Archive a template (extractions continue for 30 days) |
Errors
The API uses standard HTTP status codes. Error responses include a machine-readable code and a human-readable message.
| Code | HTTP | Meaning |
auth_invalid | 401 | Missing or invalid API key |
template_not_found | 404 | Template ID does not exist in your account |
file_unreadable | 422 | File is corrupt, password-protected, or unsupported format |
extraction_failed | 422 | Extraction ran but returned no fields - page not billed |
quota_exceeded | 429 | Monthly page quota reached for your plan |
rate_limited | 429 | Per-minute request rate exceeded |
Rate limits
Limits apply per API key. Burst allowance: 2x the per-minute limit for up to 10 seconds.
| Plan | Requests/min | Pages/month |
| Starter | 10 | 100 |
| Professional | 60 | 5,000 |
| Scale | 300 | Unlimited |
| Test key | 10 | Not counted |