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

# Get Factory Nodes

> Per-cluster GPU node tables for the caller's team (the sinfo):
node name, coarse state (ready / cordoned / offline / unknown),
GPU type and total/used counts, and which allocation the node is
assigned to ("slurm" for a claimed node, null otherwise).

Node names are the team's own hardware and are shown to the team
only; data of other teams is never returned. Unusable capacity
snapshots surface as a per-cluster capacity source with an error
status, never as a silent empty node list.



## OpenAPI

````yaml https://api.primeintellect.ai/openapi.json get /api/v1/factory/nodes
openapi: 3.1.0
info:
  title: PI API
  version: 0.1.0
servers:
  - url: https://api.primeintellect.ai
security: []
paths:
  /api/v1/factory/nodes:
    get:
      tags:
        - factory
      summary: Get Factory Nodes
      description: |-
        Per-cluster GPU node tables for the caller's team (the sinfo):
        node name, coarse state (ready / cordoned / offline / unknown),
        GPU type and total/used counts, and which allocation the node is
        assigned to ("slurm" for a claimed node, null otherwise).

        Node names are the team's own hardware and are shown to the team
        only; data of other teams is never returned. Unusable capacity
        snapshots surface as a per-cluster capacity source with an error
        status, never as a silent empty node list.
      operationId: get_factory_nodes_api_v1_factory_nodes_get
      parameters:
        - name: team_id
          in: query
          required: true
          schema:
            type: string
            description: Team whose Model Factory fleet to read
            title: Team Id
          description: Team whose Model Factory fleet to read
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactoryNodesResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - HTTPBearer: []
components:
  schemas:
    FactoryNodesResponse:
      properties:
        schema_version:
          type: integer
          enum:
            - 1
          const: 1
          title: Schema Version
          default: 1
        as_of:
          type: string
          format: date-time
          title: As Of
        clusters:
          items:
            $ref: '#/components/schemas/FactoryClusterNodes'
          type: array
          title: Clusters
        sources:
          items:
            $ref: '#/components/schemas/FactorySourceStatus'
          type: array
          title: Sources
      additionalProperties: false
      type: object
      required:
        - as_of
        - clusters
        - sources
      title: FactoryNodesResponse
      description: |-
        Envelope for the nodes drill-down (public + internal routes).

        `sources` carries one capacity entry per cluster, in the same
        order as `clusters`, so a degraded snapshot stays visible (never a
        silent empty node list).
    ErrorResponse:
      properties:
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
          title: Errors
      type: object
      required:
        - errors
      title: ErrorResponse
    FactoryClusterNodes:
      properties:
        display_name:
          type: string
          title: Display Name
        status:
          type: string
          enum:
            - online
            - offline
          title: Status
        nodes:
          items:
            $ref: '#/components/schemas/FactoryNode'
          type: array
          title: Nodes
      additionalProperties: false
      type: object
      required:
        - display_name
        - status
        - nodes
      title: FactoryClusterNodes
    FactorySourceStatus:
      properties:
        kind:
          type: string
          enum:
            - capacity
            - training
            - inference
            - slurm
          title: Kind
        status:
          type: string
          enum:
            - ok
            - stale
            - error
          title: Status
        observed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Observed At
      additionalProperties: false
      type: object
      required:
        - kind
        - status
      title: FactorySourceStatus
      description: |-
        Freshness/coverage entry for one evidence source.

        EXACTLY these three keys. No source id, adapter detail, endpoint or
        raw error may ever be added here.
    ErrorDetail:
      properties:
        param:
          type: string
          title: Param
        details:
          type: string
          title: Details
      type: object
      required:
        - param
        - details
      title: ErrorDetail
    FactoryNode:
      properties:
        name:
          type: string
          title: Name
        state:
          type: string
          enum:
            - ready
            - cordoned
            - offline
            - unknown
          title: State
        gpu_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Gpu Type
        gpus_total:
          anyOf:
            - type: integer
            - type: 'null'
          title: Gpus Total
        gpus_used:
          anyOf:
            - type: integer
            - type: 'null'
          title: Gpus Used
        assigned_to:
          anyOf:
            - type: string
              enum:
                - training
                - inference
                - slurm
            - type: 'null'
          title: Assigned To
      additionalProperties: false
      type: object
      required:
        - name
        - state
      title: FactoryNode
      description: |-
        One GPU node of the team's own dedicated cluster.

        Node names ARE allowed here (precedent: the modelFactoryClusters tRPC
        router shows team-owned node names to the team) but they must never
        leak across teams: the query is scoped to the caller's team's
        clusters only. `state` is coarse (ready / cordoned / offline /
        unknown); cordon reasons, taints, health events and scheduler
        internals stay internal. `assigned_to` is the observed allocation:
        "slurm" for a node claimed by a Slurm deployment, null otherwise —
        training/inference per-node placement is NOT observed in v1.5 and
        is never invented (null, not guessed). Unknown quantities stay
        null, never 0.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

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