---
title: "Get a component's source"
method: GET
path: "/v1/components/{id}/source"
tags: ["components"]
---

# Get a component's source

`GET /v1/components/{id}/source`

## Request

- Base URL: `https://api.cueframe.ai`
- URL: `https://api.cueframe.ai/v1/components/{id}/source`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.cueframe.ai/api/auth/mcp/authorize`, token URL `https://api.cueframe.ai/api/auth/mcp/token`, scopes: `projects:read`)
  - API key in header `PAYMENT-SIGNATURE`

Required permission: projects:read

## Path parameters

- `id` string, required

## Query parameters

- `builtinCollection` 'native' | 'curated-definitions'
- `sourceVersionId` string

## Response `200`

Component source snapshot (native template, or a retired TSX module) + ownership provenance.

- ComponentSourceResponse: Installed component SOURCE snapshot + ownership provenance per §Components. tsxSource is present for a retired TSX (version 3) snapshot and a historical version 2 source.
  - `tsxSource` string
  - `name` string
  - `description` string
  - `propSchema` object, required
  - `origin` 'customer-owned' | 'server-native'
  - `ejectedFrom` string
  - `tokens` object
  - `examples` object[]: Usage examples, as authored. A built-in primitive projects {name, mood?, params?, description?}; an authored component's examples are whatever it wrote, which is why the item is open. One shape for both directions: what you write here is what you read back.
  - `durationInFrames` number
  - `manifest` union, required
    - ComponentManifestV4
      - `version` 4, required
      - `runtime` 'hyperframes', required
      - `hfContract` 1, required
      - `kind` 'scene', required
      - `sceneShot` object
        - `version` 2, required
      - `assets` object, required
      - `graphics` object, required
        - `api` 'canvas2d' | 'webgl' | 'webgl2' | 'webgpu', required
        - `required` true, required
        - `accelerationPreference` 'hardware-preferred' | 'software-allowed', required
      - `alphaPolicy` 'requires-transparency' | 'allows-opaque', required
    - ComponentManifestV2
      - `version` 2, required
      - `assets` object, required
      - `graphics` object, required
        - `api` 'canvas2d' | 'webgl' | 'webgl2' | 'webgpu', required
        - `required` true, required
        - `accelerationPreference` 'hardware-preferred' | 'software-allowed', required
      - `alphaPolicy` 'requires-transparency' | 'allows-opaque', required
      - `sceneShot` object
        - `version` 2, required
      - `visualMedia` object
        - `version` 1, required
  - `id` string, required
  - `source` 'default' | 'installed', required
  - `metadataStatus` 'unresolved': Historical source-only reads omit unavailable discovery name/description instead of borrowing current metadata.
  - `sourceVersionId` string, required: Exact immutable source pin; distinct from bundle revisions.
  - `sourceSnapshot` union, required: Immutable source snapshot: a version 4 template, a retired version 3 TSX module, or the historical version 2 source of a component stored before versioned sources (read-only; it never executes). source remains provenance.
    - object
      - `version` 3, required
      - `componentId` string, required
      - `tsxSource` string, required
      - `manifest` object, required
        - `version` 2, required
        - `assets` object, required
        - `graphics` object, required
          - `api` 'canvas2d' | 'webgl' | 'webgl2' | 'webgpu', required
          - `required` true, required
          - `accelerationPreference` 'hardware-preferred' | 'software-allowed', required
        - `alphaPolicy` 'requires-transparency' | 'allows-opaque', required
        - `sceneShot` object
          - `version` 2, required
        - `visualMedia` object
          - `version` 1, required
      - `definition` object, required
        - `inputSchema` object, required
        - `defaults` object, required
        - `brandBindings` object[], required
          - `propPath` string, required
          - `cssVar` string, required
          - `fallback` string
          - `brandKitPath` string
        - `timing` object, required
          - `defaultDuration` object, required
            - `frames` integer, required
            - `fps` number, required
          - `minDurationSec` number
          - `maxDurationSec` number
        - `capabilities` union[], required
          - union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - `mediaBindings` object[]
          - `name` string, required
          - `propPath` string[], required
          - `kind` 'image' | 'video' | 'visual', required
          - `collection` 'scalar' | 'array', required
          - `cardinality` object, required
            - `min` integer, required
            - `max` integer
          - `mimeTypes` string[]
          - `mediaDemand` union
            - object
              - …
            - object
              - …
            - object
              - …
        - `preview` object
          - `params` object
          - `format` Format
            - `aspectRatio` '16:9' | '9:16' | '1:1' | '4:5', required
            - `fps` union
              - …
            - `resolution` 'hd' | 'fhd' | '4k'
            - `platform` string
          - `assets` object
          - `mediaBindings` object
    - object
      - `version` 4, required
      - `componentId` string, required
      - `template` string, required
      - `manifest` object, required
        - `version` 4, required
        - `runtime` 'hyperframes', required
        - `hfContract` 1, required
        - `kind` 'scene', required
        - `sceneShot` object
          - `version` 2, required
        - `assets` object, required
        - `graphics` object, required
          - `api` 'canvas2d' | 'webgl' | 'webgl2' | 'webgpu', required
          - `required` true, required
          - `accelerationPreference` 'hardware-preferred' | 'software-allowed', required
        - `alphaPolicy` 'requires-transparency' | 'allows-opaque', required
      - `definition` object, required
        - `inputSchema` object, required
        - `defaults` object, required
        - `brandBindings` object[], required
          - `propPath` string, required
          - `cssVar` string, required
          - `fallback` string
          - `brandKitPath` string
        - `timing` object, required
          - `defaultDuration` object, required
            - `frames` integer, required
            - `fps` number, required
          - `minDurationSec` number
          - `maxDurationSec` number
        - `capabilities` union[], required
          - union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - `mediaBindings` object[]
          - `name` string, required
          - `propPath` string[], required
          - `kind` 'image' | 'video' | 'visual', required
          - `collection` 'scalar' | 'array', required
          - `cardinality` object, required
            - `min` integer, required
            - `max` integer
          - `mimeTypes` string[]
          - `mediaDemand` union
            - object
              - …
            - object
              - …
            - object
              - …
        - `preview` object
          - `params` object
          - `format` Format
            - `aspectRatio` '16:9' | '9:16' | '1:1' | '4:5', required
            - `fps` union
              - …
            - `resolution` 'hd' | 'fhd' | '4k'
            - `platform` string
          - `assets` object
          - `mediaBindings` object
    - object
      - `version` 2, required
      - `componentId` string, required
      - `tsxSource` string, required
      - `manifest` object, required
        - `version` 2, required
        - `assets` object, required
        - `graphics` object, required
          - `api` 'canvas2d' | 'webgl' | 'webgl2' | 'webgpu', required
          - `required` true, required
          - `accelerationPreference` 'hardware-preferred' | 'software-allowed', required
        - `alphaPolicy` 'requires-transparency' | 'allows-opaque', required
        - `sceneShot` object
          - `version` 2, required
        - `visualMedia` object
          - `version` 1, required

## Other responses

- `400`: Bad request — validation_error / invalid_cursor / invalid_query.
- `401`: Missing or invalid Authorization header.
- `402`: Payment required. Returned when the caller presents no API key on a priced operation: the body AND the `Payment-Required` header carry the x402 v2 challenge (accepted scheme, network, USDC asset, amount, payTo). Sign the EIP-3009 authorization and retry with a `PAYMENT-SIGNATURE` header. A KEYED caller sees this status instead when their plan lacks or has exhausted the feature (`billing_required`).
- `403`: Forbidden — permission insufficient.
- `404`: Resource not found.
- `422`: Unprocessable — invalid_composition / media_in_use / session_in_use / render_not_cancellable.
- `429`: Rate limited. Retry-After header present.
- `500`: Internal error.

---

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