---
title: "List render and task capabilities"
method: GET
path: "/v1/capabilities"
tags: ["capabilities"]
---

# List render and task capabilities

`GET /v1/capabilities`

## Request

- Base URL: `https://api.framelane.io`
- URL: `https://api.framelane.io/v1/capabilities`
- Auth: none declared

Return the catalog of everything an agent can use in a render or task —
effects, motions, transitions, output/input formats, element types, task
parameters, and global limits — each flagged with whether it is supported today.

## Response `200`

Successful Response

- CapabilitiesResponse: The full capability catalog returned by ``GET /v1/capabilities``.
  - `api_version` string, required: API build version this catalog reflects.
  - `skills` object: The published workflow corpus keyed by skill name: its description, verification status, Markdown content and content hash.
  - `violation_codes` object[]: Every lint code a preview or render receipt can report.
  - `onboarding` Onboarding, required: How an agent provisions its own access — the discover→signup→verify→render loop. Surfaced here (unauthenticated) so a capabilities-first agent can go from finding Framelane to holding a working key without a human or reading prose docs.
    - `self_serve` boolean, required: Whether an agent can provision access itself.
    - `summary` string, required: One-line description of the provisioning flow.
    - `steps` OnboardingStep[], required: Ordered steps to obtain a working key.
      - `method` string, required: HTTP method, e.g. `POST`.
      - `path` string, required: Endpoint path, e.g. `/v1/signup`.
      - `auth_required` boolean, required: Whether this step needs an API key.
      - `description` string, required: What this step does.
    - `action_mcp_url` string, required: Authenticated MCP action server. After obtaining a key (via the REST steps above), connect here to drive renders/tasks/projects as MCP tools.
    - `action_mcp_auth` string, required: How to authenticate to the action MCP (Bearer key, or OAuth via Clerk).
    - `docs` OnboardingDocs, required: Static, account-free documentation channels for agents (no docs-search MCP).
      - `llms_txt` string, required: Concise agent index (llmstxt.org convention).
      - `skill` string, required: Installable, self-contained capability guide.
      - `raw_markdown` string, required: How to fetch any docs page as raw markdown (append `.md`).
    - `verification_gates_usage` boolean, required: If true, an unverified workspace's key is rejected on every authed call (`403 email_not_verified`), so an agent cannot spend before verifying.
    - `free_plan` string, required: What a newly signed-up (free) workspace can do.
  - `output_formats` OutputFormatCap[], required
    - `value` string, required: The `output_format` value.
    - `description` string, required: What this format produces.
    - `supported` boolean, required: Whether the renderer can emit this format today.
    - `alpha_capable` boolean, required: Whether it can carry a transparent (alpha) channel.
  - `input_formats` InputFormatCap[], required
    - `extension` string, required: Canonical file extension (no leading dot).
    - `mime_type` string, required: Accepted MIME type for uploads/ingest.
    - `kind` string, required: Media category: video, audio, image, or font.
  - `element_types` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `element_schemas` object, required: Full JSON Schema for every field each element type accepts, keyed by element type value (e.g. 'text', 'video') — everything `element_types` doesn't cover (accepted fields, types, defaults, constraints, enum options), including nested sub-objects like `motion`/`effects`/`word_animation` inlined under each entry's own `$defs`. Generated directly from the same Pydantic models the API validates requests against, so it can't drift out of sync.
  - `request_schema` object, required: Full JSON Schema of the render request body itself — the composition-level surface `element_schemas` doesn't cover: `groups` (transform groups, nesting, stack layout), `custom_animations` (inline keyframe animation registries), `motion_blur`, `background_gradient`, `transitions`, canvas and output settings. The `elements` array's per-type schemas are NOT duplicated here — read them from `element_schemas`. Generated from the same Pydantic model the API validates against, so it can't drift out of sync.
  - `blocks` object: Self-contained JSON Schema per block, keyed by block name (e.g. 'geometry', a shape element's `geometry`): each carries only the `$defs` it reaches, so one block can be read without its element schema. Generated from the same Pydantic models the API validates against.
  - `registry` object: The property registry an operation's `property` names (render-node's, vendored and hash-checked): `properties` maps each path to its value type, unit, range, clamp, phase, composites, element kinds and drawn kinds; `aliases` maps alias spellings to paths; `lint_codes` names the path diagnostics; `fnv1a64` is the registry's hash.
  - `shaders` ShaderCaps, required: Runtime shaders (render-node AEC §2, GVR SH7): SkSL source in, the engines' compiled variants out, run by any effect chain that names the shader's id.
    - `compiler_available` boolean, required: Whether `POST /v1/shaders` can compile on this deployment; while false it answers 503 `shader_compiler_unavailable`.
    - `renders` boolean, required: Whether this deployment sends `effects[].shader` to the engine (a v5 task); while false such an effect is refused with `unsupported_feature`.
    - `entry` object, required: JSON Schema of `effects[].shader`.
    - `element_types` string[], required: Element types whose `effects` take a `shader`.
    - `param_types` object, required: Each param type and how a value of it is spelled.
    - `limits` object, required: The engines' limits (RuntimeShaderLimits.h), which the compiler enforces too.
    - `flow` string[], required: The authoring loop, in order.
    - `prelude` object, required: What a source may use beside its params, each with its meaning: `uniforms`, `functions`, and `jitter`, the aliases of Jitter's dialect (a `jitterMain` entry).
  - `effects` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `motions` MotionCap[], required
    - `value` string, required: The motion preset value.
    - `description` string, required: What this motion does.
    - `supported` boolean, required: True if any scope/direction is supported.
    - `element_entrance` boolean, required: Supported as an entrance animation on a non-text element (video, image, shape, group).
    - `element_exit` boolean, required: Supported as an exit animation on a non-text element.
    - `character` boolean, required: Supported as a per-glyph (character-scope) text animation.
    - `text_block` boolean, required: Supported on a text element as a whole-block animation (`scope: element`). Text and non-text elements draw from two different renderer animation sets, so a preset can be usable on one and not the other.
  - `transitions` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `word_animations` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `blend_modes` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `easings` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `motion_scopes` EnumValueCap[], required
    - `value` string, required: The enum value to send in a request.
    - `description` string, required: What this value does.
    - `supported` boolean, required: Whether the renderer honors this value today.
  - `task_types` TaskTypeCap[], required
    - `value` string, required: The task type — call `POST /v1/tasks/{value with - for _}`.
    - `description` string, required: What this task does.
    - `provider` string, required: Backend that runs it: `renderer` or `assemblyai`.
    - `params` ParamSpec[], required: Tunable parameters and their constraints.
      - `name` string, required: Parameter name in the task request body.
      - `type` string, required: JSON type: string, number, integer, boolean, array, or enum.
      - `required` boolean, required: Whether the parameter must be supplied.
      - `minimum` number, nullable: Inclusive lower bound, if numeric.
      - `maximum` number, nullable: Inclusive upper bound, if numeric.
      - `default` unknown
      - `options` string[], nullable: Allowed values, for enum params.
      - `description` string, nullable: What the parameter controls.
  - `limits` Limits, required
    - `canvas_min` integer, required: Minimum output width/height in pixels.
    - `canvas_max` integer, required: Maximum output width/height in pixels.
    - `frame_rate_min` integer, required: Minimum frames per second.
    - `frame_rate_max` integer, required: Maximum frames per second.
    - `frame_rate_default` integer, required: Frame rate used when omitted.
    - `max_source_bytes` integer, required: Maximum size of a single source/upload file.
    - `pagination_default_limit` integer, required: Default page size on list endpoints.
    - `pagination_max_limit` integer, required: Maximum page size on list endpoints.
  - `rate_limits` RateLimit[], required
    - `scope` string, required: Which action this limit applies to.
    - `limit` integer, required: Maximum requests allowed per window.
    - `window_seconds` integer, required: Length of the rate-limit window in seconds.

---

[API](https://skmtc.dev/framelane/apis/framelane-api.md) · [All operations](https://skmtc.dev/framelane/apis/framelane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/framelane/apis/framelane-api/revisions/a223001ca8e5?raw)
