Series
A series is a set-and-forget channel: it generates a new faceless video on a schedule and can auto-post each episode to connected accounts. Creating a series is free; each generated episode charges the credit cost of its model (20 to 100 credits), exactly like a single video.
Create a series (POST /series, scope series:write)
Required: name, source, and a niche or customPrompt. Everything else is optional and gets product defaults. Enumerate valid values first: GET /options?kind=sources, ?kind=niches, ?kind=styles, ?kind=languages, ?kind=backgrounds, ?kind=music, ?kind=captionThemes, and GET /voices.
curl -s -X POST https://faceless.so/api/v1/series \
-H "Authorization: Bearer $FACELESS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"name": "Deep sea facts",
"source": "Facts & stories",
"niche": "Ocean facts",
"voice": "EXAVITQu4vr4xnSDxMaL",
"duration": "60",
"autoPostTime": "18:00",
"timezone": "America/New_York"
}'
The first episode starts generating right after creation. Useful optional fields:
destinationanddestinationAccounts: auto-post platform and connected account ids (fromGET /accounts)postingDays: e.g.["Monday", "Wednesday", "Friday"]; omit for every daybrollModel:storyboard,motion_liteormotion_pro, which sets the per-episode credit costsubreddit: whensourceis"Reddit post"backgroundVideooruseRandomBackgroundVideo: gameplay/footage behind the captionscaptionStyle,showEmojis,enableBackgroundMusic,backgroundMusicMood,hashtags,tone,youtubePrivacyStatus
Rate limit: 5 series creations per 300s per key.
Track episodes (GET /series/{id}/episodes, scope series:read)
Episodes are regular videos plus scheduling state. Newest first, paginated:
curl -s "https://faceless.so/api/v1/series/665f1b2a9c31a2b3c4d5e901/episodes?limit=10" \
-H "Authorization: Bearer $FACELESS_API_KEY"
{
"success": true,
"data": [{ "id": "665f1b2a9c31a2b3c4d5eb01", "projectId": "665f1b2a9c31a2b3c4d5ea01", "status": "posted", "scheduledTime": "2026-07-30T18:00:00.000Z" }],
"pagination": { "page": 1, "limit": 10, "total": 1 }
}
Poll an episode's generation with GET /videos/{projectId}/status like any other video.
Force the next episode now (POST /series/{id}/generate, scope series:write)
Generates the next episode immediately instead of waiting for the schedule. Charges the series' per-episode cost. Returns the new projectId and its statusUrl. Rate limit: 5 per 300s.
curl -s -X POST https://faceless.so/api/v1/series/665f1b2a9c31a2b3c4d5e901/generate \
-H "Authorization: Bearer $FACELESS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
Update, pause, delete
GET /seriesandGET /series/{id}(scope series:read): list and inspect configuration.PATCH /series/{id}(scope series:write): change any subset of fields; only the fields you send change. Pass{"paused": true}to pause automatic generation,falseto resume.DELETE /series/{id}(scope series:write): stops all future generation; already-generated videos are kept.
curl -s -X PATCH https://faceless.so/api/v1/series/665f1b2a9c31a2b3c4d5e901 \
-H "Authorization: Bearer $FACELESS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"autoPostTime": "09:00", "paused": false}'
Budgeting
An everyday series on storyboard spends 20 credits per episode: a daily series is about 600 credits per month, a Monday/Wednesday/Friday series about 260. Check the balance with GET /credits before creating aggressive schedules; an episode that cannot be paid for fails with insufficient_credits. See credits and limits.