---
title: "Update a project"
method: PATCH
path: "/projects/{id}"
tags: ["Projects"]
---

# Update a project

`PATCH /projects/{id}`

## Request

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

Update project settings. Only fields included in the request body will be changed.

## Field Availability

Fields behave differently depending on whether the project has an active stream:

| Field | Offline | Active Stream | Notes |
|-------|---------|---------------|-------|
| `name` | ✅ | ✅ | Project name (internal) |
| `title` | ✅ | ✅ + sync | Syncs to YouTube/Facebook |
| `description` | ✅ | ✅ + sync | Syncs to YouTube/Facebook |
| `privacyStatus` | ✅ | ✅ + sync | Syncs to YouTube/Facebook |
| `format` | ✅ | ❌ | Video resolution |
| `duration` | ✅ | ❌ | Stream duration |
| `audioQuality` | ✅ | ❌ | Audio bitrate |
| `destinationIds` | ✅ | ❌ | Streaming destinations |
| `youtubeAdvancedSettings` | ✅ | ❌ | YouTube-specific settings |

**Legend:**
- ✅ = Can update
- ✅ + sync = Can update, changes sync to streaming platforms (YouTube, Facebook, etc.) in real-time
- ❌ = Returns `LIVE_PROJECT_RESTRICTION` error

## What is an "Active Stream"?

A project has an active stream when its status is `LIVE`, `PREPARING`, or `SCHEDULED`.

## Platform Sync

When you update `title`, `description`, or `privacyStatus` on a live project,
changes are automatically pushed to YouTube, Facebook, and other connected platforms.
This lets you update stream metadata without stopping the broadcast.

## Important Notes

- **Destinations:** Setting `destinationIds` replaces ALL existing destinations. Use empty array `[]` to clear.

## Path parameters

- `id` string, required

## Request body

- UpdateProjectRequest
  - `name` string: Project name (1-60 characters)
  - `title` string: Stream title (max 100 characters)
  - `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. Changing the format does not resize layers. Layer `position` is read in the format at the time of the request, so set the format before you create or update layers.
  - `duration` object: Stream duration settings
    - `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).
  - `audioQuality` '128k' | '256k' | '320k': Audio quality setting
  - `privacyStatus` object: Privacy settings by platform
    - `youtube` 'public' | 'private' | 'unlisted'
    - `facebook` 'SELF' | 'ALL_FRIENDS' | 'EVERYONE'
  - `destinationIds` string[]: Array of destination IDs. Replaces ALL existing destinations.
  - `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 `200`

Project updated 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
- `404`: Project not found
- `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)
