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.

bash
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:

  • destination and destinationAccounts: auto-post platform and connected account ids (from GET /accounts)
  • postingDays: e.g. ["Monday", "Wednesday", "Friday"]; omit for every day
  • brollModel: storyboard, motion_lite or motion_pro, which sets the per-episode credit cost
  • subreddit: when source is "Reddit post"
  • backgroundVideo or useRandomBackgroundVideo: gameplay/footage behind the captions
  • captionStyle, 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:

bash
curl -s "https://faceless.so/api/v1/series/665f1b2a9c31a2b3c4d5e901/episodes?limit=10" \
  -H "Authorization: Bearer $FACELESS_API_KEY"
json
{
  "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.

bash
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 /series and GET /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, false to resume.
  • DELETE /series/{id} (scope series:write): stops all future generation; already-generated videos are kept.
bash
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.