> ## Documentation Index
> Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Language-specific interfaces to the Speckle platform — choose Python or .NET and start building

Speckle provides **SDKs** — libraries that let you authenticate with Speckle Server, send and receive AEC data, and build integrations in the language that fits your project. Each SDK implements the same platform: projects, models, versions, objects, and the GraphQL API. The APIs differ; the concepts transfer.

<Info>
  Compatible with **Speckle Object Model v3**. Platform structure is documented in [Data Schema](/developers/data-schema/overview); language-specific setup lives under [Python](/developers/sdks/python/introduction) and [.NET](/developers/sdks/dotnet/introduction).
</Info>

## What are the Speckle SDKs?

The SDKs are how developers talk to Speckle outside the web app and desktop connectors. They let you:

* Authenticate with Speckle Server
* Create and query **projects**, **models**, and **versions**
* Send and receive **object** graphs (geometry, BIM data, custom payloads)
* Traverse, filter, and process data in code

**specklepy** (Python) and **Speckle.Sdk** (.NET) are the production SDKs documented today. **speckle.js** (TypeScript) is in development — see [speckle.js](/developers/sdks/typescript/introduction).

Each SDK follows its language ecosystem (packaging, patterns, tooling). Platform behaviour is shared; examples and onboarding are language-specific.

## Choosing an SDK

Pick the SDK that matches where your code runs, not a feature checklist.

| You're building…                                         | Recommended SDK |
| -------------------------------------------------------- | --------------- |
| Grasshopper C# automation, BIM QA scripts, Revit plugins | .NET            |
| Desktop connectors and host-app integrations             | .NET            |
| Data engineering, notebooks, analytics (no C# host)      | Python          |
| Computational design in Python ecosystems                | Python          |

<Note>
  Both SDKs can call the same server, read the same projects, and work with the same object model. If your team already uses Python or C#, start there.
</Note>

## Common platform concepts

These ideas are the same in every SDK. Learn the platform once; apply it in whichever language you use.

| Concept            | What it is                                                                    | Learn more                                                                                                                                                            |
| ------------------ | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Authentication** | How your code proves identity to Speckle Server (PAT, OAuth, stored accounts) | [Authenticating with Speckle](/developers/authentication/introduction)                                                                                                |
| **Projects**       | Top-level containers for related work on a server                             | [Projects, Models, and Versions](/developers/data-schema/overview#projects-models-and-versions-as-addresses)                                                          |
| **Models**         | Branches within a project (for example structural, MEP, main)                 | [Projects, Models, and Versions](/developers/data-schema/overview#projects-models-and-versions-as-addresses)                                                          |
| **Versions**       | Immutable snapshots of a model, each referencing a sent object graph          | [Projects, Models, and Versions](/developers/data-schema/overview#projects-models-and-versions-as-addresses)                                                          |
| **Objects**        | The unit of data exchange — geometry, properties, nested graphs               | [Data Schema overview](/developers/data-schema/overview) · [Object schema](/developers/data-schema/object-schema)                                                     |
| **GraphQL**        | The API surface the SDKs call on Speckle Server                               | [GraphQL API reference](/developers/api/graphql)                                                                                                                      |
| **Transports**     | How serialized objects move to storage (server, local cache, in-memory)       | Python: [Transports](/developers/sdks/python/api-reference/transports) · .NET: [Load and publish model data](/developers/sdks/dotnet/concepts/send-and-receive-paths) |

## Learning paths

### Python (specklepy)

<CardGroup cols={3}>
  <Card title="Introduction" icon="python" href="/developers/sdks/python/introduction">
    specklepy overview and repository
  </Card>

  <Card title="Installation" icon="download" href="/developers/sdks/python/getting-started/installation">
    Install with pip
  </Card>

  <Card title="Quickstart" icon="rocket" href="/developers/sdks/python/getting-started/quickstart">
    First send and receive workflow
  </Card>

  <Card title="Core Concepts" icon="book" href="/developers/sdks/python/concepts/overview">
    Projects, objects, traversal
  </Card>

  <Card title="Guides" icon="map" href="/developers/sdks/python/guides/how-to-work-with-objects">
    Task-oriented recipes
  </Card>

  <Card title="API Reference" icon="code" href="/developers/sdks/python/api-reference/client">
    Client, operations, resources
  </Card>
</CardGroup>

### .NET (Speckle.Sdk)

<CardGroup cols={3}>
  <Card title="Build your first model analysis tool" icon="chart-bar" href="/developers/sdks/dotnet/guides/build-your-first-model-analysis-tool">
    Load, traverse, export CSV — recommended start
  </Card>

  <Card title="Installation" icon="download" href="/developers/sdks/dotnet/getting-started/installation">
    Install with NuGet
  </Card>

  <Card title="Automate with scripts" icon="terminal" href="/developers/sdks/dotnet/getting-started/scripts-and-notebooks">
    Shortest path for scripts and Grasshopper C#
  </Card>

  <Card title="Full send/receive tour" icon="rocket" href="/developers/sdks/dotnet/getting-started/quickstart">
    Optional deep dive — Send, Receive, and transports
  </Card>

  <Card title="Core concepts" icon="book" href="/developers/sdks/dotnet/concepts/overview">
    Projects, objects, send paths
  </Card>

  <Card title="Guides" icon="map" href="/developers/sdks/dotnet/guides/build-your-first-model-analysis-tool">
    Task-oriented recipes
  </Card>

  <Card title="API reference" icon="code" href="/developers/sdks/dotnet/api-reference/client">
    Method lookup after you have a working script
  </Card>
</CardGroup>

## One platform, multiple SDKs

Speckle is one platform. Each SDK embraces the conventions of its language — import-and-go in Python, a one-time bootstrap in .NET for scripts — while exposing the same server resources and object model.

Platform concepts (projects, versions, objects, proxies, display values) transfer between SDKs. Code samples, bootstrap patterns, and API shapes stay language-specific. When a new SDK ships, it extends this shared model; you do not relearn what Speckle is.

## FAQ

<AccordionGroup>
  <Accordion title="Do I need to read both SDK documentations?">
    No. Read this page for orientation, then follow **one** learning path — Python or .NET — for installation, authentication, and examples.
  </Accordion>

  <Accordion title="Where is platform data structure documented?">
    [Data Schema](/developers/data-schema/overview) is language-agnostic. SDK **Concepts** pages explain how each language maps onto it.
  </Accordion>

  <Accordion title="Can I mix Python and .NET in one product?">
    Yes. Both can target the same Speckle Server and projects. Choose the SDK per component (for example Python for analytics, .NET for a Revit connector).
  </Accordion>
</AccordionGroup>
