---
title: "Create a new API key"
method: POST
path: "/secrets/api/keys"
tags: ["Secrets"]
---

# Create a new API key

`POST /secrets/api/keys`

Use when issuing a new API key (e.g. for a service account or for the current user). Provide service_account_id to create for a service account.

## Request body

- CreateAPIKeyRequest
  - `expires_at` string, date-time
  - `name` string, required
  - `service_account_id` string
  - `type` 'private_key' | 'publishable_key' | 'integration', required

## Response `201`

Created

- CreateAPIKeyResponse
  - `api_key` string
  - `secret` SecretResponse
    - `created_at` string, date-time
    - `display_id` string
    - `expires_at` string, date-time
    - `id` string
    - `last_used_at` string, date-time
    - `name` string
    - `provider` 'flexprice' | 'stripe' | 's3' | 'hubspot' | 'razorpay' | 'chargebee' | 'quickbooks' | 'zoho_books' | 'nomod' | 'moyasar' | 'paddle' | 'whop' | 'tabs' | 'aws_marketplace' | 'gcp_marketplace' | 'azure_marketplace'
    - `roles` string[] — RBAC roles
    - `service_account_name` string — name of the service account (populated for service_account user_type)
    - `status` 'published' | 'deleted' | 'archived'
    - `type` 'private_key' | 'publishable_key' | 'integration'
    - `updated_at` string, date-time
    - `user_id` string — user or service account this key belongs to
    - `user_type` 'user' | 'service_account'

## Other responses

- `400` — Invalid request
- `500` — Server error

---

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