Skip to main content
Use client.Project to list projects, create a new project, or check permissions before you load or publish model data.

Methods

Get
Task<Project> Get(string projectId, CancellationToken cancellationToken = default)
Retrieves a project by id.
GetWithModels
Task<ProjectWithModels> GetWithModels(string projectId, int modelsLimit = 25, string? modelsCursor = null, ProjectModelsFilter? modelsFilter = null, CancellationToken cancellationToken = default)
Retrieves a project along with a paginated list of its models.
GetWithTeam
Task<ProjectWithTeam> GetWithTeam(string projectId, CancellationToken cancellationToken = default)
Retrieves a project along with its team members and pending invites.
GetPermissions
Task<ProjectPermissionChecks> GetPermissions(string projectId, CancellationToken cancellationToken = default)
Checks the active user’s permissions on the project (canCreateModel, canDelete, canLoad). Also queries canPublish, which is obsolete in the SDK — prefer client.Model.GetPermissions(...).canCreateVersion for publish/version checks.
Create
Task<Project> Create(ProjectCreateInput input, CancellationToken cancellationToken = default)
Creates a personal (non-workspace) project. ProjectCreateInput(string? name, string? description, ProjectVisibility? visibility).
CreateInWorkspace
Task<Project> CreateInWorkspace(WorkspaceProjectCreateInput input, CancellationToken cancellationToken = default)
Creates a project inside a workspace. Only supported on workspace-enabled servers.
Update
Task<Project> Update(ProjectUpdateInput input, CancellationToken cancellationToken = default)
Updates project fields (name, description, visibility, and others).
UpdateRole
Task<ProjectWithTeam> UpdateRole(ProjectUpdateRoleInput input, CancellationToken cancellationToken = default)
Updates a team member’s role on the project.
Delete
Task Delete(string projectId, CancellationToken cancellationToken = default)
Deletes a project.

Usage

https://mintcdn.com/speckle/VtRPWzmN-ULoLfIv/images/developers/sdks/csharp.svg?fit=max&auto=format&n=VtRPWzmN-ULoLfIv&q=85&s=f2970e3b8bd4a2c7899b46211a42f251Example
var project = await client.Project.Create(new ProjectCreateInput(
    "My Project",
    "Description",
    ProjectVisibility.Private
));

var withModels = await client.Project.GetWithModels(project.id);
Console.WriteLine($"{withModels.name}: {withModels.models.totalCount} models");
Projects replace what used to be called “Streams” in prior versions of Speckle.

FAQ

Call CreateInWorkspace with a WorkspaceProjectCreateInput on a workspace-enabled server. Use Create for personal (non-workspace) projects. Check client.Server.IsWorkspaceEnabled() first.
Delete unused projects or upgrade the workspace plan before calling Create again.

Next Steps

Core concepts

Project → model → version hierarchy

Quickstart

Create a project in Step 3

ModelResource

Models within a project
Last modified on July 10, 2026