> ## 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.

> ## Agent Instructions
> These docs describe Speckle as it works today, including everything released in 2026.9. Treat page content as current unless the page or section says it applies only to versions published before 2026.9.
> Content scoped to versions published before 2026.9 (the object graph and root object, Proxies, Receive2, operations.receive, object.children) applies only to model versions in that earlier data format. For versions published in 2026.9, answer from the Object model pages and the SDK migration guides.
> The What's new pages summarise what changed in 2026.9 and link to the page that documents each change. Answer from the linked page rather than from the summary. Legacy (v2) connectors are retired; send questions about them to the community help forum.
> Match guidance to the customer's deployment, model data format, connector, plan and permissions. Self-hosted servers on a release before 2026.9 follow Data model migration for developers. If an unknown version or data format changes the answer, ask one focused question; do not infer the deployment version from the date alone.

# Download a List of Objects

> Download multiple objects by their IDs. This method is useful when optimizing downloads: Get the root object without children, check the children ids in the local cache and then request only the new objects with this method. The response format depends on the Accept header. On Speckle Cloud and Speckle Enterprise Server 2026.9 and later, this endpoint is deprecated: every response carries `Deprecation` and `Warning` headers, and it serves object-graph versions only. On the open-source Speckle Server it is current. A bundle reference (`bundle.<projectId>.<modelId>.<versionId>`) returns **404** with `error: "BUNDLE_REFERENCE_NOT_FOUND"`: read bundle versions with the artifacts endpoints instead.

> [!WARNING]
>
> Deprecated on Speckle Cloud and Speckle Enterprise Server 2026.9 and later, where it serves object graphs only. Current on the open-source Speckle Server. To read a bundle version, use the [bundle endpoints](https://docs.speckle.systems/developers/api/rest.md#bundle-endpoints).

## Limits

*Recommended* max number of objects to download with 1 request: `1000`

## Response Format

* If `Accept` is `text/plain`, each line of the output contains 1 object in the format: `{object_id}\t{object_content}`
* If `Accept` is `application/json`, the output is a JSON representation of an array of objects.


## OpenAPI

````yaml /developers/api/rest-openapi.json post /api/getobjects/{projectId}
openapi: 3.1.0
info:
  title: Speckle Server REST API
  description: >-
    REST API for Speckle Server. The object endpoints serve object graphs on
    every Speckle server, including the open-source server. The bundle and
    properties endpoints exist on Speckle Cloud and Speckle Enterprise Server
    2026.9 and later, not on the open-source server.
  version: 1.0.0
  contact:
    name: Speckle Support
    url: https://speckle.community
servers:
  - url: https://app.speckle.systems
    description: Speckle Cloud (Production)
  - url: https://YOUR_SERVER_URL
    description: Self-hosted instance (replace with your server URL)
security:
  - bearerAuth: []
paths:
  /api/getobjects/{projectId}:
    post:
      tags:
        - Objects
      summary: Download a List of Objects
      description: >-
        Download multiple objects by their IDs. This method is useful when
        optimizing downloads: Get the root object without children, check the
        children ids in the local cache and then request only the new objects
        with this method. The response format depends on the Accept header. On
        Speckle Cloud and Speckle Enterprise Server 2026.9 and later, this
        endpoint is deprecated: every response carries `Deprecation` and
        `Warning` headers, and it serves object-graph versions only. On the
        open-source Speckle Server it is current. A bundle reference
        (`bundle.<projectId>.<modelId>.<versionId>`) returns **404** with
        `error: "BUNDLE_REFERENCE_NOT_FOUND"`: read bundle versions with the
        artifacts endpoints instead.
      operationId: getObjects
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
          description: The ID of the project
        - name: Accept
          in: header
          required: false
          schema:
            type: string
            enum:
              - application/json
              - text/plain
            default: application/json
          description: >-
            Response format: 'application/json' returns a JSON array,
            'text/plain' returns tab-separated values
            (object_id\tobject_content)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - objects
              properties:
                objects:
                  $ref: '#/components/schemas/ObjectIdArray'
            example:
              objects: '["object-id-1", "object-id-2"]'
      responses:
        '200':
          description: The requested objects. Format depends on Accept header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectArray'
              example:
                - id: object-id-1
                  speckle_type: Base
                  totalChildrenCount: 0
                - id: object-id-2
                  speckle_type: Base
                  totalChildrenCount: 0
            text/plain:
              schema:
                type: string
              example: "object-id-1\t{\"id\":\"object-id-1\",\"speckle_type\":\"Base\"}\nobject-id-2\t{\"id\":\"object-id-2\",\"speckle_type\":\"Base\"}"
        '401':
          description: Unauthorized - Invalid or missing authentication token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - Insufficient permissions (read permissions required)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      deprecated: true
components:
  schemas:
    ObjectIdArray:
      type: string
      description: A JSON-serialized array of object IDs
      example: '["object-id-1", "object-id-2"]'
    ObjectArray:
      type: array
      items:
        $ref: '#/components/schemas/SpeckleObject'
    Error:
      type: object
      properties:
        message:
          type: string
        statusCode:
          type: integer
    SpeckleObject:
      type: object
      description: A Speckle object
      properties:
        id:
          type: string
        speckle_type:
          type: string
        totalChildrenCount:
          type: integer
        numbers:
          type: array
          items:
            type: number
      example:
        id: 9b2cdb21da092dbd3558a4bc55b2cf7e
        speckle_type: Base
        totalChildrenCount: 0
        numbers:
          - 0.04667752874618203
          - 0.16370857295385177
          - 0.1008153029515465
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Personal access token. Get your token from your Speckle profile
        settings.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.