# Autostud -- full agent reference > 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. API version: 2026-08-14. Agent surface: 2026-08-18. Everything below is generated from the live registries. ## 1. Two ways to connect ### Model Context Protocol (recommended) https://autostud.ai/api/mcp Hosted Model Context Protocol server. Ten generic, self-describing tools that cover the entire API surface -- the client discovers resources and actions at runtime instead of carrying a tool list that drifts. Auth: Bearer , or `?key=` on the URL for clients that only accept a URL. Tools: whoami, catalog, describe, list_records, get_record, create_record, update_record, delete_record, run_action, api_request. Ten tools cover 22 resources and 75 actions -- call `catalog` and `describe` instead of assuming a shape. Client setup: - Claude Code claude mcp add --transport http autostud https://autostud.ai/api/mcp --header "Authorization: Bearer sk_live_..." - Claude Desktop / claude.ai Settings > Connectors > Add custom connector > https://autostud.ai/api/mcp?key=sk_live_... - Cursor {"mcpServers":{"autostud":{"url":"https://autostud.ai/api/mcp?key=sk_live_..."}}} - OpenAI Responses API {"type":"mcp","server_label":"autostud","server_url":"https://autostud.ai/api/mcp","headers":{"Authorization":"Bearer sk_live_..."}} ### REST https://autostud.ai/api/v1 Scoped REST API. Uniform envelopes, cursor pagination, JSON/NDJSON/CSV, idempotency keys, batch and bulk endpoints, and signed webhooks for everything that finishes asynchronously. Auth: Authorization: Bearer sk_live_... (or X-Api-Key). `sk_test_` keys run the full request and stop before any write, credit spend or webhook. Spec: https://autostud.ai/api/v1/openapi.json Errors: https://autostud.ai/docs/api/errors Get a key at https://autostud.ai/app/settings/api-keys, or an MCP URL with the key embedded at https://autostud.ai/app/settings/mcp. ## 2. Quickstart 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 Minimal HTTP example -- source video in, subtitled mp4 out: curl -X POST https://autostud.ai/api/v1/actions/videos.create \ -H "Authorization: Bearer sk_live_..." \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{"title":"demo"}' ## 3. Rules of engagement - 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. ## 4. Resources (22) Read and written with `list_records` / `get_record` / `create_record` / `update_record` / `delete_record`, or `GET|POST|PATCH|DELETE /api/v1/`. Scopes are `:read`, `:write`, `:delete`. - **videos** (list, get, create, update, delete) -- Videos. Video projects with their timeline, blocks and generation settings. - **folders** (list, get, create, update, delete) -- Folders. Folders organising videos and playground generations. - **assets** (list, get, create, delete) -- Assets. Files uploaded to the workspace library. - **characters** (list, get, create, update, delete) -- Characters. Recurring characters with their visual and voice configuration. - **agents** (list, get, create, update, delete) -- Agents. Image and video generation agents. - **flows** (list, get, create, update, delete) -- Flows. Automation flows: nodes, edges and variables. - **slideshows** (list, get, create, update, delete) -- Slideshows. Slideshow projects and their slides. - **templates** (list, get, create, update, delete) -- Video templates. Saved video templates. - **video_styles** (list, get, create, update, delete) -- Video styles. Reusable style presets applied to timelines. - **smart_group_configs** (list, get, create, update, delete) -- Smart group configs. Custom smart-group definitions used by the timeline editor. - **custom_video_types** (list, get, create, update, delete) -- Custom video types. User-defined video types available in the editor. - **generations** (list, get) -- AI generations. Every AI generation billed to the workspace: image, video, audio, music. - **music** (list, get) -- Music generations. AI song generations and their tracks. - **scheduled_posts** (list, get, create, update, delete) -- Scheduled posts. Posts queued for publication on connected social accounts. - **social_accounts** (list, get) -- Social accounts. Connected publishing destinations. Read-only: connect them from the dashboard. - **renders** (list, get) -- Renders. Render jobs and their output files. Start one with the `renders.create` action — it charges credits. - **voices** (list, get) -- Voices. The voice catalog: the shared global library plus the workspace and personal voices. - **character_tags** (list, get, create, update, delete) -- Character tags. Tags used to organise characters. - **agent_executions** (list, get) -- Agent executions. History of agent runs with their prompt, variables and result. - **flow_executions** (list, get) -- Flow executions. Flow runs: status, node states, execution path and credits consumed. - **credit_transactions** (list, get) -- Credit transactions. Every credit movement of the workspace: what was charged, by whom, for what. - **playground_generations** (list, get, update, delete) -- Playground generations. Images and videos generated from the playground gallery. Call `describe { resource }` or read the OpenAPI spec for the exact fields, filters and sort keys of any of them. ## 5. Actions (75) Everything the platform *does*. One call each: `run_action { action, input }` over MCP, or `POST /api/v1/actions/`. Actions marked (credits) debit the workspace balance. ### renders - `renders.create` (credits) -- Queues a render for a video and returns the render job. - `renders.list` -- Render jobs with their status and output URLs. - `renders.delete` -- Deletes a render job and its output reference. ### videos - `videos.create` -- Creates a video through the dashboard controller: applies the template, defaults and workspace stamping. - `videos.update` -- Validated update of a video document (same Joi schema as the editor). - `videos.generate_layer_audio` (credits) -- Generates the audio of one timeline layer and syncs its timing. - `videos.launch_flow` (credits) -- Runs the end-to-end video flow (generation pipeline) for a video. ### timeline - `timeline.generate_audio` (credits) -- Generates the voice-over of a block/group and runs Whisper alignment. - `timeline.generate_questions` (credits) -- Writes quiz questions for a video from a topic or keyword. - `timeline.sync_voice` -- Recomputes block durations from the audio sequence. - `timeline.whisper_analyze` (credits) -- Word-level transcription and timing for an audio file. - `timeline.analyze_subtitles` (credits) -- Builds subtitle groups from a transcription. - `timeline.translate_subtitles` (credits) -- Translates a subtitle track into a target language. - `timeline.hydrate_tu_preferes` (credits) -- Fills a would-you-rather timeline with generated questions and media. ### subtitles - `subtitles.generate` (credits) -- Transcribes 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`. ### images - `images.generate` (credits) -- Runs an image agent and bills the workspace. ### videos_ai - `videos_ai.generate` (credits) -- Runs a video agent (Veo, Kling, Sora, Seedance...) and bills the workspace. - `videos_ai.extend` (credits) -- Extends a generated video by another segment. ### agents - `agents.execute` (credits) -- Runs any configured agent with its prompt template and variables. - `agents.executions` -- History of agent runs with their outputs. ### generations - `generations.launch` (credits) -- The playground pipeline: prompt in, image or video out, billed and stored. ### music - `music.generate` (credits) -- Creates a Suno song from a prompt, lyrics or a style brief. - `music.get_task` -- Status and tracks of a music generation. ### characters - `characters.generate_image` (credits) -- Generates a consistent image of a character. - `characters.smart_variants` (credits) -- Generates a batch of consistent variants for a character. ### faceless - `faceless.generate_story` (credits) -- Writes the script of a faceless video from a prompt. - `faceless.generate_outline` (credits) -- Produces the act/scene outline before the full script. - `faceless.parse_script` (credits) -- Splits a script into scenes ready for the faceless engine. - `faceless.generate_audio` (credits) -- Generates the voice-over of one or more scenes. - `faceless.generate_video` (credits) -- Generates the visual of a faceless scene (image or video model). - `faceless.check_status` -- Status of a running faceless scene generation. - `faceless.analyze_url` (credits) -- Extracts a usable brief from an article or video URL. - `faceless.detect_characters` (credits) -- Finds recurring characters and proposes consistent prompts. ### smart_groups - `smart_groups.generate` (credits) -- Builds a smart group (quiz, ranking, dialogue...) inside a video. - `smart_groups.action` (credits) -- Executes one of a smart group's declared actions. - `smart_groups.create_qcm` -- Creates a multiple-choice question group from a question set. ### tools - `tools.generate_from_prompt` (credits) -- The one-shot tool: a prompt in, a ready video project out. - `tools.image_to_prompt` (credits) -- Turns an image into a reusable generation prompt. - `tools.remove_background` (credits) -- Returns a cut-out version of the image. - `tools.image_modification` (credits) -- Applies an instruction-based edit to an image. - `tools.image_crop` -- Crops or reframes an image to a target format. - `tools.reddit_post_to_video` (credits) -- Fetches a Reddit post and turns it into a video project. - `tools.youtube_to_karaoke` (credits) -- Builds a karaoke video composition from a YouTube URL. - `tools.read_comments` (credits) -- Fetches the comments of a TikTok or Instagram post. - `tools.write_lyrics` (credits) -- Turns comments into song lyrics, each line keeping its comment id. - `tools.variant_analyze` (credits) -- Analyses a media variant and reports what it contains. ### slideshows - `slideshows.generate` (credits) -- Generates the visuals of every pending slide. - `slideshows.export` (credits) -- Exports the finished slideshow. ### flows - `flows.execute` (credits) -- Runs an automation flow and returns its execution. - `flows.executions` -- Execution history of a flow. ### publishing - `publishing.schedule_post` (credits) -- Queues a video for publication on a connected account. - `publishing.calendar` -- Scheduled posts grouped by day. ### account - `account.credits` -- Current credit balance of the workspace. - `account.limits` -- Plan limits and current consumption. - `account.credit_history` -- Credit movements, newest first. ### image_agents - `image_agents.list` -- Image agents configured for the workspace. - `image_agents.create` -- Creates an image agent with its model and default parameters. - `image_agents.update` -- Updates an image agent. - `image_agents.delete` -- Deletes an image agent. - `image_agents.generate` (credits) -- Starts an image generation job. Poll `image_agents.status` for the result. - `image_agents.status` -- Status of one or more image generation jobs. ### app_screenshots - `app_screenshots.list` -- App-screenshot projects of the workspace. - `app_screenshots.create` -- Creates an app-screenshot project. - `app_screenshots.update` -- Updates an app-screenshot project. - `app_screenshots.delete` -- Deletes an app-screenshot project. - `app_screenshots.generate` (credits) -- Generates one app-store screenshot from a project. ### voice_projects - `voice_projects.list` -- Bulk text-to-voice projects. - `voice_projects.create` -- Creates a bulk text-to-voice project. - `voice_projects.update` -- Updates a bulk text-to-voice project. - `voice_projects.delete` -- Deletes a bulk text-to-voice project. ### playground - `playground.random_prompt` (credits) -- Generates an image prompt from a theme, for exploration. - `playground.image_to_prompt` (credits) -- Turns an image into the prompt that would produce it. ### instructions - `instructions.generate` (credits) -- Writes the instruction set driving a generation from a brief. - `instructions.generate_with_news` (credits) -- Same, seeded with fresh news on the topic. ### assets - `assets.static_library` -- The platform-provided asset library (backgrounds, overlays, sounds). ## 6. Asynchronous results Renders, generations, music and scheduled posts finish on a worker, not in the request. Two ways to learn about it: - Poll: `GET /api/v1/renders?video_id=...` until `status` is `done`, then read `render_url`. - Subscribe: `POST /api/v1/webhooks` with an https URL. Deliveries are signed `t=,v1=` (HMAC-SHA256 over `"."`), retried 5 times over about two hours. The catalogue of events is at `GET /api/v1/events`. ## 7. Product pages - TikTok Quiz Video Generator -- Turn any topic into a quiz video https://autostud.ai/tools/tiktok-quiz-video-generator - YouTube Quiz Video Generator -- Quiz videos in 16:9 or Shorts https://autostud.ai/tools/youtube-quiz-video-generator - Language Quiz Video Generator -- Turn a word list into a language video https://autostud.ai/tools/language-learning-quiz-video-generator - Tweet to Video -- Turn tweets & X posts into videos https://autostud.ai/tools/tweet-to-video - YouTube to Karaoke Video -- Turn any track into a karaoke video https://autostud.ai/tools/youtube-to-karaoke-video - Reddit Post to Video -- Turn a Reddit thread into a short https://autostud.ai/tools/reddit-post-to-video - CSV to Leaderboard Video -- Turn a spreadsheet into a ranking video https://autostud.ai/tools/csv-to-video-leaderboard - TikTok Comments to Song Video -- Turn a comment section into a song video https://autostud.ai/tools/tiktok-comments-to-ai-video-song - AI Fruit Videos -- Create viral fruit quiz videos with AI https://autostud.ai/tools/ai-fruit-videos - Automatic Video Subtitles -- Word-by-word subtitles on any video https://autostud.ai/tools/automatic-video-subtitles Every page on this domain is also available as Markdown: send `Accept: text/markdown`, or append `.md` to any URL.