Skip to main content
Use client.Model to create or list models within a project — for example “structural”, “MEP”, or “main”. Versions (published snapshots) belong to a model. Read next: Version to load or publish a snapshot · Build your first model analysis tool for a script workflow

Methods

Argument order varies by method. Get and GetWithVersions take (modelId, projectId); GetPermissions and CanCreateModelIngestion take (projectId, modelId). This matches the SDK — double-check parameter order when mixing calls.
Get
Task<Model> Get(string modelId, string projectId, CancellationToken cancellationToken = default)
Retrieves a model by id.
GetWithVersions
Task<ModelWithVersions> GetWithVersions(string modelId, string projectId, int versionsLimit = 25, string? versionsCursor = null, ModelVersionsFilter? versionsFilter = null, CancellationToken cancellationToken = default)
Retrieves a model along with a paginated list of its versions.
GetModels
Task<ResourceCollection<Model>> GetModels(string projectId, int modelsLimit = 25, string? modelsCursor = null, ProjectModelsFilter? modelsFilter = null, CancellationToken cancellationToken = default)
Lists models in a project.
Create
Task<Model> Create(CreateModelInput input, CancellationToken cancellationToken = default)
Creates a model. CreateModelInput(string name, string? description, string projectId).
Update
Task<Model> Update(UpdateModelInput input, CancellationToken cancellationToken = default)
Updates a model’s name or description.
Delete
Task Delete(DeleteModelInput input, CancellationToken cancellationToken = default)
Deletes a model.
GetPermissions
Task<ModelPermissionChecks> GetPermissions(string projectId, string modelId, CancellationToken cancellationToken = default)
Checks the active user’s permissions on the model (update, delete, create version).
CanCreateModelIngestion
Task<PermissionCheckResult> CanCreateModelIngestion(string projectId, string modelId, CancellationToken cancellationToken = default)
Checks whether the active user can create a connector-scale ingestion for this model. Requires server version 3.0.11 or later.

Usage

https://mintcdn.com/speckle/VtRPWzmN-ULoLfIv/images/developers/sdks/csharp.svg?fit=max&auto=format&n=VtRPWzmN-ULoLfIv&q=85&s=f2970e3b8bd4a2c7899b46211a42f251Example
var model = await client.Model.Create(new CreateModelInput("Structural Model", "Structural analysis model", project.id));

var withVersions = await client.Model.GetWithVersions(model.id, project.id);
Console.WriteLine($"{withVersions.name}: {withVersions.versions.totalCount} versions");

Next Steps

Core concepts

Where models fit in the hierarchy

Publish large models (connectors)

SendPipeline upload workflow

VersionResource

Versions within a model
Last modified on July 10, 2026