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

# Add a new signing key

> Adds a new signing key to the workspace. The added key will be linked to the specific Fireblocks agent user ID. The same user will receive the proof of ownership message to be signed, and upon successful proof, the key will become enabled.



## OpenAPI

````yaml https://docs.fireblocks.com/api/v1/swagger.yaml post /key_link/signing_keys
openapi: 3.0.0
info:
  title: Fireblocks API
  description: >
    Fireblocks provides a suite of applications to manage digital asset
    operations and a complete development platform to build your business on the
    blockchain.


    - Visit our website for more information: [Fireblocks
    Website](https://fireblocks.com)

    - Visit our developer docs: [Fireblocks
    DevPortal](https://developers.fireblocks.com)
  version: 1.6.2
  contact:
    email: developers@fireblocks.com
servers:
  - url: https://api.fireblocks.io/v1
    description: Fireblocks Production Environment Base URL
  - url: https://sandbox-api.fireblocks.io/v1
    description: Fireblocks Sandbox Environment Base URL
security: []
paths:
  /key_link/signing_keys:
    post:
      tags:
        - Key Link (Beta)
      summary: Add a new signing key
      description: >-
        Adds a new signing key to the workspace. The added key will be linked to
        the specific Fireblocks agent user ID. The same user will receive the
        proof of ownership message to be signed, and upon successful proof, the
        key will become enabled.
      operationId: createSigningKey
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSigningKeyDto'
      responses:
        '201':
          description: Newly created signing key
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: >-
            const response: Promise<FireblocksResponse<SigningKeyDto>> =
            fireblocks.keyLinkBeta.createSigningKey(keyLinkBetaApiCreateSigningKeyRequest);
        - lang: Java
          source: >-
            CompletableFuture<ApiResponse<SigningKeyDto>> response =
            fireblocks.keyLinkBeta().createSigningKey(createSigningKeyDto,
            idempotencyKey);
        - lang: Python
          source: >-
            response =
            fireblocks.key_link_beta.create_signing_key(create_signing_key_dto,
            idempotency_key);
components:
  parameters:
    X-Idempotency-Key:
      name: Idempotency-Key
      in: header
      description: >-
        A unique identifier for the request. If the request is sent multiple
        times with the same idempotency key, the server will return the same
        response as the first request. The idempotency key is valid for 24
        hours.
      required: false
      schema:
        type: string
  schemas:
    CreateSigningKeyDto:
      type: object
      properties:
        signingDeviceKeyId:
          type: string
          maxLength: 256
          example: MyKey1
          description: >-
            The ID, name or label of the key specified on the customer's signing
            device.
        signedCertPem:
          type: string
          example: '-----BEGIN CERTIFICATE ... END CERTIFICATE-----'
          description: >-
            The signed certificate that includes the public key PEM of the
            signing key, signed by a validation key.
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user to which this key belongs
        proofOfOwnership:
          type: object
          description: An object containing proof of ownership for the signing key.
          properties:
            message:
              description: >-
                The message to be signed by the key as proof of ownership. 64 to
                1024 bytes in hexadecimal format.
              type: string
              minLength: 64
              maxLength: 2048
            signature:
              description: The signature of the message. 64 bytes in hexadecimal format.
              type: string
              minLength: 64
              maxLength: 128
          required:
            - message
            - signature
      required:
        - signingDeviceKeyId
        - signedCertPem
        - agentUserId
    SigningKeyDto:
      type: object
      properties:
        keyId:
          type: string
          minLength: 36
          maxLength: 36
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
          description: External signing key id set by Fireblocks.
        signingDeviceKeyId:
          type: string
          maxLength: 256
          example: MyKey1
          description: >-
            The ID, name or label of the key specified on the customer's signing
            device.
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ... END PUBLIC KEY-----'
          description: PEM encoded public key
        algorithm:
          type: string
          example: ECDSA_SECP256K1
          description: >-
            Algorithm and curve used for the signature. Can be: ECDSA_SECP256K1
            or EDDSA_ED25519
        enabled:
          type: boolean
          example: true
          description: True if the signing key is enabled
        vaultAccountId:
          type: number
          nullable: true
          example: 10
          description: Id of the vault account which this key is linked to
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user that represent agent servers that can sign with the key
        createdAt:
          type: number
          example: 124757537
          description: Creation date (timestamp) in milliseconds.
      required:
        - keyId
        - signingDeviceKeyId
        - publicKeyPem
        - algorithm
        - enabled
        - vaultAccountId
        - agentUserId
        - createdAt
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
  headers:
    X-Request-ID:
      schema:
        type: string
      description: >-
        Unique ID correlated to the API request. Please provide it in any
        support ticket you create or on Github issues related to Fireblocks SDKs
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'

````