Posts the rendered video to the connected social accounts. Omit
profileId and platforms to use the video's own destination (a clip
inherits its blueprint's). Omit caption to use the video's
brief.description.
Publishing needs a paid plan (warning-plan-publish) and a rendered
video (warning-publish-not-configured). Platforms with no connected
account are reported back as missingPlatforms rather than failing the
whole call, unless none of the requested platforms resolves, which is
warning-publish-no-accounts. An account whose authorization expired
is warning-publish-auth, and reconnecting it in Settings clears that.
Send an Idempotency-Key: a timed-out retry would otherwise post the
same video twice.
Authorization
bearerAuth An API key created under Settings > API & Webhooks. Keys start with sf_live_.
In: header
Path Parameters
Header Parameters
Unique key per action (a UUID works well). Reusing it replays the first response instead of running the action again, so a retry after a timeout can never generate, render, publish or charge twice.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/videos/string/publish" \ -H "Content-Type: application/json" \ -d '{ "profileId": "pR4kM8xT2vQ6nL9wz", "platforms": [ "tiktok", "youtube" ], "caption": "Burnout is not a workload problem. #founders" }'{ "data": { "videoId": "7bQxL2mF9dR4tK1sv", "platforms": [ "tiktok" ], "missingPlatforms": [ "youtube" ], "publish": { "status": "COMPLETED", "scheduledAt": null, "startedAt": "2026-08-06T09:40:02.000Z", "publishedAt": "2026-08-06T09:40:31.000Z", "failedAt": null, "platforms": [ "tiktok" ], "missingPlatforms": [ "youtube" ], "caption": "Burnout is not a workload problem. #founders", "error": null } }}List publishing profiles GET
The named destinations in this workspace and the social accounts connected to each. Unpaginated: a workspace holds a handful at most. Pass `?refresh=true` to re-read the connected accounts upstream before answering. That is slower, and never fails the request: if the accounts cannot be re-read, the cached ones are returned.
Clear the publish state DELETE
Wipes the publish block so the video can be sent again. Refused while a publish is live or already finished (`warning-invalid-input`): clearing it then would lose the result and let an automation post the same video twice.