Replace the calling key with a new one
Authenticated by the key being replaced — that bearer token IS the proof of ownership, and there is deliberately no email-triggered variant. No request body. Consumes no documents.
Everything follows the new key atomically: tier and limit, the current period's usage (rotation does NOT reset your quota), any past_due flag, the original created date, and the subscription link — including billing events that were already in flight when you rotated.
The plaintext key is returned exactly once, and the old key answers 410 key_rotated from the moment this call succeeds. Deploy first, then rotate. Limited to 3 rotations per key per UTC day; the limit follows the key through a rotation, so chaining does not reset it. Two simultaneous calls cannot both succeed — the loser gets 409.
If you no longer HAVE the key, this endpoint is closed to you — there is nothing to authenticate the call with. What is available instead depends on the tier, and on the free tier it is still immediate.
If you are on a paid plan and the key is gone, email hello@attestwire.com from the address on your Paddle billing receipt. We check the request against Paddle's record of your subscription rather than against the receipt itself — a receipt can be forwarded, so attaching one proves only that somebody has a copy of it — and the replacement is delivered one way only: as a reply to the billing address on file, whoever did the asking. Whoever handles it retires the old key and issues the new one.
We cannot recover a lost free key — not as a matter of policy, but because we never collected anything that could prove it was yours: a free signup address is never verified, and the key itself only ever existed in one HTTP response. The practical answer is faster than support anyway. The limit is one free key per email address, so a different address gets you a working free key on the spot, and a plus-alias such as you+attestwire@example.com counts. That limit keeps casual signups to one key each; it is housekeeping rather than a security control, and it was never meant to trap you. If you would rather we were able to rescue you, that is part of what a paid plan buys: Paddle holds a billing identity we can check.
Request
- Base URL: https://api.attestwire.com
- URL: https://api.attestwire.com/v1/keys/rotate
- Auth: HTTP bearer
Response
Rotated. Store key now; it is never shown again. The other fields are the continuity proof — same tier, same usage.
Example response
{
"key": "aw_live_xxxxxxxx",
"period": "2026-08"
}Changes
No recorded changes to this operation across all 1 revision of this API.