API and MCP reference

Use Studio’s authenticated API and connect a read-only MCP assistant to the selected workspace.

6 min read

On this page

Studio has an authenticated HTTP API and a hosted read-only MCP server. An organization API key and an assistant connection have different permissions. Keep an organization key on your server.

API address and authentication

The API under the Studio app is https://app.cloutlabs.co/studio/v1. Account → API & MCP → API displays the current API base URL and links to Open API documentation.

The interactive reference is at Studio API documentation; the schema is at OpenAPI JSON.

Account API panel showing the base URL and authorization pattern
Use the API reference for the exact request and response schemas.

An integration uses its workspace’s organization key as Authorization: Bearer authentication. Keys are scoped to that organization. Use a key supplied for your integration; the read-only key created in AI assistants is not a generation key.

This read example uses an environment variable rather than putting a key into a script:

curl --fail --silent --show-error \
  -H "Authorization: Bearer $STUDIO_API_KEY" \
  'https://app.cloutlabs.co/studio/v1/models'

Main endpoints

Paths below are relative to the API base ending in /v1. Read the live schema before implementing writes or the larger workflow payloads.

Method and pathPurpose
GET /meWorkspace identity, recorded usage and credit information.
GET /modelsImage model catalog and request capabilities.
GET /creatorsCreators in the organization.
POST /creatorsCreate a Creator.
GET /creators/{name}Creator status, references and training state.
POST /creators/{name}/runsStart a Creator pipeline run.
DELETE /creators/{name}/runs/{run_id}Cancel the specified run.
GET /creators/{name}/setWorking training dataset.
POST /creators/{name}/set/uploadUpload dataset images.
GET /creators/{name}/lorasPublished trained versions for a Creator.
GET /loras/{lora_id}/downloadDownload a published LoRA.
POST /uploadsUpload one reference image as multipart field file.
POST /generationsQueue an image request; returns HTTP 202.
GET /generationsList recent image requests.
GET /generations/{gen_id}One image request and its results.
GET /generations/{gen_id}/zipDownload that request’s images.
DELETE /generations/{gen_id}Cancel unfinished generation work or delete a completed generation.
GET /threadsActive creation threads.
GET /threads/{thread_id}One thread and its creation history.
GET /libraryLibrary folders, uploads and item metadata.
GET /video-plans/configVideo workflow model configuration.
POST /carousel-planningSubmit an editable storyboard plan.
GET /carousel-planning/{job_id}Check the submitted planning job.

The storyboard planning endpoints remain separate from rendered Carousel Studio sets. For video, editing, batches, carousels, workflows, posting and connectors, the OpenAPI reference provides the complete endpoint families and schemas. Do not treat the short table as a replacement for those payload definitions.

Video and production endpoints

Method and pathPurpose
GET /video-plans/quoteQuote a supported video setup.
POST /video-plansPrepare a video plan and editable prompt.
POST /video-plans/generateQueue the full video workflow; HTTP 202.
POST /video-plans/{plan_id}/renderRender a prepared plan with the reviewed prompt; HTTP 202.
GET /video-plans/renders/{render_id}Inspect a render and its state.
POST /video-plans/renders/{render_id}/retryRetry that render.
GET /video-editor/assetsList video assets.
POST /video-editor/projectsCreate an editing project.
GET /video-editor/projects/{pid}Read a project and revision.
PUT /video-editor/projects/{pid}Save a project against its revision.
POST /video-editor/projects/{pid}/jobsQueue an export; other job kinds depend on server availability.
GET /video-editor/jobs/{jid}Inspect the queued editing job.
GET /batchesList batches.
POST /batchesCreate a source batch.
POST /batches/{bid}/launchLaunch the selected ready work.
PATCH /batches/{bid}/verdictsRecord review decisions.
GET /workflows/catalogRead the node definitions and fields.
POST /workflowsCreate a graph.
PUT /workflows/{wid}Save graph changes.
POST /workflows/{wid}/runsRun the workflow.
GET /workflows/{wid}/runsInspect its runs.
POST /workflows/{wid}/enableChange scheduled activation.
GET /carousel-studioList rendered carousel sets.
GET /carousel-studio/{thread_id}/{run_id}Read the set, sources and take history.
POST /carousel-studio/{thread_id}/{run_id}/slides/{k}/remakeQueue a new take of the selected slide.
POST /carousel-studio/{thread_id}/{run_id}/passQueue missing quality passes.
GET /carousel-slides/{gid}Inspect the saved render recipe.
POST /carousel-slides/{gid}/checkCheck a take for defects.
POST /carousel-slides/{gid}/keepChoose the kept take and image index.
GET /posting/postsList calendar posts.
GET /teams/current/membersList workspace members.
POST /teams/current/invitesCreate a role-scoped invitation.

