---
title: "Creates a new signer."
method: POST
path: "/api/v1/signers"
tags: ["Signers"]
---

# Creates a new signer.

`POST /api/v1/signers`

## Request body

- SignerCreateRequest — Request model for creating a new signer
  - `config` union, required — Signer configuration enum for API requests (without type discriminator)
    - LocalSignerRequestConfig — Local signer configuration for API requests
      - `key` string, required
    - AwsKmsSignerRequestConfig — AWS KMS signer configuration for API requests
      - `key_id` string, required
      - `region` string, required
    - VaultSignerRequestConfig — Vault signer configuration for API requests
      - `address` string, required
      - `key_name` string, required
      - `mount_point` string
      - `namespace` string
      - `role_id` string, required
      - `secret_id` string, required
    - VaultTransitSignerRequestConfig — Vault Transit signer configuration for API requests
      - `address` string, required
      - `key_name` string, required
      - `mount_point` string
      - `namespace` string
      - `pubkey` string, required
      - `role_id` string, required
      - `secret_id` string, required
    - TurnkeySignerRequestConfig — Turnkey signer configuration for API requests
      - `api_private_key` string, required
      - `api_public_key` string, required
      - `organization_id` string, required
      - `private_key_id` string, required
      - `public_key` string, required
    - CdpSignerRequestConfig — CDP signer configuration for API requests
      - `account_address` string, required
      - `api_key_id` string, required
      - `api_key_secret` string, required
      - `wallet_secret` string, required
    - GoogleCloudKmsSignerRequestConfig — Google Cloud KMS signer configuration for API requests
      - `key` GoogleCloudKmsSignerKeyRequestConfig, required — Google Cloud KMS key configuration for API requests
        - `key_id` string, required
        - `key_ring_id` string, required
        - `key_version` integer, required
        - `location` string, required
      - `service_account` GoogleCloudKmsSignerServiceAccountRequestConfig, required — Google Cloud KMS service account configuration for API requests
        - `auth_provider_x509_cert_url` string, required
        - `auth_uri` string, required
        - `client_email` string, required
        - `client_id` string, required
        - `client_x509_cert_url` string, required
        - `private_key` string, required
        - `private_key_id` string, required
        - `project_id` string, required
        - `token_uri` string, required
        - `universe_domain` string, required
  - `id` string — Optional ID - if not provided, a UUID will be generated
  - `type` 'plain' | 'aws_kms' | 'vault' | 'vault_transit' | 'turnkey' | 'cdp' | 'google_cloud_kms', required — Signer type enum for API requests

## Response `201`

Signer created successfully

- ApiResponseSignerResponse
  - `data` object
    - `config` union, required — Signer configuration response Does not include sensitive information like private keys
      - object
        - `address` string, required
        - `key_name` string, required
        - `mount_point` string, nullable
        - `namespace` string, nullable
      - object
        - `address` string, required
        - `key_name` string, required
        - `mount_point` string, nullable
        - `namespace` string, nullable
        - `pubkey` string, required
      - object
        - `key_id` string, required
        - `region` string, nullable
      - object
        - `api_public_key` string, required
        - `organization_id` string, required
        - `private_key_id` string, required
        - `public_key` string, required
      - object
        - `account_address` string, required
        - `api_key_id` string, required
      - object
        - `key` GoogleCloudKmsSignerKeyResponseConfig, required
          - `key_id` string, required
          - `key_ring_id` string, required
          - `key_version` integer, required
          - `location` string, required
        - `service_account` GoogleCloudKmsSignerServiceAccountResponseConfig, required
          - `auth_provider_x509_cert_url` string, required
          - `auth_uri` string, required
          - `client_id` string, required
          - `client_x509_cert_url` string, required
          - `project_id` string, required
          - `token_uri` string, required
          - `universe_domain` string, required
      - object
    - `id` string, required — The unique identifier of the signer
    - `type` 'local' | 'aws_kms' | 'google_cloud_kms' | 'vault' | 'vault_transit' | 'turnkey' | 'cdp', required — Signer type enum used for validation and API responses
  - `error` string
  - `metadata` PluginMetadata
    - `logs` LogEntry[], nullable
      - `level` 'log' | 'info' | 'error' | 'warn' | 'debug' | 'result', required
      - `message` string, required
    - `traces` unknown[], nullable
      - unknown
  - `pagination` PaginationMeta
    - `current_page` integer, required
    - `per_page` integer, required
    - `total_items` integer, required
  - `success` boolean, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `409` — Signer with this ID already exists
- `500` — Internal Server Error

---

[API](https://skmtc.dev/openzeppelin/apis/openzeppelin-relayer-api.md) · [All operations](https://skmtc.dev/openzeppelin/apis/openzeppelin-relayer-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openzeppelin/openzeppelin-relayer-api/revisions/e6e7514284f5/schema)
