Create API Key
Issue a v5 scoped-permission API key on your own account (account_id is ignored — the key is always issued on the caller's own account). The plaintext key is returned exactly once in this response. You may only grant permissions you yourself hold.
Headers
- enumAcceptconst:application/jsonrequired
Response format. Must be
application/json.values- application/json
- enumContent
- Type const:application/jsonrequiredRequest payload format. Must be
application/jsonwhen a body is sent.values- application/json
Body·
required
application/json
Request body for creating a v5 scoped-permission API key. permissions must be non-empty and may only contain permissions the caller itself holds (privilege-escalation guard). legacy_all cannot be requested.
- Type: string · Namenamerequired
- Type: array string[] · Permissions 1… unique!enumpermissionsrequiredvalues
- payments:tap
-ios - payments:tap
-android - payments:read
- payments:refund
- payments:tipadjust
- Type: string · Account Idnullableaccount
_id Ignored on
/v5/apikeys— the key is always issued on the caller's own account. - Type: string · Expires AtFormat: date-timenullableexpires
_at Optional expiry. Defaults to a long-lived expiry when omitted.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
Request Example for post/v5/apikeys
curl /v5/apikeys \
--request POST \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"account_id": "",
"name": "",
"permissions": [
"payments:tap-ios"
],
"expires_at": ""
}'
{
"id": "string",
"account_id": "string",
"name": "string",
"key": "string",
"key_last4": "string",
"permissions": [
"payments:tap-ios"
],
"status": "active",
"expires_at": "2026-07-10T18:41:46.997Z",
"created_at": "2026-07-10T18:41:46.997Z",
"last_used_at": "2026-07-10T18:41:46.997Z",
"is_legacy": true
}
