Our Data Schemas and object model are still evolving, and there may be discrepancies or incompleteness between our documentation and the latest in development.
If you have any questions, please contact us on the
Speckle Community Forum: Developers.
What is the Data Schema?
The Data Schema is the structuring of properties and geometries at the most granular level. It defines how data from any source application (Revit, Rhino, AutoCAD, etc.) is organized, starting from the smallest building blocks and building up into larger structures.Important: The “Data Schema” is NOT the same as a “Speckle Model” in the addressing hierarchy. The Data Schema describes the structure of the data itself (how properties, geometries, objects, and collections are organized), while a “Speckle Model” is an organizational container in the addressing system. See the addressing section below for clarification.
Projects, Models, and Versions as Addresses
Projects, Models, and Versions form an addressing system that organizes and locates data in Speckle. Behind the scenes, Projects have versions directly—Models are user-facing semantic organization that provide meaning and context.Objects and Addressing
Important: Objects can exist in Speckle independently of Projects, Models, and Versions. When an object is sent to a Speckle server, it receives a unique object ID (hash) based on its content. However, without being referenced by a version, the object is effectively unreachable through normal workflows—these are called “orphaned” or “zombie” objects.- Orphaned objects exist in the database and have object IDs, but cannot be browsed or discovered through the UI
- They can still be retrieved if you have the object ID directly
- To make objects discoverable, they must be referenced by a version (which belongs to a project, and optionally organized under a model)
The Data Schema Structure
The Data Schema organizes data from the most granular level upward:- Properties and Geometries - The atomic building blocks (key-value pairs and geometric primitives), all structured as Base Objects
- Objects - Combine properties and geometries into meaningful units (Geometry, DataObject, Instance)
- Collections - Organize objects into hierarchies (layers, levels, categories)
- Root Collection - The top-level container that holds Collections, Proxies, and Info
- Proxies - Encode relationships between objects and shared resources (materials, levels, groups)
- Info - Metadata that applies to the entire data package
The Complete Structure
Putting it all together, a complete data package looks like:Learning Path
This documentation is organized as a progressive learning experience:- Concepts - Core ideas: Collections, Objects, Proxies, Info
- Object Model - How objects are structured and what fields they contain
- Geometry Model - How geometry is stored and organized
- Proxy Model - How proxies encode relationships
- Connector Index - Overview of connector-specific behaviors
Why is the structure the same across all connectors?
Why is the structure the same across all connectors?
Speckle uses a unified Data Schema so that data from any source can be consumed by any receiver. This means you can write code that works with Speckle models without needing to know which application created them. The connector-specific differences are captured in the object properties and hierarchy structure, not in the fundamental Data Schema organization.
What's the difference between a Speckle hierarchy and the source application's hierarchy?
What's the difference between a Speckle hierarchy and the source application's hierarchy?
The source application’s hierarchy (e.g., Revit’s levels/categories, Rhino’s layers) is preserved in the Collections structure. However, Speckle also imposes its own organizational structure through Proxies, which can create additional relationships that don’t exist in the source application. This allows objects to be organized in multiple ways simultaneously without duplication.