One-shot generation
POST /gen/process-content-async runs the whole pipeline from one request:
voiceover, then render, then — optionally — publication.
Scope: generate (plus upload behaviour is folded in when you pass
account_ids).
The trade-off
Against the stepwise flow, you gain one request instead of three or four, and lose the chance to read the script before spending credits on a render.
Use one-shot when the persona and prompt are already tuned and you trust the output. Use stepwise when a bad script would be expensive or embarrassing.
Render only
Omit account_ids and nothing is published:
curl -s -X POST https://api.botlobby.ai/v1/gen/process-content-async \
-H "Authorization: Bearer $BOTLOBBY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"creation_id": "CONTENT_ID",
"video_id": "stock",
"orientation": "vertical"
}'
You still need a content item first — POST /contents — so this replaces steps
3–5 of the stepwise guide, not step 1.
Render and publish
account_ids changes what this request doesIncluding account_ids requests publication as part of the same dispatch.
Omitting it renders only. There is no separate flag — the presence of the field
is the switch.
curl -s -X POST https://api.botlobby.ai/v1/gen/process-content-async \
-H "Authorization: Bearer $BOTLOBBY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"creation_id": "CONTENT_ID",
"video_id": "stock",
"orientation": "vertical",
"account_ids": [{"id": "8f14e45f-ceea-467a-9fbb-9f0a1c2d3e4b"}],
"privacy": "public",
"made_for_kids": "no",
"aiDisclosure": true
}'
Account ids come from GET /accounts. As with
publishing, they are objects, not strings.
Publishing options
These only matter when account_ids is present.
| Field | Default | Notes |
|---|---|---|
privacy | public | Platform visibility |
category | "22" | YouTube category id |
made_for_kids | "no" | COPPA. "yes"/"no" strings, not booleans |
age_restricted | "no" | YouTube 18+ |
notifySubscribers | true | YouTube subscriber notification |
aiDisclosure | true | Declares AI-generated content |
tiktok_post_mode | — | direct or draft |
tiktok_privacy | — | e.g. PUBLIC_TO_EVERYONE |
notifySubscribers and aiDisclosure are camelCase while everything around
them is snake_case. That is the wire format, not a typo in these docs — send
them exactly as written or they are silently ignored.
Watching it run
One request, but three phases. The status walks through them:
PROCESSING_AUDIO → AUDIO_PROCESSED → PROCESSING_VIDEO → VIDEO_PROCESSED → UPLOADING → UPLOADED
Without account_ids it stops at VIDEO_PROCESSED.
curl -s https://api.botlobby.ai/v1/gen/task-status/CONTENT_ID \
-H "Authorization: Bearer $BOTLOBBY_API_KEY"
A failure at any phase lands on the matching FAILED_* status, so you can tell
where it broke: FAILED_AUDIO, FAILED_VIDEO or FAILED_UPLOAD. See
Polling and job status.
Credits are reserved per phase and refunded on failure, so a render that dies before publishing does not charge you for the upload.