Update Project
Pictory Projects
Update Project
Update an existing project using its unique project ID. Requires the complete updated project object in the request body.
PUT
Update Project
Documentation Index
Fetch the complete documentation index at: https://docs.pictory.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Update an existing project by sending the complete updated project object. This endpoint allows you to modify scene visuals, subtitle text content, scene settings, and other project attributes. The entire project object must be included in the request—partial updates are not supported.You need a valid API key to use this endpoint. Get your API key from the API Access page in your Pictory dashboard.
API Endpoint
Request Parameters
Path Parameters
The unique identifier of the project to update. Can be either a string (for v3 schema projects) or an integer (for v2 schema and earlier projects).Example:
20251222191648030d7df02f5b4054d4ca8831f1369459e25Headers
API key for authentication (starts with
pictai_)Must be set to
application/jsonRequest Body
The request body must contain the complete project object retrieved from the Get Project by ID endpoint. Modify only the fields you need to change while preserving all other fields.Updatable Video Elements
The following sections describe the video element fields that can be safely modified. These structures match the response from the Get Project by ID endpoint.Project-Level Fields
These top-level fields can be safely updated:| Field | Type | Description |
|---|---|---|
projectName | string | Name of the project |
audioSpeed | number | Audio playback speed percentage (100 = normal) |
videoVolume | number | Background video volume level (0-100) |
Scene Text (scenes[].text and scenes[].sentence)
Update the display text and narration for each scene:
| Field | Type | Description |
|---|---|---|
text | string | Plain text version of the scene narration |
sentence | array | Array of text segments with formatting |
sentence[].text | string | Text content of the segment |
sentence[].highlight | boolean | Apply keyword highlighting |
sentence[].decoration | array | Text decorations: decor-bold, decor-underline |
sentence[].case | string | Text case: none, uppercase, lowercase |
keywords | array | Array of highlighted keyword strings |
Scene Text Styling (scenes[].styleData)
Modify text appearance for each scene:
| Field | Type | Description |
|---|---|---|
fontName | string | Font family name |
fontSize | string | Font size in pixels |
fontColor | string | Text color (RGB format) |
fontWeight | number | Font weight (400=normal, 700=bold) |
textAlign | string | Alignment: left, center, right |
keywordColor | string | Highlight color (RGBA format) |
textBackgroundColor | string | Background color (RGBA format) |
maxLines | number | Maximum display lines |
width | number | Container width (0-1) |
preset | string | Position: bottom-left, bottom-center, center-center, etc. |
Scene Settings (scenes[].settings)
Control scene playback behavior:
| Field | Type | Description |
|---|---|---|
hideText | boolean | Hide subtitle/caption text for this scene |
Background Image (scenes[].background with type: "image")
Update the background image for a scene:
| Field | Type | Description |
|---|---|---|
type | string | Must be "image" |
elementData.url | string | Full resolution image URL |
elementData.preview_jpg | string | Preview image URL |
elementData.thumb | string | Thumbnail URL |
elementData.library | string | Source: uploads, unsplash, story_blocks, getty |
styleData.imageZoomPan | boolean | Enable Ken Burns zoom/pan effect |
styleData.colorOverlay | object | Color overlay settings |
Background Video (scenes[].background with type: "video")
Update the background video for a scene:
| Field | Type | Description |
|---|---|---|
type | string | Must be "video" |
elementData.url | string | Video file URL |
elementData.duration | number | Video duration in seconds |
elementData.library | string | Source: uploads, story_blocks, getty, pexels |
settings.loopVideo | boolean | Loop video playback |
Solid Color Background (scenes[].background with type: "solid")
Set a solid color background:
Video Element Overlay (scenes[].elements[] with type: "video")
Update video clip overlays within a scene:
| Field | Type | Description |
|---|---|---|
elementId | string | Unique element identifier (preserve existing) |
type | string | Must be "video" |
hide | boolean | Hide this element |
settings.loopVideo | boolean | Loop the video clip |
settings.muteClipAudio | boolean | Mute the video’s audio |
elementData.url | string | Video file URL |
styleData.top | number | Vertical position (%) |
styleData.left | number | Horizontal position (%) |
styleData.width | number | Element width (0-1) |
styleData.colorOverlay | object | Color overlay settings |
Text Element Overlay (scenes[].elements[] with type: "text")
Update text overlay elements within a scene:
| Field | Type | Description |
|---|---|---|
elementId | string | Unique element identifier (preserve existing) |
type | string | Must be "text" |
settings.textMode | string | useStoryText or writeAnything |
elementData.sentence | array | Text segments with formatting |
styleData.fontName | string | Font family |
styleData.fontSize | string | Font size in pixels |
styleData.fontColor | string | Text color (RGB) |
styleData.animation | object | Entry/exit animation settings |
Quick Reference: Safe Updates
Scene Background Image
Scene Background Image
Field:
scenes[].background (type: image)Replace background image with Ken Burns effect and color overlay.Scene Background Video
Scene Background Video
Field:
scenes[].background (type: video)Replace background with a video clip.Scene Text & Keywords
Scene Text & Keywords
Fields:
scenes[].text, scenes[].sentence, scenes[].keywordsUpdate display text, formatting, and highlighted keywords.Scene Text Styling
Scene Text Styling
Field:
scenes[].styleDataUpdate text appearance, fonts, colors, and positioning.Scene Settings
Scene Settings
Field:
scenes[].settingsControl text visibility for the scene.Video Element Overlay
Video Element Overlay
Field:
scenes[].elements[] (type: video)Update video clips placed as overlays within scenes.Text Element Overlay
Text Element Overlay
Field:
scenes[].elements[] (type: text)Update text overlays and their styling/animations.Project Metadata
Project Metadata
Fields:
projectName, audioSpeed, videoVolumeUpdate basic project configuration.Fields to Avoid Modifying
Response
The API returns a JSON response indicating the success or failure of the update operation. Success Response Fields:| Field | Type | Description |
|---|---|---|
success | boolean | true if the update was successful |
message | string | Confirmation message |
project | object | The updated project object with all current values |
| Field | Type | Description |
|---|---|---|
success | boolean | false if the update failed |
message | string | Error description |
error | string | Detailed error information (if available) |
Response Examples
Code Examples
Usage Notes
Complete Object Required: Even if you only want to change one field, you must send the entire project object. Omitting fields will cause them to be removed from the project.
Render After Update: Updating a project only saves the changes to the project data. To generate a new video with your updates, you must call the Render Project endpoint after the update is complete.
Common Use Cases
1. Update Scene Background Visual
Replace the background media for a specific scene:2. Update Scene Text
Modify the text and sentence for one or more scenes:3. Update Scene Settings and Element Settings
Apply settings changes to scenes and their elements:4. Update Project Metadata
Change project name and playback settings:5. Replace All Scene Backgrounds
Replace backgrounds for all scenes at once:6. Safe Update with Validation
Implement validation before updating:Best Practices
Safety Guidelines
- Always Fetch First: Get the current project state before making any modifications
- Preserve All Fields: Include all fields in the update request, even if unchanged
- Test on Copies: Test significant changes on duplicate projects first
- Validate Before Sending: Ensure all required fields are present before updating
- Keep Backups: Save the original project state before applying updates
Common Pitfalls to Avoid
- ❌ Partial Updates: Sending only modified fields will delete other fields
- ❌ Missing Required Fields: Omitting critical fields causes project corruption
- ❌ Invalid Values: Using incorrect data types or formats for fields
- ❌ Modifying System Fields: Changing internal IDs or metadata
- ❌ No Validation: Updating without checking the project state first
Performance Tips
- Batch multiple changes in a single update request
- Minimize the frequency of updates during active editing
- Cache the project object locally during editing sessions
- Only fetch/update when necessary to reduce API calls
