When to use it
Use POST /api/v1/post to publish a completed ReelsBuilder video (for example the output of /generate-and-post or the clipper) to one social account that the API key's user has connected. It does not accept external video URLs, and it posts to one account per call.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| POST | /api/v1/post | Publish a completed video to one connected account (synchronous) |
| GET | /api/v1/social-accounts | List the connected accounts for the key's user |
| DELETE | /api/v1/social-accounts/{account_id} | Disconnect an account |
| POST | /api/v1/schedules | Create a recurring or one-time autopilot schedule |
| GET | /api/v1/schedules | List schedules |
| GET / PUT / DELETE | /api/v1/schedules/{schedule_id} | Read, update or delete a schedule |
| PATCH | /api/v1/schedules/{schedule_id}/status | Pause or resume: {"status": "active" | "paused"} |
Prerequisites
The key's user must connect each social account once in the ReelsBuilder dashboard (settings). Accounts can only be connected through the dashboard; there is no API flow for connecting accounts on behalf of other users.
Quickstart — post a video
curl -X POST https://api.reelsbuilder.ai/api/v1/post \
-H "Authorization: Bearer $REELSBUILDER_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"video_id": "6a0f...",
"platform": "tiktok",
"caption": "Why we ship faster than competitors",
"hashtags": ["startup", "engineering"]
}'Response
The call is synchronous: it returns after the platform accepts the upload. There is no post webhook.
{
"success": true,
"platform": "tiktok",
"social_account_id": "65f1...",
"video_id": "6a0f...",
"result": { "...": "platform-specific post id and URL" }
}result holds the platform's post id and URL (for example youtubeVideoId/youtubeUrl or tiktokPostId/tiktokUrl). If no matching account is connected, the call returns 404 SOCIAL_ACCOUNT_NOT_FOUND.
Parameters
| Field | Type | Description |
|---|---|---|
video_id | string | Required. A completed ReelsBuilder video owned by the key's user. |
social_account_id (alias account_id) | string | Exact account from GET /api/v1/social-accounts. Preferred when the user has several accounts on one platform. |
platform | enum | One of youtube, instagram, tiktok, facebook, x. Used to pick the primary connected account when no account id is sent. |
title | string | Post title where the platform supports one. |
caption | string | Used as the description, and as the title when title is omitted. |
description | string | Explicit description. |
hashtags | string[] | Leading # is optional. Up to 30. |
privacy_status | enum | YouTube only: private, unlisted or public (default). |
To post to several platforms, make one call per account, each with its own Idempotency-Key.
Schedules
A schedule tells ReelsBuilder's autopilot to generate and post content on its own. The body is validated by the same schedule service the dashboard uses:
curl -X POST https://api.reelsbuilder.ai/api/v1/schedules \
-H "Authorization: Bearer $REELSBUILDER_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily tips",
"schedule_type": "recurring",
"recurring_config": { "frequency": "daily", "time_of_day": "09:00", "timezone": "America/New_York" },
"content_type": "personalized",
"content_config": {},
"social_accounts": ["65f1..."],
"posting_config": {
"title_template": "Daily tip",
"description_template": "A daily tip from Acme"
}
}'| Field | Description |
|---|---|
name | Required. Up to 100 characters. |
schedule_type | Required. recurring or one_time (with optional scheduled_time, ISO 8601). |
recurring_config | frequency (daily, weekly, monthly), time_of_day (HH:MM), timezone, optional days_of_week (0–6) or day_of_month. |
content_type | Required. The generator to run, e.g. personalized, motivational, daily_news. |
content_config | Required. Generator-specific options (may be {}). |
social_accounts | Account ids from GET /api/v1/social-accounts. |
posting_config | Required. title_template, description_template, optional tags, privacy_status. |
status, max_executions | Optional. active (default) or paused; cap on total runs. |
The response uses the older flat shape: { success, message, schedule: { id, name, status, next_execution, ... } }. Validation errors return 400 with { success: false, message }.
Pricing
- $0.05 per
POST /api/v1/postcall on live keys. - $0.02 per
POST /api/v1/schedulescall on live keys. - Requests that return an error are refunded.
- Listing accounts and schedules is free.
OAuth token security
Social tokens are encrypted at rest with per-user keys and are never returned over the API. To reconnect or revoke access, the user uses the dashboard (or DELETE /api/v1/social-accounts/{account_id} to disconnect).
See also
- Stock Video API — produces the video you post
- YouTube Clipper — produces clips you can post
- Errors