Skip to main content

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 does

Including 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.

FieldDefaultNotes
privacypublicPlatform visibility
category"22"YouTube category id
made_for_kids"no"COPPA. "yes"/"no" strings, not booleans
age_restricted"no"YouTube 18+
notifySubscriberstrueYouTube subscriber notification
aiDisclosuretrueDeclares AI-generated content
tiktok_post_modedirect or draft
tiktok_privacye.g. PUBLIC_TO_EVERYONE
Mixed casing

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.