# GET /v1/content/:containerId (/docs/api/reference/content/get-container)



<Endpoint method="GET" path="/v1/content/:containerId" scope="content:read" phase="1" />

Returns the full container record: generation status, approval status, brief, caption, and the rendered media assets. Safe to call while a generation job is in-flight — fields that aren't populated yet are present as `null` or empty arrays. For live progress, prefer [`GET /v1/content/:containerId/progress`](/docs/api/reference/content/get-progress) or [`GET /v1/jobs/:jobId`](/docs/api/reference/jobs/get-job).

## Path parameters [#path-parameters]

<Parameters
  rows="[
  { name: 'containerId', type: 'string (uuid)', required: true, description: 'The container id.' },
]"
/>

## Request [#request]

<Tabs items="['curl', 'TypeScript', 'Python']">
  <Tab value="curl">
    ```sh title="terminal"
    curl https://api.layers.com/v1/content/{containerId} \
      -H "X-Api-Key: $LAYERS_API_KEY"
    ```
  </Tab>

  <Tab value="TypeScript">
    ```ts title="get-container.ts"
    const res = await fetch(
      `https://api.layers.com/v1/content/${containerId}`,
      { headers: { 'X-Api-Key': process.env.LAYERS_API_KEY! } },
    );
    const container = await res.json();
    ```
  </Tab>

  <Tab value="Python">
    ```py title="get_container.py"
    import os, httpx

    r = httpx.get(
        f"https://api.layers.com/v1/content/{container_id}",
        headers={"X-Api-Key": os.environ["LAYERS_API_KEY"]},
    )
    container = r.json()
    ```
  </Tab>
</Tabs>

## Responses [#responses]

<Response status="200" description="Full container record.">
  ```json
  {
    "id": "cnt_01HXZ9...",
    "projectId": "proj_01HX...",
    "status": "completed",
    "format": "video_remix",
    "brief": {
      "topic": "Your first 30 days of running",
      "angle": "habit-building",
      "cta": "Start today.",
      "valuePropositions": ["consistency", "beginner-friendly"]
    },
    "caption": "Thirty days, one run at a time…",
    "firstComment": null,
    "assets": [
      {
        "assetId": "ast_01HXZ9...",
        "kind": "video",
        "url": "https://media.layers.com/.../ast_01HXZ9/video.mp4",
        "thumbnailUrl": "https://media.layers.com/.../ast_01HXZ9/thumb.jpg",
        "durationMs": 9200,
        "width": 1080,
        "height": 1920,
        "mimeType": "video/mp4",
        "sizeBytes": 1843200,
        "checksumSha256": "e3b0c44298fc1c..."
      }
    ],
    "approvalStatus": "approved",
    "createdAt": "2026-04-17T13:10:00Z",
    "completedAt": "2026-04-17T13:14:22Z",
    "failedAt": null,
    "lastError": null
  }
  ```
</Response>

<Response status="404" description="Container not in this org.">
  ```json
  { "error": { "code": "NOT_FOUND", "message": "Container not found.", "requestId": "req_..." } }
  ```
</Response>

## Container status [#container-status]

<Parameters
  title="Container status"
  rows="[
  { name: 'queued', type: 'status', description: 'Created, awaiting the generator.' },
  { name: 'generating', type: 'status', description: 'Generation in-flight. Assets populate on completion.' },
  { name: 'completed', type: 'status', description: 'Ready to approve and schedule.' },
  { name: 'failed', type: 'status', description: 'See `lastError.code` and `lastError.message`. Regenerate to retry.' },
  { name: 'canceled', type: 'status', description: 'Workflow was canceled. Regenerate to try again.' },
]"
/>

## Approval status [#approval-status]

<Parameters
  title="Approval status"
  rows="[
  { name: 'not_required', type: 'status', description: 'Project policy does not require approval — content can be scheduled immediately.' },
  { name: 'pending', type: 'status', description: 'Default when the project requires approval. Blocks scheduling.' },
  { name: 'approved', type: 'status', description: 'Cleared for scheduling and publishing.' },
  { name: 'rejected', type: 'status', description: 'Blocked from scheduling. Regenerate to try again.' },
]"
/>

## Errors [#errors]

| Code              | When                          |
| ----------------- | ----------------------------- |
| `NOT_FOUND`       | Container id not in this org. |
| `FORBIDDEN_SCOPE` | Key lacks `content:read`.     |

## See also [#see-also]

* [List containers on a project](/docs/api/reference/content/list-containers)
* [Fetch a signed asset URL](/docs/api/reference/content/get-asset)
* [Approve a container](/docs/api/reference/approval/approve-content)
* [Schedule publishing](/docs/api/reference/publishing/schedule-content)
