---
title: "Get node media"
method: GET
path: "/forms/{formId}/nodes/{nodeId}/media"
tags: ["node-media"]
---

# Get node media

`GET /forms/{formId}/nodes/{nodeId}/media`

## Request

- Base URL: `https://api.clipform.io/v1`
- URL: `https://api.clipform.io/v1/forms/{formId}/nodes/{nodeId}/media`
- Auth: HTTP bearer

Returns the media attached to a node.

## Path parameters

- `formId` string, uuid, required
- `nodeId` string, uuid, required

## Response `200`

Media details (or null if no media)

- object
  - `media` NodeMedia, nullable
    - `id` string, uuid
    - `media_type` 'video' | 'still'
    - `media_source` 'uploaded' | 'recorded'
    - `status` 'ready' | 'processing' | 'errored'
    - `playback_id` string, nullable: Playback ID (video only)
    - `storage_path` string, nullable: Stored file path (image only)
    - `background_color` string, nullable: CSS color/gradient (still color)
    - `audio_storage_path` string, nullable: Optional audio for stills (auto-plays, no controls)
    - `duration` integer, nullable: Video duration in seconds
    - `video_width` integer, nullable
    - `video_height` integer, nullable
    - `options_reveal_seconds` number, nullable: Seconds to wait after video starts before answer options appear (null = viewer default 3s, 0 = immediate)
    - `transcription_status` 'pending' | 'processing' | 'completed' | 'failed' | 'skipped'
    - `created_at` string, date-time

## Other responses

- `429`: Rate limit exceeded.

---

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