Overview
A project has its own API keys, settings, and members.
Set the data region with userDataRegion when you create the project. You can't change it later, so create a new project to use a different region. Omit the field to use the default region.
Getting a project needs any role on it. Updating and deleting a project need the Admin role. Any signed-in user can create a project.
To call these endpoints from the CLI, use the lk project list, get, create, update, and delete commands, for example lk project list --user-auth.
The project object
A LiveKit Cloud project. Members and domains are separate list resources and are not embedded here.
idstringThe project ID (p_...).
namestringThe project name.
workspaceIdstringThe workspace that holds the project (wo_...).
createdAttimestampWhen the project was created.
webhooksArray<Webhook>The webhook destinations for the project.
To learn more, see Webhook.
creatorIdstringThe user who created the project.
subdomainstringThe project subdomain, which forms url.
enableAnalyticsbooleanThe enableAnalytics value.
analyticsAccessKeystringThe analyticsAccessKey value.
enableAutoCreatebooleanTrue lets the first participant to join a room that does not yet exist create it.
enableRemoteUnmutebooleanTrue lets an admin unmute the tracks of another participant.
enableEnhancedNoiseCancellationbooleanTrue applies enhanced noise cancellation to inbound audio.
enableHostedAgentsbooleanTrue lets the project run agents on LiveKit Cloud.
preferencesProjectPreferencesThe UI and feature settings for the project.
To learn more, see ProjectPreferences.
enabledCodecsArray<string>The media codecs the project allows, by MIME type, such as video/VP9.
pinnedRegionsArray<string>The regions the project pins its traffic to. Empty leaves it unpinned.
egressClusterIdstringThe egress cluster the project runs egress on.
enableSafeModebooleanThe enableSafeMode value.
enableUserDataRecordingbooleanTrue when the project records traces, transcripts, and audio from agent sessions for agent observability.
enableUserDataTrainingbooleanTrue lets LiveKit use the observability data from this project to improve models and services.
userDataRegionstringThe region where the project stores and processes session analytics and agent observability data. It is set when the project is created and cannot be changed.
userDataLifetimeDaysint32The userDataLifetimeDays value.
enableSipCustomDomainbooleanThe enableSipCustomDomain value.
requireExplicitDispatchbooleanTrue rejects an agent server that registers without an explicit agent name, which keeps an accidental auto-dispatch server from connecting.
isPrivatebooleanTrue when the project keeps its own member list instead of taking the members of its workspace.
enablePiiRedactionbooleanTrue redacts PII from the recorded session data.
piiRedactionCategoriesArray<PIIRedactionCategory>The categories to redact when enablePiiRedaction is true. When empty, the project uses its saved categories, or the default categories that apply when you turn on redaction. An empty list never means that nothing is redacted.
To learn more, see PIIRedactionCategory.
enableInferenceRegionRestrictionbooleanTrue restricts inference to the models in the same data region as the project.
urlstringThe LiveKit server URL of the project (wss://...). The API derives it from subdomain.
List projects
/v0/projectsReturns a list of Project objects, with a pageInfo cursor.
Query parameters
page.cursorstringThe cursor of the page to return: the nextCursor of the previous page. When empty, the list starts at the first item.
page.pageSizeint32The maximum number of items to return. When 0, the list uses its default page size.
workspaceIdstringThe workspace to list projects from. Private projects that you are not a member of are left out. When workspaceId and memberId are both empty, the response lists the projects that you are a member of. If you set both, the request fails with InvalidArgument.
memberIdstringThe member to list projects for. It must be your own user ID. Another user ID returns PermissionDenied.
Create project
/v0/projectsReturns the Project object.
Request body
The project to create. An unset field keeps its default: enableAnalytics, enableAutoCreate, and disableTokenEndpoint are true, and the other boolean fields are false.
workspaceIdstringThe workspace to create the project in. When empty, a new workspace is created for the project. On POST /v0/workspaces/{workspaceId}/projects, the project goes in the workspace in the path, and this field must be empty or match it.
namestringThe project name.
subdomainstringThe project subdomain. When empty, one is generated from name.
isPrivatebooleanTrue gives the project its own member list instead of the members of its workspace.
membersArray<CreateProjectMember>The members of a private project. Ignored when isPrivate is false. Each user must be a member of the workspace, or the request fails with NotFound. A new workspace has only you as a member.
To learn more, see CreateProjectMember.
userDataRegionstringThe region where the project stores session data. You can set it only when you create the project. When empty, the project uses the default region.
customDomainstringA custom domain to add to the project.
enableAnalyticsbooleanThe enableAnalytics value.
enableAutoCreatebooleanTrue lets the first participant to join a room that does not yet exist create it.
enableRemoteUnmutebooleanTrue lets an admin unmute the tracks of another participant.
enabledCodecsArray<string>The media codecs the project allows, by MIME type, such as video/VP9.
egressClusterIdstringThe egress cluster for the project. Only LiveKit staff can set it. For any other caller, a non-default value returns PermissionDenied.
enableHostedAgentsbooleanTrue when hosted agents are enabled for the project. Only LiveKit staff can set it. For any other caller, a non-default value returns PermissionDenied.
enableUserDataRecordingbooleanWhen true, the project records traces, transcripts, and audio from agent sessions for agent observability. Defaults to false. While it is off, a session read that finds no data returns FailedPrecondition with an ObservabilityDisabled detail. This applies to a recording, and to the first unfiltered page of a transcript, traces, logs, or metrics.
enableUserDataTrainingbooleanTrue lets LiveKit use the observability data from this project to improve models and services.
requireExplicitDispatchbooleanTrue rejects an agent server that registers without an explicit agent name.
enablePiiRedactionbooleanTrue redacts PII from the recorded session data.
piiRedactionCategoriesArray<PIIRedactionCategory>The categories to redact. When empty and enablePiiRedaction is true, the API applies the default categories.
To learn more, see PIIRedactionCategory.
enableInferenceRegionRestrictionbooleanTrue restricts inference to the models in the same data region as the project.
pinnedRegionsArray<string>The SFU regions to pin the project to. When empty, the project has no pinned regions.
hideOnboardingbooleanTrue hides the onboarding instructions on the project dashboard.
discoverableByDomainbooleanWhen true, adds your email domain to the project.
joinableByDomainbooleanWhen true, adds your email domain to the project.
hideSampleAppGallerybooleanTrue hides the sample app gallery on the project dashboard.
disableTokenEndpointbooleanTrue turns off the sandbox token endpoint for the project.
tokenEndpointKeystringThe tokenEndpointKey value.
sfuAllowPausebooleanTrue lets the SFU pause video tracks when subscribers are congested.
enableEgressBackupStoragebooleanTrue keeps an egress that fails to upload in LiveKit backup storage for 7 days.
enableEgressAutoRetrybooleanThe enableEgressAutoRetry value.
featureFlagsMap<string, string>The featureFlags value.
roomConfigsArray<RoomConfiguration>The room configurations of the project.
To learn more, see RoomConfiguration.
Get project
/v0/projects/{projectId}Returns the Project object.
Path parameters
projectIdstringThe project ID (p_...).
Update project
/v0/projects/{projectId}Returns the Project object.
Path parameters
projectIdstringThe project ID (p_...).
Request body
The changes to a project. An unset optional field keeps its value. To change a webhook, use UpdateWebhook.
namestringThe project name.
subdomainstringThe project subdomain, which forms the server URL.
customDomainstringA custom domain to add to the project.
enableAnalyticsbooleanThe enableAnalytics value.
enableAutoCreatebooleanTrue lets the first participant to join a room that does not yet exist create it.
enableRemoteUnmutebooleanTrue lets an admin unmute the tracks of another participant.
enabledCodecsArray<string>The media codecs the project allows, by MIME type, such as video/VP9.
egressClusterIdstringThe egress cluster for the project. Only LiveKit staff can change it. For any other caller, a value that differs from the current one returns PermissionDenied.
enableHostedAgentsbooleanTrue when hosted agents are enabled for the project. Only LiveKit staff can change it. For any other caller, a value that differs from the current one returns PermissionDenied.
enableUserDataRecordingbooleanWhen true, the project records traces, transcripts, and audio from agent sessions for agent observability. Data recorded earlier stays readable.
requireExplicitDispatchbooleanTrue rejects an agent server that registers without an explicit agent name.
isPrivatebooleanTrue gives the project its own member list instead of the members of its workspace.
membersArray<CreateProjectMember>The members to keep when the project becomes private. You keep the admin role.
To learn more, see CreateProjectMember.
enablePiiRedactionbooleanTrue redacts PII from the recorded session data.
piiRedactionCategoriesArray<PIIRedactionCategory>The categories to redact. A non-empty list replaces the saved categories. The API ignores an empty list, so you cannot clear the categories this way. When you turn on redaction and the project has no saved categories, the API applies the default categories.
To learn more, see PIIRedactionCategory.
enableInferenceRegionRestrictionbooleanTrue restricts inference to the models in the same data region as the project.
hideOnboardingbooleanTrue hides the onboarding instructions on the project dashboard.
discoverableByDomainbooleanWhen true, adds your email domain to the project.
joinableByDomainbooleanWhen true, adds your email domain to the project.
hideSampleAppGallerybooleanTrue hides the sample app gallery on the project dashboard.
disableTokenEndpointbooleanTrue turns off the sandbox token endpoint for the project.
tokenEndpointKeystringThe tokenEndpointKey value.
sfuAllowPausebooleanTrue lets the SFU pause video tracks when subscribers are congested.
enableEgressBackupStoragebooleanTrue keeps an egress that fails to upload in LiveKit backup storage for 7 days.
enableEgressAutoRetrybooleanThe enableEgressAutoRetry value.
featureFlagsMap<string, string>The featureFlags value.
roomConfigsToUpsertArray<RoomConfiguration>Room configurations to add to the project. A configuration replaces the one with the same name. A configuration without a name is ignored.
To learn more, see RoomConfiguration.
roomConfigsToDeleteArray<string>The names of the room configurations to remove from the project.
pinnedRegionsPinnedRegionsThe SFU regions to pin the project to. When unset, the pins do not change. A set message replaces the pins, so an empty regions list removes all pins. This field is different from userDataRegion, which sets where the project keeps its session data.
To learn more, see PinnedRegions.
enableUserDataTrainingbooleanTrue lets LiveKit use the observability data from this project to improve models and services.
Delete project
/v0/projects/{projectId}Path parameters
projectIdstringThe project ID (p_...).
Types
Types used by these endpoints, alongside the project object.
CreateProjectMember
A user and the role that the user gets on a project.
userIdstringThe user to add. They must already be a member of the workspace.
roleint32The role of the user: 0 invited, 1 read, 2 write, 3 admin.
FilterParams
includeEventsArray<string>The includeEvents value.
excludeEventsArray<string>The excludeEvents value.
PageInfo
The paging state of a list response.
nextCursorstringThe cursor of the next page. To get the next page, send it as cursor in the next request. Empty on the last page.
hasMorebooleanTrue when another page follows this one.
PIIRedactionCategory
The types of personally identifiable information (PII) a project can redact.
Choose the categories with piiRedactionCategories on a project. When that list is empty and enablePiiRedaction is true, the project redacts a default set.
Each name maps to the identifier the redaction model emits: strip the PII_REDACTION_CATEGORY_ prefix and lowercase the rest.
This type has these values:
PII_REDACTION_CATEGORY_UNSPECIFIEDPII_REDACTION_CATEGORY_ACCOUNT_NUMBERPII_REDACTION_CATEGORY_AGEPII_REDACTION_CATEGORY_BANK_ACCOUNTPII_REDACTION_CATEGORY_DATEPII_REDACTION_CATEGORY_DOBPII_REDACTION_CATEGORY_DRIVER_LICENSEPII_REDACTION_CATEGORY_EDUCATION_LEVELPII_REDACTION_CATEGORY_EMAIL_ADDRESSPII_REDACTION_CATEGORY_GOVERNMENT_IDPII_REDACTION_CATEGORY_HEALTHCARE_NUMBERPII_REDACTION_CATEGORY_IP_ADDRESSPII_REDACTION_CATEGORY_LICENSE_PLATEPII_REDACTION_CATEGORY_LOCATIONPII_REDACTION_CATEGORY_LOCATION_ADDRESSPII_REDACTION_CATEGORY_LOCATION_CITYPII_REDACTION_CATEGORY_LOCATION_COORDINATEPII_REDACTION_CATEGORY_LOCATION_COUNTRYPII_REDACTION_CATEGORY_LOCATION_STATEPII_REDACTION_CATEGORY_LOCATION_ZIPPII_REDACTION_CATEGORY_NAMEPII_REDACTION_CATEGORY_NAME_GIVENPII_REDACTION_CATEGORY_NAME_FAMILYPII_REDACTION_CATEGORY_NUMERICAL_PIIPII_REDACTION_CATEGORY_OCCUPATIONPII_REDACTION_CATEGORY_ORIGINPII_REDACTION_CATEGORY_PASSPORT_NUMBERPII_REDACTION_CATEGORY_PASSWORDPII_REDACTION_CATEGORY_PHONE_NUMBERPII_REDACTION_CATEGORY_ROUTING_NUMBERPII_REDACTION_CATEGORY_SSNPII_REDACTION_CATEGORY_SWIFT_CODEPII_REDACTION_CATEGORY_URLPII_REDACTION_CATEGORY_USERNAMEPII_REDACTION_CATEGORY_VEHICLE_IDPII_REDACTION_CATEGORY_CREDIT_CARDPII_REDACTION_CATEGORY_CREDIT_CARD_EXPIRATIONPII_REDACTION_CATEGORY_CVVPII_REDACTION_CATEGORY_LANGUAGEPII_REDACTION_CATEGORY_ORGANIZATIONPII_REDACTION_CATEGORY_POLITICAL_AFFILIATIONPII_REDACTION_CATEGORY_RELIGION
PinnedRegions
A set of SFU regions to pin a project to. A set message with an empty regions list removes all pins.
regionsArray<string>The regions to pin the project traffic to. An empty list clears the pins.
ProjectPreferences
The UI and feature settings of a project.
hideOnboardingbooleanTrue hides the onboarding instructions on the project dashboard.
discoverableByDomainbooleanTrue lets people with the same email domain as the project owner find the project when they sign up.
joinableByDomainbooleanTrue lets people with the same email domain join the project.
hideSampleAppGallerybooleanTrue hides the sample app gallery on the project dashboard.
disableTokenEndpointbooleanTrue turns off the sandbox token endpoint for the project.
tokenEndpointKeystringThe tokenEndpointKey value.
sfuAllowPausebooleanTrue lets the SFU pause video tracks when subscribers are congested.
enableEgressBackupStoragebooleanTrue keeps an egress that fails to upload in LiveKit backup storage for 7 days. The egress_ended webhook event carries the file location.
featureFlagsMap<string, string>The featureFlags value.
enableEgressAutoRetrybooleanThe enableEgressAutoRetry value.
hipaaCompliantbooleanThe hipaaCompliant value.
roomConfigurationsMap<string, RoomConfiguration>Room configurations saved on the project, by name.
To learn more, see RoomConfiguration.