Built for AI agents
Autostud turns text, links and media into finished, rendered short-form videos: quizzes, rankings, karaoke, subtitled clips, faceless narration and AI music. Every part of it is callable -- there is no step that requires a human to click something in a dashboard.
https://autostud.ai/api/mcpBearer <api key>, or `?key=<api key>` on the URL for clients that only accept a URL.
- 75
- callable actions
- 22
- resources
- 46
- spend credits
- 10
- MCP tools
Connect your client
No SDK, no code generation. One URL and a key.
claude mcp add --transport http autostud https://autostud.ai/api/mcp --header "Authorization: Bearer sk_live_..."
Settings > Connectors > Add custom connector > https://autostud.ai/api/mcp?key=sk_live_...
{"mcpServers":{"autostud":{"url":"https://autostud.ai/api/mcp?key=sk_live_..."}}}{"type":"mcp","server_label":"autostud","server_url":"https://autostud.ai/api/mcp","headers":{"Authorization":"Bearer sk_live_..."}}Prefer plain HTTP? The same key works on https://autostud.ai/api/v1. The contract is published as OpenAPI.
The first five calls
From an empty workspace to a finished mp4.
- 1
Check the workspace and its credit balance.
MCP whoami
REST GET /api/v1/me
- 2
Find out what this key may touch. Never guess a field name -- ask.
MCP catalog, then describe { resource: "videos" }
REST GET /api/v1 (resources + actions the key is scoped for)
- 3
Create the video. One action builds a full timeline composition.
MCP run_action { action: "videos.create", input: { ... } }
REST POST /api/v1/actions/videos.create
- 4
Render it. Runs on a worker VM and spends credits.
MCP run_action { action: "renders.create", input: { video_id } }
REST POST /api/v1/actions/renders.create
- 5
Wait for the mp4 -- poll, or let a signed webhook tell you.
MCP list_records { resource: "renders" } until status is done
REST GET /api/v1/renders?video_id=... or subscribe to render.completed
What you should know first
The things that make an integration behave well instead of merely work.
- Renders are asynchronous and cost credits. A render takes minutes, not seconds -- poll, or use a webhook, never block.
- Actions flagged `spends_credits` debit the workspace. `GET /api/v1/me` returns the balance; a 402 `insufficient_credits` carries the shortfall.
- Every write accepts an `Idempotency-Key` header, kept 24h. Retry with the same key instead of creating a second video.
- Errors are stable machine codes with a `hint` field naming the call that fixes them. Branch on `error.code`, never on the message.
- Rate limits and monthly quotas are per key and reported on every response via `X-RateLimit-*`; a 429 carries `Retry-After`.
- Test the whole path for free with an `sk_test_` key: real auth, real validation, no writes, no credits, no webhooks.
- Any page on this site can be fetched as Markdown -- send `Accept: text/markdown`, or append `.md` to the URL.
Every failure carries a machine code, a hint naming the call that fixes it, and whether retrying can help. Full error reference.
75 actions
Everything the platform does, callable in one request each.
renders3
renders.createcreditsQueues a render for a video and returns the render job.renders.listRender jobs with their status and output URLs.renders.deleteDeletes a render job and its output reference.
videos4
videos.createCreates a video through the dashboard controller: applies the template, defaults and workspace stamping.videos.updateValidated update of a video document (same Joi schema as the editor).videos.generate_layer_audiocreditsGenerates the audio of one timeline layer and syncs its timing.videos.launch_flowcreditsRuns the end-to-end video flow (generation pipeline) for a video.
timeline7
timeline.generate_audiocreditsGenerates the voice-over of a block/group and runs Whisper alignment.timeline.generate_questionscreditsWrites quiz questions for a video from a topic or keyword.timeline.sync_voiceRecomputes block durations from the audio sequence.timeline.whisper_analyzecreditsWord-level transcription and timing for an audio file.timeline.analyze_subtitlescreditsBuilds subtitle groups from a transcription.timeline.translate_subtitlescreditsTranslates a subtitle track into a target language.timeline.hydrate_tu_preferescreditsFills a would-you-rather timeline with generated questions and media.
subtitles1
subtitles.generatecreditsTranscribes a media URL with Whisper, marks the words to emphasise and writes the subtitle track + layer onto the video. One call between `videos.create` and `renders.create`.
images1
images.generatecreditsRuns an image agent and bills the workspace.
videos_ai2
videos_ai.generatecreditsRuns a video agent (Veo, Kling, Sora, Seedance...) and bills the workspace.videos_ai.extendcreditsExtends a generated video by another segment.
agents2
agents.executecreditsRuns any configured agent with its prompt template and variables.agents.executionsHistory of agent runs with their outputs.
generations1
generations.launchcreditsThe playground pipeline: prompt in, image or video out, billed and stored.
music2
music.generatecreditsCreates a Suno song from a prompt, lyrics or a style brief.music.get_taskStatus and tracks of a music generation.
characters2
characters.generate_imagecreditsGenerates a consistent image of a character.characters.smart_variantscreditsGenerates a batch of consistent variants for a character.
faceless8
faceless.generate_storycreditsWrites the script of a faceless video from a prompt.faceless.generate_outlinecreditsProduces the act/scene outline before the full script.faceless.parse_scriptcreditsSplits a script into scenes ready for the faceless engine.faceless.generate_audiocreditsGenerates the voice-over of one or more scenes.faceless.generate_videocreditsGenerates the visual of a faceless scene (image or video model).faceless.check_statusStatus of a running faceless scene generation.faceless.analyze_urlcreditsExtracts a usable brief from an article or video URL.faceless.detect_characterscreditsFinds recurring characters and proposes consistent prompts.
smart_groups3
smart_groups.generatecreditsBuilds a smart group (quiz, ranking, dialogue...) inside a video.smart_groups.actioncreditsExecutes one of a smart group's declared actions.smart_groups.create_qcmCreates a multiple-choice question group from a question set.
tools10
tools.generate_from_promptcreditsThe one-shot tool: a prompt in, a ready video project out.tools.image_to_promptcreditsTurns an image into a reusable generation prompt.tools.remove_backgroundcreditsReturns a cut-out version of the image.tools.image_modificationcreditsApplies an instruction-based edit to an image.tools.image_cropCrops or reframes an image to a target format.tools.reddit_post_to_videocreditsFetches a Reddit post and turns it into a video project.tools.youtube_to_karaokecreditsBuilds a karaoke video composition from a YouTube URL.tools.read_commentscreditsFetches the comments of a TikTok or Instagram post.tools.write_lyricscreditsTurns comments into song lyrics, each line keeping its comment id.tools.variant_analyzecreditsAnalyses a media variant and reports what it contains.
slideshows2
slideshows.generatecreditsGenerates the visuals of every pending slide.slideshows.exportcreditsExports the finished slideshow.
flows2
flows.executecreditsRuns an automation flow and returns its execution.flows.executionsExecution history of a flow.
publishing2
publishing.schedule_postcreditsQueues a video for publication on a connected account.publishing.calendarScheduled posts grouped by day.
account3
account.creditsCurrent credit balance of the workspace.account.limitsPlan limits and current consumption.account.credit_historyCredit movements, newest first.
image_agents6
image_agents.listImage agents configured for the workspace.image_agents.createCreates an image agent with its model and default parameters.image_agents.updateUpdates an image agent.image_agents.deleteDeletes an image agent.image_agents.generatecreditsStarts an image generation job. Poll `image_agents.status` for the result.image_agents.statusStatus of one or more image generation jobs.
app_screenshots5
app_screenshots.listApp-screenshot projects of the workspace.app_screenshots.createCreates an app-screenshot project.app_screenshots.updateUpdates an app-screenshot project.app_screenshots.deleteDeletes an app-screenshot project.app_screenshots.generatecreditsGenerates one app-store screenshot from a project.
voice_projects4
voice_projects.listBulk text-to-voice projects.voice_projects.createCreates a bulk text-to-voice project.voice_projects.updateUpdates a bulk text-to-voice project.voice_projects.deleteDeletes a bulk text-to-voice project.
playground2
playground.random_promptcreditsGenerates an image prompt from a theme, for exploration.playground.image_to_promptcreditsTurns an image into the prompt that would produce it.
instructions2
instructions.generatecreditsWrites the instruction set driving a generation from a brief.instructions.generate_with_newscreditsSame, seeded with fresh news on the topic.
assets1
assets.static_libraryThe platform-provided asset library (backgrounds, overlays, sounds).
22 resources
Read and written with the standard CRUD verbs, scoped per key.
videosVideo projects with their timeline, blocks and generation settings.
list - get - create - update - delete
foldersFolders organising videos and playground generations.
list - get - create - update - delete
assetsFiles uploaded to the workspace library.
list - get - create - delete
charactersRecurring characters with their visual and voice configuration.
list - get - create - update - delete
agentsImage and video generation agents.
list - get - create - update - delete
flowsAutomation flows: nodes, edges and variables.
list - get - create - update - delete
slideshowsSlideshow projects and their slides.
list - get - create - update - delete
templatesSaved video templates.
list - get - create - update - delete
video_stylesReusable style presets applied to timelines.
list - get - create - update - delete
smart_group_configsCustom smart-group definitions used by the timeline editor.
list - get - create - update - delete
custom_video_typesUser-defined video types available in the editor.
list - get - create - update - delete
generationsEvery AI generation billed to the workspace: image, video, audio, music.
list - get
musicAI song generations and their tracks.
list - get
scheduled_postsPosts queued for publication on connected social accounts.
list - get - create - update - delete
social_accountsConnected publishing destinations. Read-only: connect them from the dashboard.
list - get
rendersRender jobs and their output files. Start one with the `renders.create` action — it charges credits.
list - get
voicesThe voice catalog: the shared global library plus the workspace and personal voices.
list - get
character_tagsTags used to organise characters.
list - get - create - update - delete
agent_executionsHistory of agent runs with their prompt, variables and result.
list - get
flow_executionsFlow runs: status, node states, execution path and credits consumed.
list - get
credit_transactionsEvery credit movement of the workspace: what was charged, by whom, for what.
list - get
playground_generationsImages and videos generated from the playground gallery.
list - get - update - delete
Read this site as Markdown
Because HTML is a bad way to hand a page to a model.
curl -H "Accept: text/markdown" https://autostud.ai/tools/tweet-to-video curl https://autostud.ai/tools/tweet-to-video.md curl "https://autostud.ai/tools/tweet-to-video?format=md"
Same page, roughly fifty times fewer bytes, with the layout chrome removed. Works on every public URL on this domain.