---
title: "Create API-key policy revision"
method: POST
path: "/v1/api-keys/{keyId}/policy-profiles/{profileId}/revisions"
tags: ["API Keys"]
---

# Create API-key policy revision

`POST /v1/api-keys/{keyId}/policy-profiles/{profileId}/revisions`

Appends an immutable rule snapshot to an API-key control profile without activating it.

## Path parameters

- `keyId` string, required — API key identifier.
- `profileId` string, required

## Headers

- `x-project-id` string — Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

## Request body

- object — Create a new immutable API-key control profile revision.
  - `rules` union[], required — Complete rule snapshot for the new immutable revision.
    - union — Operation-level API-key policy rule.
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'operation_family', required
        - `family` 'transfer' | 'payment' | 'ramp' | 'issuance' | 'program'
        - `families` string[]
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'operation_type', required
        - `operationType` 'earn_vault_deposit' | 'issuance_burn_execute' | 'issuance_force_burn_execute' | 'issuance_mint_execute' | 'issuance_seize_execute' | 'issuance_update_authority_execute' | 'payment_transfer_batch_execute' | 'payment_transfer_execute' | 'ramp_offramp_quote' | 'ramp_onramp_quote' | 'recurring_payment_collection' | 'recurring_payment_create' | 'recurring_payment_update'
        - `operationTypes` string[]
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'asset', required
        - `asset` string
        - `assets` string[]
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'destination', required
        - `allowlist` string[]
        - `blocklist` string[]
        - `destination` string
        - `destinations` string[]
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'amount', required
        - `min` string
        - `max` string
        - `asset` string
        - `assets` string[]
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'approval', required
        - `families` string[]
        - `operationTypes` string[]
        - `assets` string[]
        - `approvalGroupId` string
      - object
        - `id` string
        - `name` string
        - `description` string
        - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
        - `kind` 'always', required
  - `defaultAction` 'allow' | 'deny' | 'approval_required' | 'review', required — Decision used when no rule matches.

## Response `201`

API-key control profile revision created

- object — Standard success response envelope.
  - `data` object, required
    - `revision` object, required — Immutable API-key control profile revision.
      - `id` string, required — Immutable API-key control profile revision ID.
      - `profileId` string, required — Parent control profile ID.
      - `revisionNumber` integer, required — Revision number.
      - `rules` union[], required — Revision policy rules.
        - union — Operation-level API-key policy rule.
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'operation_family', required
            - `family` 'transfer' | 'payment' | 'ramp' | 'issuance' | 'program'
            - `families` string[]
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'operation_type', required
            - `operationType` 'earn_vault_deposit' | 'issuance_burn_execute' | 'issuance_force_burn_execute' | 'issuance_mint_execute' | 'issuance_seize_execute' | 'issuance_update_authority_execute' | 'payment_transfer_batch_execute' | 'payment_transfer_execute' | 'ramp_offramp_quote' | 'ramp_onramp_quote' | 'recurring_payment_collection' | 'recurring_payment_create' | 'recurring_payment_update'
            - `operationTypes` string[]
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'asset', required
            - `asset` string
            - `assets` string[]
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'destination', required
            - `allowlist` string[]
            - `blocklist` string[]
            - `destination` string
            - `destinations` string[]
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'amount', required
            - `min` string
            - `max` string
            - `asset` string
            - `assets` string[]
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'approval', required
            - `families` string[]
            - `operationTypes` string[]
            - `assets` string[]
            - `approvalGroupId` string
          - object
            - `id` string
            - `name` string
            - `description` string
            - `action` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review'
            - `kind` 'always', required
      - `defaultAction` 'allow' | 'deny' | 'approval_required' | 'review', required — Decision used when no rule matches.
      - `createdBy` string, nullable, required — Revision author ID.
      - `createdAt` string, date-time, required — ISO 8601 timestamp.
      - `activatedAt` string, date-time, nullable, required — ISO 8601 timestamp.
  - `meta` object, required — Response metadata.
    - `requestId` string, required — Request identifier for tracing.
    - `timestamp` string, date-time, required — ISO 8601 timestamp.

## Other responses

- `400` — Error
- `401` — Error
- `403` — Error
- `404` — Error
- `500` — Error

---

[API](https://skmtc.net/solana/apis/solana-developer-platform-api.md) · [All operations](https://skmtc.net/solana/apis/solana-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solana/solana-developer-platform-api/revisions/672b1916ba61/schema)
