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

# Add SSH key

> Add an SSH public key. Accepted types: Ed25519, RSA (2048–8192 bit), ECDSA (nistp256/384/521). The key is validated, type-checked, and stored with its canonical SHA-256 fingerprint. Returns `202 Accepted` (immediate — no async provisioning needed). Requires compute `manage` access.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/gpu/ssh-keys
openapi: 3.0.3
info:
  title: AI Reserve Gateway API
  description: >-
    The AI Reserve API surface — OpenAI-compatible chat completions,
    Anthropic-compatible messages, Bedrock Converse, images, video, files,
    text-to-speech, realtime voice sessions, and GPU Compute pod/volume
    management — all behind one endpoint and one API key.
  version: 1.0.0
servers:
  - url: https://api.aireserve.com
security:
  - bearerAuth: []
paths:
  /v1/gpu/ssh-keys:
    post:
      tags:
        - GPU Compute
      summary: Add SSH key
      description: >-
        Add an SSH public key. Accepted types: Ed25519, RSA (2048–8192 bit),
        ECDSA (nistp256/384/521). The key is validated, type-checked, and stored
        with its canonical SHA-256 fingerprint. Returns `202 Accepted`
        (immediate — no async provisioning needed). Requires compute `manage`
        access.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - publicKey
              properties:
                name:
                  type: string
                  maxLength: 120
                  description: Display name.
                publicKey:
                  type: string
                  description: OpenSSH public key string (e.g. `ssh-ed25519 AAAA...`).
            example:
              name: my-laptop
              publicKey: ssh-ed25519 AAAA...
      responses:
        '202':
          description: Key added.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeAcceptedResponse'
        '400':
          description: Invalid public key format.
        '403':
          description: Compute `manage` access required.
components:
  schemas:
    ComputeAcceptedResponse:
      type: object
      description: >-
        Response to a `202 Accepted` Compute mutation. All fields are camelCase.
        Use `operationId` to poll `GET /v1/gpu/operations/{id}` for terminal
        status.
      required:
        - accepted
        - resourceId
        - operationId
        - status
      properties:
        accepted:
          type: boolean
          enum:
            - true
        resourceId:
          type: string
          format: uuid
          description: ID of the resource created or mutated.
        resourceType:
          type: string
          enum:
            - pod
            - volume
            - template
            - registry
            - ssh_key
        operationId:
          type: string
          format: uuid
          description: >-
            ID for the durable operation record. Poll `GET
            /v1/gpu/operations/{id}` for terminal status.
        status:
          type: string
          enum:
            - accepted
            - pending
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your AI Reserve API key (aireserve_api_…) from the API Keys page in the
        portal (https://portal.aireserve.com/keys).

````