---
title: "Create content"
method: POST
path: "/content/create"
tags: ["Content"]
---

# Create content

`POST /content/create`

## Request

- Base URL: `https://app.uselamina.ai/v1`
- URL: `https://app.uselamina.ai/v1/content/create`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Compatibility high-level endpoint over the frozen AgentPlan lifecycle. Interactive calls return questions, route choices, or an approval-ready plan without spending generation credits. Set headless=true only with an Idempotency-Key header and positive maxCredits to execute an approval-ready plan.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `brief` string, required: What content to create
  - `platform` string, nullable: Target platform
  - `modality` 'image' | 'video' | 'audio', nullable: Content modality (image, video, or audio)
  - `brandProfileId` string, uuid, nullable
  - `campaignId` string, uuid, nullable
  - `appId` string, uuid, nullable: Force a specific app
  - `scenarioId` string, nullable: Pin a known creative scenario for deterministic planning.
  - `feedback` string, nullable: Free-text feedback to fold into a revised plan.
  - `preferredPath` 'auto' | 'atomic' | 'compose' | 'app', nullable: Optional route-family preference; the planner still freezes the route.
  - `maxEstimatedCredits` integer, nullable: Planning constraint; do not return a plan estimated above this amount.
  - `headless` boolean, nullable: Unattended mode. The server still freezes a plan first and dispatches only when it is awaiting approval, within maxCredits, and protected by Idempotency-Key. Questions and route choices are returned without dispatch.
  - `maxCredits` integer: Required hard credit ceiling for headless execution.
  - `allowUnknownCost` boolean: Explicitly permit an unknown-cost plan while retaining maxCredits as the hard ceiling.
  - `inputs` object, nullable: Override inputs for the selected app
  - `templateId` string, nullable: Apply a content template
  - `autoQuality` object, nullable: Auto-quality guarantee: score output after completion and retry if below threshold. Credits refunded if quality cannot be met.
    - `enabled` boolean: Enable auto-quality (default true when object is present)
    - `minScore` number: Minimum quality score (0-100)
    - `maxRetries` integer: Max retry attempts (capped at 3)
  - `aspectRatio` string, nullable: Output aspect ratio (e.g. 1:1, 16:9, 9:16, 4:3, 4:5, auto). Auto-mapped to the matching workflow parameter.
  - `metadata` object, nullable: Deprecated compatibility metadata. Put planner-known values under inputs; metadata.webhookUrl returns a warning and is not attached to pipeline runs.
  - `webhookUrl` string, uri, nullable: Deprecated compatibility field. Canonical pipeline runs do not attach this callback; poll GET /content/runs/{runId}. A warning is returned when supplied.

## Response `200`

Frozen plan or started pipeline run

- object
  - `data` object, required

## Other responses

- `401`: Missing or invalid API key
- `500`: Internal server error

---

[API](https://skmtc.dev/uselamina/apis/lamina-v1-api.md) · [All operations](https://skmtc.dev/uselamina/apis/lamina-v1-api/llms.txt) · [OpenAPI document](https://skmtc.dev/uselamina/apis/lamina-v1-api/revisions/73b598526531?raw)
