curl "https://dev-backend-ai.truefans.in/api/external/v1/bulk-jobs/{bulk_job_id}/generations/{external_id}/status/" \
-H "Authorization: Bearer $TRUEFAN_API_KEY"
{
"generation_id": "f339beb9-305d-4a01-89ef-669b7ec70de3",
"row_index": 0,
"external_id": "usr_9182",
"status": "processing",
"result_video_url": null,
"thumbnail_url": null,
"error_message": null,
"created": "2026-08-21T10:02:00Z",
"modified": "2026-08-21T10:02:05Z"
}
{ "error": "API key required" }
{ "error": "Bulk job not found" }
{ "error": "No row with this external_id in this bulk job" }
{ "error": "external_id is not unique within this bulk job — multiple rows match" }
Video Generation
Get single video status
Check one video’s status by bulk_job_id + your own external_id
GET
/
api
/
external
/
v1
/
bulk-jobs
/
{bulk_job_id}
/
generations
/
{external_id}
/
status
/
curl "https://dev-backend-ai.truefans.in/api/external/v1/bulk-jobs/{bulk_job_id}/generations/{external_id}/status/" \
-H "Authorization: Bearer $TRUEFAN_API_KEY"
{
"generation_id": "f339beb9-305d-4a01-89ef-669b7ec70de3",
"row_index": 0,
"external_id": "usr_9182",
"status": "processing",
"result_video_url": null,
"thumbnail_url": null,
"error_message": null,
"created": "2026-08-21T10:02:00Z",
"modified": "2026-08-21T10:02:05Z"
}
{ "error": "API key required" }
{ "error": "Bulk job not found" }
{ "error": "No row with this external_id in this bulk job" }
{ "error": "external_id is not unique within this bulk job — multiple rows match" }
Send the
bulk_job_id from Generate videos and the external_id you set on that row to get that one video’s status — the only per-row lookup in this API. Use this while a batch is still processing; once the whole batch is done, the same information (plus every other row’s) is in the CSV export instead.
string
required
Returned from Generate videos.
string
required
Whatever you sent for this row’s
external_id — see Correlating results back to your own data.string
required
Bearer {api_key}curl "https://dev-backend-ai.truefans.in/api/external/v1/bulk-jobs/{bulk_job_id}/generations/{external_id}/status/" \
-H "Authorization: Bearer $TRUEFAN_API_KEY"
{
"generation_id": "f339beb9-305d-4a01-89ef-669b7ec70de3",
"row_index": 0,
"external_id": "usr_9182",
"status": "processing",
"result_video_url": null,
"thumbnail_url": null,
"error_message": null,
"created": "2026-08-21T10:02:00Z",
"modified": "2026-08-21T10:02:05Z"
}
{ "error": "API key required" }
{ "error": "Bulk job not found" }
{ "error": "No row with this external_id in this bulk job" }
{ "error": "external_id is not unique within this bulk job — multiple rows match" }
external_id only needs to be unique within the batch that defined it — nothing stops you from reusing the same value across different batches (that’s fine, since lookups are always scoped to one bulk_job_id), but reusing it for two rows in the same batch makes this endpoint ambiguous and returns 409.Response fields
string
pending → processing → success or failed. Terminal states are success/failed — stop polling once you reach one.integer
This row’s position in the
rows list it was submitted with — 0 for a single-video (one-row) request.string | null
Populated only once
status is success.string | null
Populated only once
status is failed.