Public API v1

Get job status and audio URL

Changed on

Poll this endpoint every 2–3 seconds until status is completed or failed. When completed, audioUrl contains a presigned S3 URL valid for 24 hours. With several jobs in flight, poll them together with GET /v1/tts?ids=… instead.

get/api/v1/tts/{jobId}

Request

  • Base URL
    https://api.vieneu.io
  • Auth
    • API key in header X-API-Key
    • or HTTP bearer

Path parameters

jobIdstring required

Response

Current job state; audioUrl is present once status is completed.

jobIdstring required
status'queued' | 'processing' | 'completed' | 'failed' required
audioUrlstring

Presigned S3 download URL. Only present when status=completed. Valid for 24 hours.

audioUrlExpiresInnumber

Seconds until audioUrl expires.

durationnumber
voiceIdstring
textLengthnumber
createdAtstring date-time
completedAtstring date-time
queuePositionnumber

Position in queue (only when status=queued).

estimatedWaitSecondsnumber

Estimated seconds until processing starts (only when status=queued).

errorstring

Example response

{
  "jobId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "audioUrl": "https://s3.amazonaws.com/bucket/tts/job.wav?X-Amz-Expires=86400&...",
  "audioUrlExpiresIn": 86400,
  "duration": 3.42,
  "voiceId": "Tuyen",
  "textLength": 150,
  "createdAt": "2026-05-17T10:00:00Z",
  "completedAt": "2026-05-17T10:00:08Z",
  "queuePosition": 2,
  "estimatedWaitSeconds": 8,
  "error": "Generation failed after retries."
}

Changes

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      response property message list-of-types was widened by adding types array to media type application/json of response 401

    • breaking

      response property message list-of-types was widened by adding types array to media type application/json of response 404

    • breaking

      response property message list-of-types was widened by adding types array to media type application/json of response 429

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status