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

# Create Content Brief

`POST /content/brief`

## Request

- Base URL: `https://synchronex.ai/api/v1`
- URL: `https://synchronex.ai/api/v1/content/brief`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://synchronex.ai/oauth/authorize`, token URL `https://synchronex.ai/api/oauth/token`, scopes: `read`)

Accepts either a queued marketing-run brief or a completed production brief. Production requests are tried first.

## Request body

- union
  - ProductionContentBriefRequest
    - `site_id` string, uuid
    - `brand_context` object
    - `product_context` string
    - `campaign_intent` string, required
    - `brief_audience` string
    - `platform_targets` string[], required
    - `video_length_seconds` integer, required
  - ContentBriefRequest
    - `site_id` string, uuid, required
    - `goal` string, required
    - `brand_context` object
    - `workspace_id` string, uuid, nullable
    - `channel_mix` string[]
    - `tone_override` string
    - `auto_dispatch` boolean

## Response `200`

Production brief completed.

- ProductionContentBriefResponse
  - `request_id` string, uuid, required
  - `status` 'completed', required
  - `result` object, required
    - `scenes` ProductionBriefScene[], required
      - `scene_number` integer, required
      - `label` string, required
      - `duration_seconds` integer, required
      - `objective` string, required
      - `shot_type` 'Wide' | 'Establishing' | 'Medium' | 'MS' | 'Close-up' | 'CU' | 'Extreme Close-up' | 'ECU' | 'POV' | 'Over-the-Shoulder' | 'OTS', required
      - `subject` string, required
      - `camera_movement` 'Dolly' | 'Pan' | 'Tilt' | 'Rack Focus' | 'Steadicam' | 'Whip Pan' | 'Crane' | 'Jib' | 'Static', required
      - `angle` string, required
      - `lighting` string, required
      - `voiceover` string
      - `supers` string
      - `transition_out` 'Cut' | 'Dissolve' | 'Smash Cut' | 'Whip Transition' | 'Fade', required
      - `notes` string
    - `copy` object, required
      - `narrative_arc` string, required
      - `recommended_music_mood` string, required
    - `asset_callouts` ProductionBriefAssetCallout[], required
      - `scene` integer, required
      - `type` 'product_photo' | 'lifestyle_photo' | 'animation' | 'b_roll' | 'graphic' | 'text_overlay', required
      - `spec` string, required
    - `platform_optimizations` ProductionBriefPlatformOptimization, required
      - `instagram_reels` string
      - `tiktok` string
      - `youtube_shorts` string
      - `linkedin` string
    - `production_brief` ProductionBrief, required
      - `video_length_seconds` integer, required
      - `scene_count` integer, required
      - `segment_count` integer
      - `narrative_arc` string, required
      - `segments` ProductionBriefSegment[]
        - `segment_number` integer, required
        - `label` string, required
        - `duration_seconds` integer, required
        - `segment_intent` string, required
        - `narrative_role` 'hook' | 'proof' | 'transformation' | 'objection_handler' | 'cta' | 'other', required
        - `key_message` string, required
        - `transition_in` 'cut' | 'dissolve' | 'dip-to-brand-color' | 'match-dissolve', required
        - `scenes` ProductionBriefScene[], required
          - `scene_number` integer, required
          - `label` string, required
          - `duration_seconds` integer, required
          - `objective` string, required
          - `shot_type` 'Wide' | 'Establishing' | 'Medium' | 'MS' | 'Close-up' | 'CU' | 'Extreme Close-up' | 'ECU' | 'POV' | 'Over-the-Shoulder' | 'OTS', required
          - `subject` string, required
          - `camera_movement` 'Dolly' | 'Pan' | 'Tilt' | 'Rack Focus' | 'Steadicam' | 'Whip Pan' | 'Crane' | 'Jib' | 'Static', required
          - `angle` string, required
          - `lighting` string, required
          - `voiceover` string
          - `supers` string
          - `transition_out` 'Cut' | 'Dissolve' | 'Smash Cut' | 'Whip Transition' | 'Fade', required
          - `notes` string
      - `scenes` ProductionBriefScene[]
        - `scene_number` integer, required
        - `label` string, required
        - `duration_seconds` integer, required
        - `objective` string, required
        - `shot_type` 'Wide' | 'Establishing' | 'Medium' | 'MS' | 'Close-up' | 'CU' | 'Extreme Close-up' | 'ECU' | 'POV' | 'Over-the-Shoulder' | 'OTS', required
        - `subject` string, required
        - `camera_movement` 'Dolly' | 'Pan' | 'Tilt' | 'Rack Focus' | 'Steadicam' | 'Whip Pan' | 'Crane' | 'Jib' | 'Static', required
        - `angle` string, required
        - `lighting` string, required
        - `voiceover` string
        - `supers` string
        - `transition_out` 'Cut' | 'Dissolve' | 'Smash Cut' | 'Whip Transition' | 'Fade', required
        - `notes` string
      - `asset_callouts` ProductionBriefAssetCallout[], required
        - `scene` integer, required
        - `type` 'product_photo' | 'lifestyle_photo' | 'animation' | 'b_roll' | 'graphic' | 'text_overlay', required
        - `spec` string, required
      - `recommended_music_mood` string, required
      - `platform_optimizations` ProductionBriefPlatformOptimization, required
        - `instagram_reels` string
        - `tiktok` string
        - `youtube_shorts` string
        - `linkedin` string

## Other responses

- `202`: Marketing-run content brief queued.
- `401`: Unauthorized. Missing, malformed, expired, or revoked bearer token.
- `403`: Forbidden. The token scope or account tier is insufficient.
- `422`: Semantic validation failed.
- `429`: Rate limit exceeded. Retry after the indicated reset time.
- `500`: Internal server error.

---

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