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

ParamTypeDefaultDescription
limitinteger20Max results per page (max 100)
offsetinteger0Number 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:

FieldTypeDescription
call_summarystringConcise summary of the entire call
call_typestringClassification: retention, sales, support, billing, complaint
call_outcomestringResolution: resolved, partial, escalated, unresolved
customerobjectname, company, email, phone (when mentioned)
agentobjectname, department, agent_id (when mentioned)
financialobjectpayment_today, recurring_amount, pending_balance, payment_method, billing_date
complianceobjectrecording_disclosure (bool), sensitive_data_shared (array of redacted PII)
sentimentobjectcustomer_sentiment, agent_performance (positive/negative/neutral/good/poor)
key_issuesarrayList of main problems discussed
action_itemsarrayFollow-up tasks identified in the call
agreementsarrayCommitments made by either party
transcript_cleanedstringFull 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."
}