Video model identifiers are scail-2, wan-3.0, wan-3.0-prime, seedance-2.5 and heygen-video-1. A video plan distinguishes performance (motion or dialogue), mode (faithful, reinterpret or original), source_video, condition_on_source, creator, starting_frame, duration, resolution, aspect_ratio and audio (preserve_source, generate or silent). The count range is 1–4.

The full-generation request also requires request_key and expected_micro_usd. The request key is 16–64 letters, numbers, underscores or hyphens. Quote the chosen setup and follow the current schema before submitting it; do not guess a price or reuse settings from another workflow.

Revisioned edits and idempotent paid submissions have different concurrency rules. Read the endpoint’s required revision or request key, preserve a local edit on conflict, and inspect the existing record after an interrupted response.

Image generation request

POST /generations accepts these fields. Use the image catalog identifiers for model.

FieldDefault and accepted values
modelRequired model identifier.
promptEmpty string by default; at most 32,000 characters.
thread_idOptional existing thread identifier.
slide_ofOptional carousel parent identifier; 32 lowercase hexadecimal characters.
creatorOptional Creator name; one Creator per request.
identity_modeauto, references or lora; default auto.
lora_idOptional published version identifier; must fit the Creator and model.
countDefault 4; from 1 to 8.
aspectDefault 3:4; 16:9, 4:3, 1:1, 3:4 or 9:16.
resolutionDefault 2k; 1k or 2k.
seedDefault null; integer from 0 to 2,147,483,647.
strengthDefault null; API range 0–2, subject to model compatibility.
attachmentsUpload identifiers; at most four.
attachment_rolesUp to four edit_base, scene_reference or pose_reference roles. An edit base must be first and there can be only one.
pose_lockDefault false; depth guidance needs a suitable attachment and LoRA request.
enhanceDefault true; used by the Auto route.

The queued response includes id, thread_id, creator, model, modelName, prompt, params, status, images, error, microUsd, credits, secs, requestedAt, startedAt and finishedAt.

Statuses are queued, running, succeeded, failed and cancelled. Each result image has key, url, w, h, seed and an optional model. Poll the returned identifier to read completion. A 202 response means accepted, not finished.

GET /generations accepts creator, limit and before. The default limit is 60, with a range of 1–200. Use the oldest record’s requestedAt as the before timestamp for the next page.

POST /uploads returns id, url, w and h. Reference files are limited to 25 MB. Use the returned identifier in attachments, not the file’s URL.

Hosted MCP connection

Open Connectors → AI assistants. The hosted address is:

https://mcp-studio.cloutlabs.co/mcp
AI assistants connector with the hosted MCP address and connection controls
Assistant connections read the workspace you authorize on the Clout consent page.

Add that address in an MCP client that supports HTTP and OAuth. Complete the Clout consent page for the workspace you intend to expose. The consent screen identifies the client, team and redirect destination.

The connection is pinned to that team. Switching your active workspace later does not silently move the assistant connection to another team.

The published tool set contains nine read tools. An assistant can read Studio; it cannot generate, post, spend credits, delete or edit content. Use Disconnect on the connection to revoke it.

For a client that takes an authorization header instead, select Other, enter Key name and choose Make a key. The read-only key is shown once. Store it securely and send it as a Bearer header. Do not put the value into prompts, screenshots or shared configuration files.

MCP tools

ToolArguments and result
studio_usageNo arguments; workspace usage and identity.
studio_creatorsNo arguments; available Creators.
studio_modelsNo arguments; image model catalog.
studio_video_modelsNo arguments; supported video workflows, formats and qualities.
studio_threadsNo arguments; active creation threads.
studio_threadthread_id; one thread with image and video history.
studio_generationgeneration_id; request metadata, prepared prompt and results.
studio_recent_imagesOptional creator, limit and before; default limit 20, range 1–200.
studio_libraryNo arguments; folders, uploads and organization metadata.

Errors and integration safety

HTTP statusCheck
400The payload, model compatibility or media input.
401Authentication.
403Workspace access, role or read-only connection restrictions.
404The identifier and the workspace it belongs to.
402Available credits for the requested work.
413Upload size.
429Concurrent generation limit.

Keep write integrations server-side. Check the existing job after a connection interruption before submitting paid work again. For carousel planning, request_key identifies a submission: repeating it with the same payload reuses the job; different settings with that key return 409.