Skip to content

Issue replacement and schedule old key revocation (owner only)

POST
/dashboard/v1/merchants/{merchantId}/{mode}/api-keys/{id}/roll
curl --request POST \
--url http://localhost:4000/dashboard/v1/merchants/example/test/api-keys/example/roll \
--header 'Content-Type: application/json' \
--header 'idempotency-key: example' \
--cookie better-auth.session_token=<better-auth.session_token> \
--data '{ "grace_hours": 24 }'
merchantId
required
string
mode
required
string
Allowed values: test live
id
required
string
idempotency-key
required

Required retry-safe key; reuse it only for the same operation and request body

string
>= 1 characters <= 255 characters

Required retry-safe key; reuse it only for the same operation and request body

Media typeapplication/json
object
grace_hours

Old key remains valid for this many hours after a successful roll

integer
default: 24 >= 1 <= 72

Replacement key; secret shown once

Media typeapplication/json
object
object
required
string
Allowed values: api_key
id
required
string
mode
required
string
Allowed values: test live
display_prefix
required
string
last_used_at
required
string | null
revoked_at
required
string | null
scheduled_revoke_at
required
string | null
created_at
required
string
secret_key
required

Shown only in this issuance response; never stored or retrievable

string
previous_key
required
object
object
required
string
Allowed values: api_key
id
required
string
mode
required
string
Allowed values: test live
display_prefix
required
string
last_used_at
required
string | null
revoked_at
required
string | null
scheduled_revoke_at
required
string | null
created_at
required
string
Example
{
"object": "api_key",
"mode": "test",
"previous_key": {
"object": "api_key",
"mode": "test"
}
}

Invalid request

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Sign-in required

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Forbidden

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Not found

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Idempotency conflict or invalid state

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}