Tasks

Query any task's status and result (one response format shared by every capability)

Every generation endpoint is async: it returns a task_id, then you poll this unified endpoint until the result is ready. voice / image / video all return the same shape — only result differs.

GET /api/v2/tasks/{task_id}

Auth: Authorization: Bearer sk_...

curl https://api.aiclonevoicefree.com/api/v2/tasks/b28f0341-3045-42e5-ad63-a5ccf4a1088e \
  -H "Authorization: Bearer sk_your_api_key"

Unified response format

{
  "task_id": "b28f0341-3045-42e5-ad63-a5ccf4a1088e",
  "status": "completed",
  "capability": "voice",
  "action": "clone",
  "model": "v1-real",
  "progress": null,
  "error": null,
  "credits_used": null,
  "created_at": 1780704348,
  "completed_at": 1780704355,
  "metadata": null,
  "audioUrl": "https://oss.aiclonevoicefree.com/tts/.../xxxx.wav",
  "providerUsed": "v1-async"
}

The result fields are flattened onto the top level once the task completes — there is no nested result wrapper. Which fields appear depends on the capability: audioUrl for voice, imageUrl for image, videoUrl for video (see each capability's page). Before completion, no result fields are present.

FieldNotes
task_idTask id
statuspending / processing / completed / failed / cancelled
capabilityvoice / image / video
actionclone / vocal-conversion / generate / multi-segment
modelModel / subtype actually used
progress0.0–1.0 (not populated yet, currently null)
audioUrl / imageUrl / videoUrlResult fields, flattened onto the top level once completed (capability-specific); absent until then
error{ code, message, type } when failed
credits_usedCredits spent (Phase 2; currently null)
created_at / completed_atUnix-second timestamps
metadataPassthrough fields from create, echoed back

State machine

statusMeaningClient
pendingAccepted, not startedKeep polling
processingIn progress (queue / upstream / retry-wait)Keep polling
completedDoneRead the result fields (audioUrl / imageUrl / videoUrl …)
failedFailedRead error
cancelledCancelled (reserved)

result per capability

voice (clone / convert)

{ "_type": "tts.clone", "format": "wav", "audioUrl": "https://...", "degraded": false, "providerUsed": "tts-v2-emotion-1" }

image (generate)

{ "_type": "image.generate", "imageUrl": "https://...", "width": 1024, "height": 1024 }

video (generate)

{ "_type": "video.generate", "videoUrl": "https://...", "durationSeconds": 5 }

Polling guidance

2s after submit  → first check
then             → every 3–6s
video            → may take several minutes

Errors

HTTPScenario
401Missing / invalid API key
404task_id not found

On this page