Skip to main content
Use client.Version to list versions on a model, read referencedObject for Receive2, or create a version after Send2 so data appears in the Speckle UI. Guide: Build your first model analysis tool loads the latest version · Full send/receive tour shows publish after send
After SendPipeline (connectors only), the server creates the version asynchronously — do not call Version.Create on that path.

Methods

Task<Version> Get(string versionId, string projectId, CancellationToken cancellationToken = default)
Retrieves a version by id.
Task<ResourceCollection<Version>> GetVersions(string modelId, string projectId, int limit = 25, string? cursor = null, ModelVersionsFilter? filter = null, CancellationToken cancellationToken = default)
Lists versions of a model.
Task<Version> Create(CreateVersionInput input, CancellationToken cancellationToken = default)
Creates a version pointing at an already-sent object. CreateVersionInput(string objectId, string modelId, string projectId, string? message = null, string? sourceApplication = ".net", int? totalChildrenCount = null, IReadOnlyList<string>? parents = null).
Task<Version> Update(UpdateVersionInput input, CancellationToken cancellationToken = default)
Updates a version’s message.
Task<string> MoveToModel(MoveVersionsInput input, CancellationToken cancellationToken = default)
Moves one or more versions to a different model. Returns the target model id. MoveVersionsInput(string projectId, string targetModelName, IReadOnlyList<string> versionIds) — note targetModelName takes the destination model’s name, not its id.
Task Delete(DeleteVersionsInput input, CancellationToken cancellationToken = default)
Deletes one or more versions.
Task Received(MarkReceivedVersionInput input, CancellationToken cancellationToken = default)
Marks a version as received by the current application, for telemetry/analytics purposes.

Usage

Example
Sending with Send or Send2 does not create a version by itself — follow up with client.Version.Create to publish data to a model’s history and viewer. The SendPipeline path is different: after WaitForUpload, the server creates the version asynchronously — do not call Version.Create on that pathway.

FAQ

For Send and Send2, pass the id returned by the send operation — not a value from Base.GetId(), which is obsolete and may not match every send path. For SendPipeline, do not call Version.Create — the server creates the version after upload. See Publish large models (connectors).
Call client.Version.Get to read referencedObject, then IOperations.Receive2 with that id. See Build your first model analysis tool.

Next Steps

Core concepts

Orphaned objects and version lifecycle

Build your first model analysis tool

Load latest version with Receive2

Operations API

Send and Send2 entry points
Last modified on July 18, 2026