curl "https://dev-backend-ai.truefans.in/api/external/v1/image-bulk-jobs/{bulk_job_id}/export.csv" \
-H "Authorization: Bearer $TRUEFAN_API_KEY" \
-O -J
import requests
resp = requests.get(
f"https://dev-backend-ai.truefans.in/api/external/v1/image-bulk-jobs/{bulk_job_id}/export.csv",
headers={"Authorization": f"Bearer {api_key}"},
)
resp.raise_for_status()
with open("results.csv", "wb") as f:
f.write(resp.content)
external_id,generation_id,customer_name,city,result_image_url
usr_9182,f339beb9-305d-4a01-89ef-669b7ec70de3,Anmol,Mumbai,https://assets-studio.truefans.in/editor/.../a.png
usr_4471,a12c8e21-9f3d-4b6a-8e12-1234567890ab,Rahul,Pune,https://assets-studio.truefans.in/editor/.../b.png
{ "error": "API key required" }
{ "error": "Image bulk job not found" }
{ "error": "Export not ready — bulk job has not finished yet", "status": "processing" }
Image Generation
Download image CSV export
Download every row’s result as a single CSV file
GET
/
api
/
external
/
v1
/
image-bulk-jobs
/
{bulk_job_id}
/
export.csv
curl "https://dev-backend-ai.truefans.in/api/external/v1/image-bulk-jobs/{bulk_job_id}/export.csv" \
-H "Authorization: Bearer $TRUEFAN_API_KEY" \
-O -J
import requests
resp = requests.get(
f"https://dev-backend-ai.truefans.in/api/external/v1/image-bulk-jobs/{bulk_job_id}/export.csv",
headers={"Authorization": f"Bearer {api_key}"},
)
resp.raise_for_status()
with open("results.csv", "wb") as f:
f.write(resp.content)
external_id,generation_id,customer_name,city,result_image_url
usr_9182,f339beb9-305d-4a01-89ef-669b7ec70de3,Anmol,Mumbai,https://assets-studio.truefans.in/editor/.../a.png
usr_4471,a12c8e21-9f3d-4b6a-8e12-1234567890ab,Rahul,Pune,https://assets-studio.truefans.in/editor/.../b.png
{ "error": "API key required" }
{ "error": "Image bulk job not found" }
{ "error": "Export not ready — bulk job has not finished yet", "status": "processing" }
Returns the whole image batch as a real downloadable CSV file — one row per generation, with
external_id, generation_id, that row’s variables, and result_image_url. This is the only way to get per-row detail for a batch through this API — Get image batch status only returns aggregate counts, never inline per-row data.
This file contains the actual data you submitted — names,
external_ids, whatever variables you sent — not just placeholder examples. Treat it the same way you’d treat any of your own customer data.string
required
Returned from Generate images.
string
required
Bearer {api_key}curl "https://dev-backend-ai.truefans.in/api/external/v1/image-bulk-jobs/{bulk_job_id}/export.csv" \
-H "Authorization: Bearer $TRUEFAN_API_KEY" \
-O -J
import requests
resp = requests.get(
f"https://dev-backend-ai.truefans.in/api/external/v1/image-bulk-jobs/{bulk_job_id}/export.csv",
headers={"Authorization": f"Bearer {api_key}"},
)
resp.raise_for_status()
with open("results.csv", "wb") as f:
f.write(resp.content)
external_id,generation_id,customer_name,city,result_image_url
usr_9182,f339beb9-305d-4a01-89ef-669b7ec70de3,Anmol,Mumbai,https://assets-studio.truefans.in/editor/.../a.png
usr_4471,a12c8e21-9f3d-4b6a-8e12-1234567890ab,Rahul,Pune,https://assets-studio.truefans.in/editor/.../b.png
{ "error": "API key required" }
{ "error": "Image bulk job not found" }
{ "error": "Export not ready — bulk job has not finished yet", "status": "processing" }
Only available once the batch is fully done — check
csv_ready on Get image batch status, or wait for the bulk_job.completed webhook, which only fires once this is already true.Response
Returned withContent-Type: text/csv and Content-Disposition: attachment — hitting this URL in a browser, or with curl -O -J, downloads a .csv file directly rather than returning JSON.
The header row is external_id, generation_id (TrueFan’s own ID for the row — useful for support/debugging), followed by every variable name used anywhere in the batch (a row that didn’t use a particular variable has an empty cell there), followed by result_image_url.