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

# Add Member



## OpenAPI

````yaml https://api.primeintellect.ai/openapi.json post /api/v1/slurm-clusters/{team_id}/{job_id}/members
openapi: 3.1.0
info:
  title: PI API
  version: 0.1.0
servers:
  - url: https://api.primeintellect.ai
security: []
paths:
  /api/v1/slurm-clusters/{team_id}/{job_id}/members:
    post:
      tags:
        - slurm-clusters
      summary: Add Member
      operationId: add_member_api_v1_slurm_clusters__team_id___job_id__members_post
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: string
            title: Team Id
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            title: Job Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddMemberRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterMemberResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - HTTPBearer: []
components:
  schemas:
    AddMemberRequest:
      properties:
        username:
          type: string
          maxLength: 32
          minLength: 2
          pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
          title: Username
        sshAuthorizedKeys:
          items:
            type: string
          type: array
          minItems: 1
          title: Sshauthorizedkeys
        linkedUserId:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Linkeduserid
      type: object
      required:
        - username
        - sshAuthorizedKeys
      title: AddMemberRequest
    ClusterMemberResponse:
      properties:
        username:
          type: string
          title: Username
        uid:
          type: integer
          title: Uid
        sshAuthorizedKeys:
          items:
            type: string
          type: array
          title: Sshauthorizedkeys
        sudo:
          type: boolean
          title: Sudo
        status:
          type: string
          title: Status
        linkedUserId:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkeduserid
        linkedUserName:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkedusername
        linkedUserEmail:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkeduseremail
      type: object
      required:
        - username
        - uid
        - sshAuthorizedKeys
        - sudo
        - status
      title: ClusterMemberResponse
      description: |-
        Customer-facing member roster row.

        Includes `uid` and `ssh_authorized_keys` deliberately, unlike
        `frontierCluster.ts`'s `teamSlurmMemberSchema.omit(...)` — neither is
        secret (an SSH *public* key is meant to be shared; the POSIX uid is
        an internal identifier, not a credential), and both are genuinely
        useful for troubleshooting ("which key is this teammate's login
        actually using", "does this uid match the file ownership I'm
        seeing"). The dashboard's redaction was about what its roster
        component happened to render, not a security boundary — this is a
        deliberate, considered divergence from strict TS parity, not an
        oversight.

        There is no per-member group id anywhere in this system's data
        model to expose alongside uid — group assignment, if any, is an
        internal detail of lldap/the ldap-reconciler that never reaches
        `ClusterMember`/`ClusterMemberOut`.
    ErrorResponse:
      properties:
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
          title: Errors
      type: object
      required:
        - errors
      title: ErrorResponse
    ErrorDetail:
      properties:
        param:
          type: string
          title: Param
        details:
          type: string
          title: Details
      type: object
      required:
        - param
        - details
      title: ErrorDetail
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

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