> For the complete documentation index, see [llms.txt](https://docs.videograph.ai/llms.txt).
> Use it to discover all available pages before exploring further.

# Managing Video Content

Understand the fields returned after creating VOD content, and how they help you track processing status and enable playback flows.

## Overview

After you upload or create a video through the API, the service responds with a structured content object. This object includes identifiers, lifecycle status, metadata fields, and playback‑related properties you will reference in later requests. The screenshot below shows the Videograph dashboard where you can manage created assets including clips, thumbnails, subtitles, and metadata.

<Image src="https://blob-cdn.documentation.ai/org-b713c195-07b6-46aa-b0f6-7e28b1a72b11/doc-dbecd5b1-e16f-4af5-9dff-ae113c6cd9de/1765360531985-ylhp7kp7lio-pasted-image-1765360530301.png?q=85&fm=auto&auto=compress%2Cformat" width="1344" height="479" alt="" priority={true} fetchPriority="high" />

This page explains the key fields from the creation response and how they fit into the broader workflow. For guidance on uploading, see [Uploading Videos (Dashboard & API)](/vod-uploading-ingesting). For playback usage, see [Playing Videos (Web & App Integration)](/web-sdk-player).

## Example creation response

The following response reflects what you receive immediately after a successful content creation request. Values may vary depending on your workflow.

<Request show-lines="true" tabs={[]}>
  ```json
  {
    "code": 200,
    "data": {
      "contentId": "fa6d3dc8-c78c-4c67-98ef",
      "created_at": 1673353801033,
      "description": "",
      "duration": 0,
      "metadata": [],
      "mp4_support": true,
      "playbackPolicy": [
        "public"
      ],
      "save_original_copy": false,
      "status": "Pending",
      "statusId": 1,
      "test_video": true,
      "title": "Demo Video"
    },
    "message": "Data success",
    "status": "Success"
  }
  ```
</Request>

## Core identifiers

These fields uniquely identify the asset and anchor all future operations.

<ExpandableGroup>
  <Expandable title="contentId" default-open="false">
    The stable identifier for the VOD asset. Use this value when checking processing status, updating metadata, or generating playback information.
  </Expandable>

  <Expandable title="created_at" default-open="false">
    A timestamp (milliseconds) marking when the asset record was created. This can be used for sorting or catalog operations.
  </Expandable>
</ExpandableGroup>

## Metadata and descriptive fields

These fields help you label and organize the asset. They generally reflect information supplied at creation time.

<ExpandableGroup>
  <Expandable title="title" default-open="false">
    The user‑visible name of the asset, shown in dashboards and typically displayed in playback interfaces.
  </Expandable>

  <Expandable title="description" default-open="false">
    Optional descriptive text for cataloging or UI display.
  </Expandable>

  <Expandable title="metadata" default-open="false">
    A list intended for custom structured values you supply. Common uses include categorization, editorial notes, or workflow flags.
  </Expandable>

  <Expandable title="duration" default-open="false">
    Initially set to `0`. Once processing finishes, this updates to the actual media duration in seconds.
  </Expandable>
</ExpandableGroup>

## Processing and readiness status

The service begins preparing your video as soon as the content record is created. These fields tell you whether the asset is ready to play.

<Callout kind="info" collapsed="false">
  After creation, the asset often begins in `Pending` or `Preparing`. Most workflows check status before generating or using playback URLs.
</Callout>

<Response show-lines="true" tabs={[]}>
  ```json
  {
    "status": "Pending",
    "statusId": 1
  }
  ```
</Response>

### How to use these fields

- Poll the content endpoint (see the API reference) using the `contentId`.

- When status transitions to a ready value, duration and playback assets become available.

- You can then allow clients, apps, or services to request playback URLs.

## Playback‑related properties

These fields control or describe how playback can occur later.

<ExpandableGroup>
  <Expandable title="playbackPolicy" default-open="false">
    An array of policy rules such as `public`, which determines who can retrieve playback URLs. Policies map directly to player authorization requirements.
  </Expandable>

  <Expandable title="mp4_support" default-open="false">
    Indicates whether the service will generate an MP4 rendition for direct file delivery.
  </Expandable>

  <Expandable title="save_original_copy" default-open="false">
    Specifies whether the original uploaded media file is retained.
  </Expandable>

  <Expandable title="test_video" default-open="false">
    A flag that identifies whether the asset was created using a test or sample flow.
  </Expandable>
</ExpandableGroup>

## Using the content object in your workflow

The creation response enables the two most common next steps:

<Steps>
  <Step title="Check status" icon="server" title-type="p">
    Query the asset using the `contentId` until `status` indicates readiness. Refer to [Monitoring Processing & Content Status](/analytics-overview) for related concepts.
  </Step>

  <Step title="Play the video" icon="play" title-type="p">
    Once the asset is ready, request playback URLs according to your `playbackPolicy`. Integration details are available in [Playing Videos (Web & App Integration)](/web-sdk-player).
  </Step>
</Steps>

<Callout kind="success" collapsed="false">
  The creation response is your source of truth for tracking the asset from upload to playback. Keep the `contentId` available in your application or workflow to streamline later calls.
</Callout>

