API Reference

Start Conversion

Submit an FTR file for conversion to M4A format.

Endpoint

POST /convert/v1/process
POST
/convert/v1/process
curl -X POST https://api.case.dev/convert/v1/process \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
  "input_url": "https://your-bucket.s3.amazonaws.com/hearing-2024-11-04.ftr",
  "callback_url": "https://your-app.com/ftr-conversion-complete"
}'

Example Request

curl -X POST https://api.case.dev/convert/v1/process \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "input_url": "https://your-bucket.s3.amazonaws.com/hearing-2024-11-04.ftr",
    "callback_url": "https://your-app.com/ftr-conversion-complete"
  }'

Example Response

{
  "job_id": "conv_1f4a195e026b41ffb367c61089f5f367",
  "status": "processing",
  "message": "Conversion job started. Use GET /convert/v1/jobs/{job_id} to check status."
}

Request Parameters

Required:

  • input_url (string): HTTPS URL to your FTR file
    • Must be publicly accessible (S3 presigned URL recommended)
    • Max file size: 5GB

Optional:

  • callback_url (string): Webhook URL to receive completion notification
    • No polling needed for long conversions

Preparing Your FTR File

Recommended approach using S3:

# 1. Upload FTR file to S3
aws s3 cp hearing-recording.ftr s3://your-bucket/hearings/2024-11-04.ftr

# 2. Generate presigned URL (valid for 1 hour)
aws s3 presign s3://your-bucket/hearings/2024-11-04.ftr --expires-in 3600

Check Conversion Status

Get the current status and progress of a conversion job.

Endpoint

GET /convert/v1/jobs/{job_id}
GET
/convert/v1/jobs/conv_1f4a195e026b41ffb367c61089f5f367
curl -X GET https://api.case.dev/convert/v1/jobs/conv_1f4a195e026b41ffb367c61089f5f367 \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -H "Content-Type: application/json"

Example Request

curl https://api.case.dev/convert/v1/jobs/conv_1f4a195e026b41ffb367c61089f5f367 \
  -H "Authorization: Bearer sk_case_your_api_key_here"

Example Response (Completed)

{
  "job_id": "conv_1f4a195e026b41ffb367c61089f5f367",
  "status": "completed",
  "progress": 100,
  "duration_seconds": 3847,
  "file_size_bytes": 45230400,
  "created_at": "2025-11-04T09:30:12Z",
  "completed_at": "2025-11-04T09:34:23Z",
  "processing_time_seconds": 251,
  "download_url": "https://api.case.dev/convert/v1/download/conv_1f4a195e026b41ffb367c61089f5f367"
}

Status Values

  • queued: Job accepted, waiting to start
  • processing: Currently converting the FTR file
  • completed: Finished, ready to download
  • failed: Conversion failed
  • expired: File was deleted (7 day limit)

Download Converted File

Download the converted M4A audio file.

Endpoint

GET /convert/v1/download/{job_id}
GET
/convert/v1/download/conv_1f4a195e026b41ffb367c61089f5f367
curl -X GET https://api.case.dev/convert/v1/download/conv_1f4a195e026b41ffb367c61089f5f367 \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -H "Content-Type: application/json"

Example Request

curl https://api.case.dev/convert/v1/download/conv_1f4a195e026b41ffb367c61089f5f367 \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -o hearing-converted.m4a

Notes

  • Files stored for 7 days after completion
  • Download unlimited times within 7 days
  • M4A works in all audio players
  • Ready for transcription services

Delete Conversion Job

Delete a conversion job and its M4A file.

Endpoint

DELETE /convert/v1/jobs/{job_id}
DELETE
/convert/v1/jobs/conv_1f4a195e026b41ffb367c61089f5f367
curl -X DELETE https://api.case.dev/convert/v1/jobs/conv_1f4a195e026b41ffb367c61089f5f367 \
  -H "Authorization: Bearer sk_case_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{}'

Example Request

curl -X DELETE https://api.case.dev/convert/v1/jobs/conv_1f4a195e026b41ffb367c61089f5f367 \
  -H "Authorization: Bearer sk_case_your_api_key_here"

Processing Times

FTR DurationTypical Processing Time
30 minutes30-45 seconds
1 hour1-2 minutes
3 hours3-5 minutes
8 hours8-12 minutes

Pro tip: Use webhooks for files over 1 hour!