A REST API for generating, rendering and publishing short-form video, signed webhooks for every lifecycle event, and an MCP server so AI agents can drive the whole pipeline.
Create a key under Settings, then API & Webhooks. Keys start with sf_live_ and are scoped to a single workspace.
curl https://app.shortfast.com/api/v1/ \
-H "Authorization: Bearer sf_live_xxxxxxxxxxxxxxxxxxxxxxxx"Every response is wrapped in a data key. List endpoints add a paging object, where limit runs from 1 to 100 and defaults to 50.
{
"data": { ... },
"paging": { "limit": 50, "offset": 0 }
}Errors carry a machine-readable code that is stable across releases, so you can branch on it instead of parsing messages.
{
"status": 401,
"code": "unauthorized",
"message": "..."
}POST requests accept an Idempotency-Key header, so a retry after a timeout cannot double-charge or duplicate an action.
The shape of nearly every integration is the same. Queue a generation from a brief, wait for it, render the mp4, then publish the result or hand back a download URL.
Both generation and rendering are asynchronous. The response returns immediately with a queued status, and you either poll until it reports COMPLETED or FAILED, or subscribe to webhooks and skip the polling entirely. Webhooks are the better choice for anything running in production.
Automations wrap that loop in a schedule: one brief becomes a blueprint that regenerates a fresh clip and publishes it on a recurring cadence, with a readiness checklist telling you what is still missing before it can activate.
video.createdvideo.generation_completedvideo.generation_failedvideo.render_completedvideo.render_failedvideo.scheduledvideo.publishedvideo.publish_failedautomation.clip_createdautomation.blockedautomation.stoppedEach delivery is signed with X-ShortFast-Signature, an HMAC-SHA256 hex digest of the raw request body. Verify against the raw body before parsing it, and compare in constant time.
const crypto = require('crypto');
const signature = req.get('X-ShortFast-Signature') || '';
const expected = crypto
.createHmac('sha256', process.env.SHORTFAST_WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
const valid =
signature.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(signature, 'hex'), Buffer.from(expected, 'hex'));Delivery is at-least-once, so deduplicate on X-ShortFast-Delivery. Acknowledge with any 2xx within 8 seconds; slower than that and it counts as a failure. Retries back off at roughly 4s, 16s, 64s, 4 minutes and 17 minutes, up to 6 attempts, and an endpoint that fails 25 times consecutively disables itself. Delivery logs are kept for 7 days.
The MCP server exposes the same operations over the Model Context Protocol, with tools that mirror the REST endpoints one to one. Claude, ChatGPT, n8n and Make connect by pasting a single URL, with no package to install and nothing to host.
https://app.shortfast.com/mcp?key=sf_mcp_xxxxxxxxxxxxxxxxxxxxxxxxFull guides and a live API reference live on developer.shortfast.com.
API keys, workspace scoping, and acting as a workspace in your organization.
Learn moreCore conceptPick a pipeline, write a brief, queue generation, poll it, render and download.
Learn moreCore conceptQueue the mp4, poll its progress, and get a download URL that is known to resolve.
Learn moreBuilding with itBlueprints that regenerate a fresh clip from one brief on a recurring schedule.
Learn moreBuilding with itAttach a rendered video to a profile, pick platforms, and read the publish state.
Learn moreBuilding with itTheme config, transcript, caption pages, b-roll segments, timeline and AI scenes.
Learn moreIntegrationSubscribe to events, verify signed deliveries, and handle every event type.
Learn morePlansWhat each feature charges, the ceilings each plan enforces, and the refusal codes.
Learn moreReferenceEvery REST endpoint, with schemas and live examples.
Learn moreKeys live under Settings, then API & Webhooks. The docs walk you from a first request to a scheduled automation.