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

# Share or unshare SSH key with users



## OpenAPI

````yaml /api-reference/services_documented/cloud_api.yaml patch /cloud/v1/ssh_keys/{project_id}/{ssh_key_id}
openapi: 3.1.0
info:
  title: Gcore OpenAPI – Cloud API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  version: '2026-05-07T20:33:46.548242+00:00'
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: Bare Metal
    x-displayName: Bare Metal
  - name: Container as a Service
    x-displayName: Container as a Service
  - name: Cost Reports
    x-displayName: Cost Reports
  - name: DDoS Protection
    x-displayName: DDoS Protection
  - name: Everywhere Inference
    x-displayName: Everywhere Inference
  - name: Everywhere Inference Apps
    x-displayName: Everywhere Inference Apps
  - name: File Shares
    x-displayName: File Shares
  - name: Floating IPs
    x-displayName: Floating IPs
  - name: Function as a Service
    x-displayName: Function as a Service
  - name: GPU Bare Metal
    x-displayName: GPU Bare Metal
  - name: GPU Virtual
    x-displayName: GPU Virtual
  - name: IP Ranges
    x-displayName: IP Ranges
  - name: Images
    x-displayName: Images
  - name: Instances
    x-displayName: Instances
  - name: Load Balancers
    x-displayName: Load Balancers
  - name: Logging
    x-displayName: Logging
  - name: Managed Kubernetes
    x-displayName: Managed Kubernetes
  - name: Managed PostgreSQL
    x-displayName: Managed PostgreSQL
  - name: Networks
    x-displayName: Networks
  - name: Placement Groups
    x-displayName: Placement Groups
  - name: Projects
    x-displayName: Projects
  - name: Quotas
    x-displayName: Quotas
  - name: Regions
    x-displayName: Regions
  - name: Registry
    x-displayName: Registry
  - name: Reservations
    x-displayName: Reservations
  - name: Reserved IPs
    x-displayName: Reserved IPs
  - name: Routers
    x-displayName: Routers
  - name: SSH Keys
    x-displayName: SSH Keys
  - name: Secrets
    x-displayName: Secrets
  - name: Security Groups
    x-displayName: Security Groups
  - name: Snapshot Schedules
    x-displayName: Snapshot Schedules
  - name: Snapshots
    x-displayName: Snapshots
  - name: Tasks
    x-displayName: Tasks
  - name: User Actions
    x-displayName: User Actions
  - name: User Role Assignments
    x-displayName: User Role Assignments
  - name: Volumes
    x-displayName: Volumes
paths:
  /cloud/v1/ssh_keys/{project_id}/{ssh_key_id}:
    patch:
      tags:
        - SSH Keys
      summary: Share or unshare SSH key with users
      operationId: SSHKeyViewSet.patch
      parameters:
        - in: path
          name: project_id
          required: true
          description: Project ID
          schema:
            description: Project ID
            example: 1
            examples:
              - 1
            title: Project Id
            type: integer
        - in: path
          name: ssh_key_id
          required: true
          description: SSH key ID
          schema:
            description: SSH key ID
            example: 36a7a97a-0672-4911-8f2b-92cd4e5b0d91
            examples:
              - 36a7a97a-0672-4911-8f2b-92cd4e5b0d91
            format: uuid4
            title: Ssh Key Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShareSSHKeySerializer'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeySerializer'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from gcore import Gcore

            client = Gcore(
                api_key=os.environ.get("GCORE_API_KEY"),  # This is the default and can be omitted
            )
            ssh_key = client.cloud.ssh_keys.update(
                ssh_key_id="36a7a97a-0672-4911-8f2b-92cd4e5b0d91",
                project_id=1,
                shared_in_project=True,
            )
            print(ssh_key.id)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/G-Core/gcore-go\"\n\t\"github.com/G-Core/gcore-go/cloud\"\n\t\"github.com/G-Core/gcore-go/option\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tsshKey, err := client.Cloud.SSHKeys.Update(\n\t\tcontext.TODO(),\n\t\t\"36a7a97a-0672-4911-8f2b-92cd4e5b0d91\",\n\t\tcloud.SSHKeyUpdateParams{\n\t\t\tProjectID:       gcore.Int(1),\n\t\t\tSharedInProject: true,\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", sshKey.ID)\n}\n"
components:
  schemas:
    ShareSSHKeySerializer:
      properties:
        shared_in_project:
          description: Share your ssh key with all users in the project
          example: true
          examples:
            - true
            - false
          title: Shared In Project
          type: boolean
      required:
        - shared_in_project
      title: Request body schema for share or unshare keypair
      type: object
    SSHKeySerializer:
      additionalProperties: false
      properties:
        created_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: SSH key creation time
          examples:
            - '2025-06-16T17:05:50Z'
          title: Created At
        fingerprint:
          description: Fingerprint
          example: 86:75:ce:e7:e9:1e:f0:79:ec:6f:d8:92:9b:43:fc:4d
          examples:
            - 86:75:ce:e7:e9:1e:f0:79:ec:6f:d8:92:9b:43:fc:4d
          title: Fingerprint
          type: string
        id:
          description: SSH key ID
          example: 36a7a97a-0672-4911-8f2b-92cd4e5b0d91
          examples:
            - 36a7a97a-0672-4911-8f2b-92cd4e5b0d91
          format: uuid4
          title: Id
          type: string
        name:
          description: SSH key name
          example: my-ssh-key
          examples:
            - my-ssh-key
          maxLength: 255
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        project_id:
          anyOf:
            - type: integer
            - type: 'null'
          description: Project ID
          examples:
            - 1
          title: Project Id
        public_key:
          description: >-
            The public part of an SSH key is the shareable portion of an SSH key
            pair. It can be safely sent to servers or services to grant access.
            It does not contain sensitive information.
          example: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIIjxL6g1II8NsO8odvBwGKvq2Dx/h/xrvsV9b9LVIYKm
            my-username@my-hostname
          examples:
            - >-
              ssh-ed25519
              AAAAC3NzaC1lZDI1NTE5AAAAIIjxL6g1II8NsO8odvBwGKvq2Dx/h/xrvsV9b9LVIYKm
              my-username@my-hostname
          title: Public Key
          type: string
        shared_in_project:
          description: SSH key will be visible to all users in the project
          example: true
          examples:
            - true
          title: Shared In Project
          type: boolean
        state:
          $ref: '#/components/schemas/KeypairState'
          description: SSH key state
          examples:
            - ACTIVE
            - DELETING
      required:
        - id
        - public_key
        - name
        - fingerprint
        - state
        - project_id
        - shared_in_project
        - created_at
      title: SSH key response object
      type: object
    KeypairState:
      enum:
        - ACTIVE
        - DELETING
      title: KeypairState
      type: string
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234$abcdef`
      type: apiKey
      in: header
      name: Authorization

````