---
title: "Register a merchant public key for UCP terms verification"
method: POST
path: "/v1/ucp/signing-keys"
---

# Register a merchant public key for UCP terms verification

`POST /v1/ucp/signing-keys`

## Request

- Base URL: `https://api.decionis.com`
- URL: `https://api.decionis.com/v1/ucp/signing-keys`
- Auth: HTTP bearer

Registers only the public half of an EC signing key. Private key
material is rejected. Requires policy:write or org:* scope.

## Request body

- UcpSigningKeyRegistrationRequest
  - `org_id` string, uuid
  - `kid` string, required
  - `algorithm` 'ES256' | 'ES384' | 'ES512', required
  - `public_jwk` UcpPublicEcJwk, required
    - `kty` 'EC', required
    - `crv` 'P-256' | 'P-384' | 'P-521', required
    - `x` string, required
    - `y` string, required
    - `kid` string
    - `alg` 'ES256' | 'ES384' | 'ES512'
    - `use` string
  - `label` string

## Response `201`

Public verification key registered

- UcpSigningKey
  - `service` 'decionis'
  - `kid` string, required
  - `algorithm` 'ES256' | 'ES384' | 'ES512', required
  - `label` string, nullable, required
  - `created_at` string, date-time, required
  - `revoked_at` string, date-time, nullable

## Other responses

- `400`: Structured API error
- `401`: Structured API error
- `403`: Structured API error
- `503`: Structured API error

---

[API](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api.md) · [All operations](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/revisions/357f5e459d0c?raw)
