Report Exports API
Last Updated: January 5, 2026
API Version: 2.1.0
Feature Flag:REPORT_EXPORTS_ENABLED
Plan Requirement: Growth, Pro, or Enterprise
The Report Exports API allows you to create, manage, and download verification reports in PDF or CSV format. Export jobs are processed asynchronously and can be monitored for completion status.
Table of Contents
- Overview
- Authentication
- Plan Requirements
- Endpoints
- Report Types
- Export Formats
- Job Status
- Error Handling
Overview
The export workflow follows these steps:
- Create Job - Submit export request with report type, date range, and format
- Monitor Status - Poll job status or wait for completion
- Download - Download the completed export file
- Cleanup - Files are automatically cleaned up after 24 hours
Key Features:
- Asynchronous processing for large reports
- PDF and CSV format support
- V2.1 enterprise reports with compliance scoring
- Automatic file cleanup
Authentication
All Export API endpoints require an authenticated session. Users must be logged in to their VerifyHuman dashboard.
Plan Requirements
Export functionality is available on Growth plan and higher:
| Plan | Export Access | PDF Exports |
|---|---|---|
| Free | No | No |
| Starter | No | No |
| Growth | Yes | Yes |
| Pro | Yes | Yes |
| Enterprise | Yes | Yes |
Endpoints
POST /api/reports/exports
Create a new export job.
Request Body:
{
"report_type": "overview",
"format": "pdf",
"env": "live",
"from": "2025-12-01",
"to": "2025-12-31"
}
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
report_type |
String | Yes | Report type (see Report Types) |
format |
String | No | pdf or csv (default: pdf) |
env |
String | Yes | Environment: test or live |
from |
String | Yes | Start date YYYY-MM-DD |
to |
String | Yes | End date YYYY-MM-DD |
Response (201):
{
"id": 123,
"report_type": "overview",
"format": "pdf",
"status": "queued",
"params": {
"env": "live",
"from": "2025-12-01",
"to": "2025-12-31"
},
"created_at": "2025-12-31T10:00:00Z"
}
GET /api/reports/exports
List your export jobs.
Query Parameters:
page(optional): Page number (default: 1)per_page(optional): Items per page (default: 20, max: 100)
Response (200):
{
"exports": [
{
"id": 123,
"report_type": "overview",
"format": "pdf",
"status": "succeeded",
"file_size_bytes": 245760,
"created_at": "2025-12-31T10:00:00Z",
"completed_at": "2025-12-31T10:01:30Z"
},
{
"id": 122,
"report_type": "usage",
"format": "csv",
"status": "succeeded",
"file_size_bytes": 15360,
"created_at": "2025-12-30T15:00:00Z",
"completed_at": "2025-12-30T15:00:45Z"
}
],
"total": 2,
"page": 1,
"pages": 1
}
GET /api/reports/exports/{id}
Get the status of a specific export job.
Response (200):
{
"id": 123,
"report_type": "overview",
"format": "pdf",
"status": "succeeded",
"params": {
"env": "live",
"from": "2025-12-01",
"to": "2025-12-31"
},
"file_size_bytes": 245760,
"created_at": "2025-12-31T10:00:00Z",
"completed_at": "2025-12-31T10:01:30Z",
"download_url": "/api/reports/exports/123/download"
}
GET /api/reports/exports/{id}/download
Download a completed export file.
Requirements:
- Export status must be
succeeded - File must not be expired (24-hour retention)
Response (200):
- Content-Type:
application/pdfortext/csv - Content-Disposition:
attachment; filename="report_123.pdf" - Body: Binary file content
Error (404):
{
"error": "Export file not found or expired"
}
DELETE /api/reports/exports/{id}
Cancel a queued export job. Cannot cancel running or completed jobs.
Response (200):
{
"message": "Export job cancelled",
"id": 123
}
Error (400):
{
"error": "Cannot cancel export with status: running"
}
Report Types
Available report types for export:
| Report Type | Description | Plan Required |
|---|---|---|
overview |
Dashboard summary metrics | Growth+ |
volume |
Volume over time | Growth+ |
usage |
Usage by product/API key | Growth+ |
risk-summary |
Risk and confidence metrics | Growth+ |
widget-performance |
Per-widget analytics | Growth+ |
full |
Complete V1 report | Growth+ |
verification-v21 |
V2.1 verification analytics | Growth+ |
full-v21 |
V2.1 full report with credits | Growth+ |
Export Formats
PDF Format
Professional, print-ready reports with:
- VerifyHuman branding
- Charts and visualizations
- Summary statistics
- Detailed breakdowns
V2.1 PDF Reports include:
- Compliance Effectiveness Score
- Risk Severity breakdown
- Period-over-period comparison
- Health check alerts
CSV Format
Raw data export for:
- Spreadsheet analysis
- Data warehousing
- Custom reporting tools
CSV exports include all data points without visualizations.
Job Status
Export jobs progress through these statuses:
| Status | Description |
|---|---|
queued |
Job created, waiting to process |
running |
Currently generating report |
succeeded |
Complete, ready for download |
failed |
Error occurred during generation |
Status Flow:
queued → running → succeeded
↘ failed
Error Handling
Validation Error (400):
{
"error": "Invalid report_type. Must be one of: overview, volume, usage, risk-summary, widget-performance, full, verification-v21, full-v21",
"field": "report_type"
}
Access Denied (403):
{
"error": "Export functionality requires Growth plan or higher"
}
Not Found (404):
{
"error": "Export job not found"
}
Common Errors:
| Error | Cause | Solution |
|---|---|---|
Invalid report_type |
Unknown report type | Use valid report type |
Invalid format |
Not pdf or csv | Specify format=pdf or format=csv |
Date range exceeds plan limit |
Range too wide | Reduce date range |
Export requires Growth plan |
On Free/Starter plan | Upgrade plan |
Cannot cancel: running |
Job already started | Wait for completion |
File not found or expired |
File deleted after 24h | Create new export |
Example Workflow
1. Create Export
curl -X POST https://app.verifyhuman.io/api/reports/exports \
-H "Content-Type: application/json" \
-d '{
"report_type": "verification-v21",
"format": "pdf",
"env": "live",
"from": "2025-12-01",
"to": "2025-12-31"
}'
2. Check Status
curl https://app.verifyhuman.io/api/reports/exports/123
3. Download When Complete
curl -O https://app.verifyhuman.io/api/reports/exports/123/download
See Also
- Reporting API - Query analytics data directly
- Dashboard Guide - Export from the web interface