---
title: "Create API key"
method: POST
path: "/v1/keys"
tags: ["Keys"]
---

# Create API key

`POST /v1/keys`

## Request

- Base URL: `https://api.offshoreproz.com`
- URL: `https://api.offshoreproz.com/v1/keys`
- Auth: none required

**Test keys** are issued immediately. **Live keys** require email OTP verification (POST /v1/keys/verify) and a Stripe payment method on file. Rate-limited: 5 per hour per email, 10 per hour per IP.

## Request body

- object
  - `mode` 'test' | 'live', required
  - `name` string, required: Human label for the key, e.g. 'My Agent'
  - `email` string, email, required: Owner email. Used for OTP (live) and key lookup.

## Response `201`

Test key created immediately

- object
  - `data` object
    - `key` string: Raw key — copy now, never shown again
    - `id` string
    - `mode` 'test'
    - `name` string
  - `request_id` string

## Other responses

- `202`: Live key: OTP sent — call POST /v1/keys/verify
- `400`: Validation error
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/offshoreproz/apis/offshoreproz-agent-api.md) · [All operations](https://skmtc.dev/offshoreproz/apis/offshoreproz-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/offshoreproz/apis/offshoreproz-agent-api/revisions/13026c827538?raw)
