← Back to VoxChron
API Documentation
Build automated captioning pipelines with the VoxChron REST API. Upload media, poll for status, and retrieve captions — all programmatically.
REST
JSON over HTTPS
v1
Current stable version
99.9%
Uptime SLA (enterprise)
60/min
Default rate limit
Authentication
All API requests require a Bearer token in the Authorization header. Generate API keys from your account settings.
curl https://api.voxchron.com/v1/jobs \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json"Base URL
https://api.voxchron.com/v1
Endpoints
POST
/api/v1/jobsCreate a new captioning job. Returns a presigned S3 URL for uploading your media file.GET
/api/v1/jobs/{id}Get the current status of a job (queued, processing, completed, failed).GET
/api/v1/jobsList your recent jobs with pagination, filtered by status or date.DELETE
/api/v1/jobs/{id}Delete a completed job and its exports. Source files are deleted automatically on completion.GET
/api/v1/jobs/{id}/exports/{format}Download a caption export. Formats: srt, vtt, json, txt, docx.POST
/api/v1/webhooksRegister a webhook URL to receive job status updates (job.completed, job.failed).GET
/api/v1/account/usageGet your current billing period usage, minutes remaining, and plan details.Example: Create a Job
curl -X POST https://api.voxchron.com/v1/jobs \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"filename": "interview.mp4",
"contextMode": "legal",
"language": "en",
"webhookUrl": "https://your-app.com/webhooks/voxchron"
}'Response includes a presigned upload URL valid for 4 hours.
Webhooks
Webhooks are signed with HMAC-SHA256 using your webhook secret. Verify the X-VoxChron-Signature header on every incoming request.
{
"event": "job.completed",
"jobId": "job_abc123",
"status": "completed",
"exports": ["srt", "vtt", "json", "txt", "docx"],
"completedAt": "2026-04-15T10:30:00Z"
}Rate Limits
Default: 60 requests per minute per API key. Enterprise plans include higher limits. Responses include X-RateLimit-* headers.
Error Codes
400— Invalid request401— Invalid or missing API key402— Insufficient credits429— Rate limit exceeded500— Internal error (auto-retried)
Need enterprise support?
Custom integrations, dedicated infrastructure, SLAs, and higher rate limits available on request.
Contact Sales