Jobs API
List, retrieve, and download transcription job results.
List Jobs
GET
/v1/jobs
Returns your jobs in reverse chronological order.
curl https://api.voxparse.com/v1/jobs?limit=10&offset=0 \
-H "X-API-Key: YOUR_API_KEY"
import requests
r = requests.get("https://api.voxparse.com/v1/jobs",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"limit": 10, "offset": 0})
print(r.json())
$ch = curl_init("https://api.voxparse.com/v1/jobs?limit=10&offset=0");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY"]
]);
$result = json_decode(curl_exec($ch), true);
print_r($result);
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Max results per page (max 100) |
offset | integer | 0 | Number of results to skip |
Response 200 OK
Response
{
"jobs": [
{
"id": "a1b2c3d4-...",
"status": "completed",
"type": "transcribe",
"model": "standard",
"duration_seconds": 3600,
"cost_cents": 30,
"created_at": "2026-04-19 19:13:18",
"completed_at": "2026-04-19 19:15:22"
}
],
"limit": 20,
"offset": 0
}
Get Job
GET
/v1/jobs/{job_id}
Returns the full details of a single job. When status is completed and a result exists, a result_url field is included.
curl https://api.voxparse.com/v1/jobs/JOB_ID \
-H "X-API-Key: YOUR_API_KEY"
import requests
job_id = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
r = requests.get(f"https://api.voxparse.com/v1/jobs/{job_id}",
headers={"X-API-Key": "YOUR_API_KEY"})
print(r.json())
$jobId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890";
$ch = curl_init("https://api.voxparse.com/v1/jobs/$jobId");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY"]
]);
$result = json_decode(curl_exec($ch), true);
print_r($result);
Response 200 OK
Response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"type": "transcribe",
"model": "standard",
"duration_seconds": 3600,
"cost_cents": 30,
"created_at": "2026-04-19 19:13:18",
"completed_at": "2026-04-19 19:15:22",
"error": null,
"result_url": "/v1/jobs/a1b2c3d4-.../result"
}
Job statuses:
queued -> processing -> completed or failed
Get Result
GET
/v1/jobs/{job_id}/result
Downloads the transcription result as JSON. Only available for jobs with status completed.
Returns 404 if the job is not completed or the result file is not found.
curl https://api.voxparse.com/v1/jobs/JOB_ID/result \
-H "X-API-Key: YOUR_API_KEY"
import requests
job_id = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
r = requests.get(f"https://api.voxparse.com/v1/jobs/{job_id}/result",
headers={"X-API-Key": "YOUR_API_KEY"})
result = r.json()
print(result["ai_analysis"]["call_summary"])
print(result["ai_analysis"]["transcript_cleaned"][:500])
$jobId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890";
$ch = curl_init("https://api.voxparse.com/v1/jobs/$jobId/result");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY"]
]);
$result = json_decode(curl_exec($ch), true);
echo $result["ai_analysis"]["call_summary"];
Result Fields
Response
{
"transcript": "Full raw text of transcription...",
"duration_seconds": 3600,
"language": "en",
"segments": [{"start": 0.0, "end": 2.5, "text": "..."}],
"words": [{"word": "hello", "start": 0.1, "end": 0.4}],
"ai_analysis": {
"call_summary": "...",
"call_type": "billing",
"transcript_cleaned": "Agent: ... Customer: ...",
"compliance": { "sensitive_data_shared": ["phone number", "SSN (last 4)"] }
}
}
AI analysis: Always included. Contains structured analysis with call summary, diarized transcript, compliance flags, sentiment, and financial data. The
transcript_cleaned content depends on the mode used.
AI Analysis Object
Every Pro transcription response includes an ai_analysis object with the following fields:
| Field | Type | Description |
|---|---|---|
call_summary | string | Concise summary of the entire call |
call_type | string | Classification: retention, sales, support, billing, complaint |
call_outcome | string | Resolution: resolved, partial, escalated, unresolved |
customer | object | name, company, email, phone (when mentioned) |
agent | object | name, department, agent_id (when mentioned) |
financial | object | payment_today, recurring_amount, pending_balance, payment_method, billing_date |
compliance | object | recording_disclosure (bool), sensitive_data_shared (array of redacted PII) |
sentiment | object | customer_sentiment, agent_performance (positive/negative/neutral/good/poor) |
key_issues | array | List of main problems discussed |
action_items | array | Follow-up tasks identified in the call |
agreements | array | Commitments made by either party |
transcript_cleaned | string | Full diarized transcript with Agent: / Customer: labels |
PII Handling: Sensitive data is automatically detected and categorized in the
sensitive_data_shared array. Only the type of PII is listed (e.g., "credit card", "SSN (last 4)", "phone number") — actual values are never included in the structured output. Raw PII remains only in the transcript text.
Lite plan: When using
plan=lite, the ai_analysis object contains only transcript_cleaned. All other fields (call_summary, sentiment, compliance, financial, etc.) are omitted. Use plan=pro (default) for the full 11-feature analysis JSON.
Get Pricing
GET
/v1/pricing
Returns the available transcription plans and their per-hour rates. No authentication required.
Response 200 OK
Response
{
"plans": [
{
"id": "pro",
"name": "VoxParse Pro",
"price_per_hour": 0.39,
"price_per_hour_display": "$0.39",
"features": "Full 11-feature AI analysis JSON"
},
{
"id": "lite",
"name": "VoxParse Lite",
"price_per_hour": 0.15,
"price_per_hour_display": "$0.15",
"features": "Transcript, diarization, transcript_cleaned only"
}
],
"currency": "usd",
"note": "Requests with plan=lite that enable standard features auto-upgrade to Pro. A warnings[] array is added to the response."
}