---
title: "Create a project"
method: POST
path: "/projects"
tags: ["Projects"]
---

# Create a project

`POST /projects`

## Request

- Base URL: `https://api.livereacting.com/v1/external`
- URL: `https://api.livereacting.com/v1/external/projects`
- Auth: HTTP bearer

Creates a new project with the specified configuration.

Only `name` is required. All other fields have sensible defaults:
- `title` defaults to `name`
- `format` defaults to `16:9_720p`
- `audioQuality` defaults to `128k`
- `privacyStatus` defaults to public on all platforms

## Request body

- CreateProjectRequest
  - `name` string, required: Project name (1-60 characters)
  - `title` string: Stream title (max 100 characters). Defaults to name if not provided.
  - `description` string: Stream description (max 5000 characters)
  - `format` '1:1' | '1:1_720p' | '1:1_1080p' | '1:1_2160p' | '9:16' | '9:16_720p' | '9:16_1080p' | '9:16_2160p' | '16:9' | '16:9_720p' | '16:9_1080p' | '16:9_2160p' | '1:2' | '1:2_720p' | '1:2_1080p' | '1:2_2160p': Video format string. Note - responses return format as an object { aspectRatio, resolution } for clarity.
  - `destinationIds` string[]: Array of destination IDs from GET /destinations
  - `audioQuality` '128k' | '256k' | '320k': Audio quality setting
  - `privacyStatus` object: Privacy settings by platform
    - `youtube` 'public' | 'private' | 'unlisted'
    - `facebook` 'SELF' | 'ALL_FRIENDS' | 'EVERYONE'
  - `duration` object: Stream duration settings. If omitted, the project gets a fixed duration of one hour (3600 seconds).
    - `planned` integer, nullable: Planned duration in seconds (min 30, max 31536000 / 365 days). Ignored if manual is true.
    - `manual` boolean: If true, the stream runs until stopped, up to the plan's maximum stream length. Must be a boolean (not string).
  - `youtubeAdvancedSettings` YoutubeAdvancedSettings: Advanced YouTube-specific settings for live streams. **Allowed fields:** madeForKids, alteredContent, disableDvr, tags Boolean fields require strict boolean type (not string "true"/"false").
    - `madeForKids` boolean: COPPA compliance flag. Designates the video as made for kids. Must be a boolean (not string).
    - `alteredContent` boolean: AI/synthetic content disclosure. Indicates altered content that looks real. Must be a boolean (not string).
    - `disableDvr` boolean: Disables DVR (rewind/pause) for live stream viewers. Must be a boolean (not string).
    - `tags` string[]: Video tags to help viewers find your content. **Validation rules:** - Maximum 30 tags - Maximum 100 characters per tag - Maximum 450 total characters (including commas between tags) - Angle brackets (< >) are not allowed - Tags are automatically trimmed and deduplicated
  - `autoSynch` boolean: When true, changes to project are automatically synced to active live stream

## Response `201`

Project created successfully

- ProjectCreateResponse: Response for project create/update operations (simplified, no live status)
  - `id` string: Unique project identifier
  - `name` string, nullable: Project name
  - `title` string, nullable: Stream title
  - `description` string, nullable: Stream description
  - `format` Format
    - `aspectRatio` string: Aspect ratio of the stream
    - `resolution` string: Resolution in WxH format
  - `createdAt` string, date-time, nullable: Project creation date
  - `audioQuality` '128k' | '256k' | '320k': Audio quality setting
  - `autoSynch` boolean: When true, changes to project are automatically synced to active live stream
  - `maxFps` 30 | 60: Maximum frames per second for this project. Read-only (set via platform UI).
  - `customBitrate` integer, nullable: Custom streaming bitrate in kbps. Read-only (set via platform UI). Null when using default.
  - `privacyStatus` PrivacyStatus
    - `youtube` 'public' | 'private' | 'unlisted'
    - `facebook` 'SELF' | 'ALL_FRIENDS' | 'EVERYONE'
  - `duration` object
    - `planned` integer, nullable: Planned duration in seconds
    - `manual` boolean: If true, the stream runs until stopped, up to the plan's maximum stream length
  - `destinations` object[]: Configured destinations (simplified)
    - `provider` 'youtube' | 'facebook' | 'twitch' | 'instagram' | 'linkedin' | 'rtmp' | 'unknown'
    - `name` string, nullable
  - `youtubeAdvancedSettings` YoutubeAdvancedSettings: Advanced YouTube-specific settings for live streams. **Allowed fields:** madeForKids, alteredContent, disableDvr, tags Boolean fields require strict boolean type (not string "true"/"false").
    - `madeForKids` boolean: COPPA compliance flag. Designates the video as made for kids. Must be a boolean (not string).
    - `alteredContent` boolean: AI/synthetic content disclosure. Indicates altered content that looks real. Must be a boolean (not string).
    - `disableDvr` boolean: Disables DVR (rewind/pause) for live stream viewers. Must be a boolean (not string).
    - `tags` string[]: Video tags to help viewers find your content. **Validation rules:** - Maximum 30 tags - Maximum 100 characters per tag - Maximum 450 total characters (including commas between tags) - Angle brackets (< >) are not allowed - Tags are automatically trimmed and deduplicated

## Other responses

- `400`: Validation error
- `401`: Authentication failed
- `429`: Rate limit exceeded

---

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