Authentication
Create API Key
Step 2 of the API key mint flow. Exchanges a signed challenge for a PARTNER scope API key.
POST
Overview
Submits the signature produced in Request Challenge to mint a new API key. On success, the raw API key is returned exactly once — store it somewhere safe. GRAIL only retains a hash.The signature must be a base64-encoded Ed25519 signature of the challenge
message (the full string returned by Step 1). Do not send base58 — that produces 400 invalid_signature. See the Authentication & Setup guide for a signer snippet.This endpoint is rate-limited to 10 requests per minute per IP. Exceeding the limit returns
429 rate_limited.Request Body
string
required
The
challenge_id returned from POST /v1/auth/challenge.string
required
Base64-encoded Ed25519 signature of the challenge
message, signed by the partner wallet’s private key.string
required
Human-readable label for this key (e.g.,
"production integration", "staging tests"). Shown in the key list.Response
string
The raw API key. Format:
grail_partner_<64-hex>. Pass this in the x-api-key header on all subsequent requests. Shown only once.string
UUID of the key record. Use this to revoke the key later.
string
Always
"PARTNER" for keys minted via this endpoint.string
Echo of the
key_name you supplied.string
The partner wallet that signed the challenge.
string
ISO-8601 timestamp of key creation.
