Documentation / API Reference / Update a project
Update a project Update a project's name or storage settings. Only team owners can update projects.
PATCH
/projects/{projectId}
Authorization Authorization
header
string
required
Enter the team access token with the Bearer prefix, e.g. "Bearer team_access_token"
Path Parameters
Body application/json
Project update parameters
Defaults for new Assets and automatic Uploads. Replaces the whole object. Omitted fields reset to their defaults. Existing Assets are unchanged.
Show asset_defaults properties
delete_files_on_failure
default: false
boolean
Delete generated and partial files from the output Storage when a new Asset fails. The Asset record and original Source are preserved. Cleanup is attempted once after a delay and requires delete permission on the Storage. Defaults to false. Existing Assets are unchanged.
Maximum streaming resolution. Defaults to 1080p on Hobby and 2160p on other plans. 2160p requires Starter or above. Smaller sources are not upscaled. Does not affect static renditions.
Available options:
1080p2160p
Minimum streaming resolution. Defaults to auto, with no minimum. Must not exceed max_resolution. Smaller sources are not upscaled. Does not affect static renditions.
Available options:
auto240p360p540p720p1080p1440p2160p
PathTemplate specifies the Asset output folder relative to Storage base_prefix.
Supports {assetID} and case-sensitive {metadata.}; referenced values must be non-empty.
Ignored for Chunkify storage, which always uses {assetID}.
Defaults to {assetID}. Maximum template size: 1024 UTF-8 bytes. Expanded prefix: 768 bytes including base_prefix and trailing slash.
Examples:
videos/{metadata.VideoID}
preview_enabled
default: true
boolean
Allow public preview access for new Assets without an API token. Defaults to true. Existing Assets are unchanged.
default_workflow_id
object
DefaultWorkflowId specifies the default Workflow for new Assets. Set null to clear it.
Pattern:
^[a-zA-Z0-9\-\_ ]+$
ID of this Project's default Storage.
Responses 204 401 404 429
The project was updated successfully
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Authentication error: invalid token or subscription inactive
type
"AuthenticationError"
string
required
Type indicates the error category
Available options:
AuthenticationError
status
"error"
string
required
Status indicates the response status "error"
Authentication error: invalid token or subscription inactive
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Ressource not found
type
"NotFoundError"
string
required
Type indicates the error category
Available options:
NotFoundError
status
"error"
string
required
Status indicates the response status "error"
Resource not found
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Rate limit exceeded
type
"TooManyRequestsError"
string
required
Type indicates the error category
Available options:
TooManyRequestsError
status
"error"
string
required
Status indicates the response status "error"
Rate limit exceeded
# Update a project
> Update a project's name or storage settings. Only team owners can update projects.
```json
{
"path": "/projects/{projectId}",
"method": "patch",
"schema": {
"description": "Update a project's name or storage settings. Only team owners can update projects.",
"operationId": "updateProject",
"parameters": [
{
"description": "Project Id",
"in": "path",
"name": "projectId",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectUpdateParams"
}
}
},
"description": "Project update parameters",
"required": true,
"x-originalParamName": "request"
},
"responses": {
"204": {
"description": "The project was updated successfully"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorAuthentication"
}
}
},
"description": "Authentication error: invalid token or subscription inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorNotFound"
}
}
},
"description": "Resource not found"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorTooManyRequests"
}
}
},
"description": "Rate limit exceeded"
}
},
"security": [
{
"TeamAccessToken": []
}
],
"summary": "Update a project",
"tags": [
"Projects"
],
"x-codeSamples": [
{
"lang": "JavaScript",
"source": "import Chunkify from '@chunkify/chunkify';\n\nconst client = new Chunkify({\n teamAccessToken: 'My Team Access Token',\n});\n\nawait client.projects.update('project_id', { name: 'New Name' });"
},
{
"lang": "Python",
"source": "from chunkify import Chunkify\n\nclient = Chunkify(\n team_access_token=\"My Team Access Token\",\n)\nclient.projects.update(\n project_id=\"projectId\",\n name=\"New Name\",\n)"
},
{
"lang": "php",
"source": "\u003c?php\n\nuse Chunkify\\Client;\n\n$client = new Client(\n teamAccessToken: 'My Team Access Token',\n);\n\n$client-\u003eprojects-\u003eupdate('projectId', name: 'New Name');"
},
{
"lang": "Go",
"source": "package main\n\nimport (\n \"context\"\n\n \"github.com/chunkifydev/chunkify-go\"\n \"github.com/chunkifydev/chunkify-go/option\"\n)\n\nfunc main() {\n client := chunkify.NewClient(\n option.WithTeamAccessToken(\"My Team Access Token\"),\n )\n err := client.Projects.Update(\n context.TODO(),\n \"projectId\",\n chunkify.ProjectUpdateParams{\n Name: chunkify.String(\"New Name\"),\n },\n )\n if err != nil {\n panic(err.Error())\n }\n}\n"
}
]
}
}
```
```json #/components/schemas/ProjectUpdateParams
{
"anyOf": [
{
"required": [
"name"
]
},
{
"required": [
"storage_id"
]
},
{
"required": [
"asset_defaults"
]
},
{
"required": [
"default_workflow_id"
]
}
],
"description": "Update one or more Project settings. Omitted fields remain unchanged.",
"properties": {
"asset_defaults": {
"$ref": "#/components/schemas/AssetDefaults",
"description": "Defaults for new Assets and automatic Uploads. Replaces the whole object. Omitted fields reset to their defaults. Existing Assets are unchanged."
},
"default_workflow_id": {
"description": "DefaultWorkflowId specifies the default Workflow for new Assets. Set null to clear it.",
"maxLength": 64,
"minLength": 1,
"type": [
"string",
"null"
]
},
"name": {
"description": "Project name.",
"maxLength": 32,
"minLength": 4,
"pattern": "^[a-zA-Z0-9\\-\\_ ]+$",
"type": "string"
},
"storage_id": {
"description": "ID of this Project's default Storage.",
"maxLength": 64,
"minLength": 4,
"type": "string"
}
},
"type": "object",
"x-reject-null-fields": [
"asset_defaults"
]
}
```
```json #/components/schemas/AssetDefaults
{
"properties": {
"delete_files_on_failure": {
"default": false,
"description": "Delete generated and partial files from the output Storage when a new Asset fails. The Asset record and original Source are preserved. Cleanup is attempted once after a delay and requires delete permission on the Storage. Defaults to false. Existing Assets are unchanged.",
"type": "boolean"
},
"max_resolution": {
"description": "Maximum streaming resolution. Defaults to 1080p on Hobby and 2160p on other plans. 2160p requires Starter or above. Smaller sources are not upscaled. Does not affect static renditions.",
"enum": [
"1080p",
"2160p"
],
"type": "string"
},
"min_resolution": {
"description": "Minimum streaming resolution. Defaults to auto, with no minimum. Must not exceed max_resolution. Smaller sources are not upscaled. Does not affect static renditions.",
"enum": [
"auto",
"240p",
"360p",
"540p",
"720p",
"1080p",
"1440p",
"2160p"
],
"type": "string"
},
"path_template": {
"description": "PathTemplate specifies the Asset output folder relative to Storage base_prefix.\nSupports {assetID} and case-sensitive {metadata.\u003ckey\u003e}; referenced values must be non-empty.\nIgnored for Chunkify storage, which always uses {assetID}.\nDefaults to {assetID}. Maximum template size: 1024 UTF-8 bytes. Expanded prefix: 768 bytes including base_prefix and trailing slash.",
"examples": [
"videos/{metadata.VideoID}"
],
"minLength": 1,
"type": "string",
"x-maxBytes": 1024
},
"preview_enabled": {
"default": true,
"description": "Allow public preview access for new Assets without an API token. Defaults to true. Existing Assets are unchanged.",
"type": "boolean"
}
},
"type": "object",
"x-reject-null-fields": [
"path_template",
"min_resolution",
"max_resolution",
"preview_enabled",
"delete_files_on_failure"
]
}
```
```json #/components/schemas/ResponseErrorAuthentication
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 401,
"description": "Code is the HTTP status code",
"examples": [
401
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Authentication error: invalid token or subscription inactive"
],
"type": "string"
},
"type": {
"const": "AuthenticationError",
"description": "Type indicates the error category",
"enum": [
"AuthenticationError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```
```json #/components/schemas/ResponseErrorNotFound
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 404,
"description": "Code is the HTTP status code",
"examples": [
404
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Ressource not found"
],
"type": "string"
},
"type": {
"const": "NotFoundError",
"description": "Type indicates the error category",
"enum": [
"NotFoundError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```
```json #/components/schemas/ResponseErrorTooManyRequests
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 429,
"description": "Code is the HTTP status code",
"examples": [
429
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Rate limit exceeded"
],
"type": "string"
},
"type": {
"const": "TooManyRequestsError",
"description": "Type indicates the error category",
"enum": [
"TooManyRequestsError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```