keyRotate
Gives a key a new secret and keeps its id and label. The old secret stops working at once, over HTTP and MCP, and the key's lastUsedAt is null until the new secret is used.
Cost: Free. Signed by the owner over method
POST, path/account/v1/<address lowercased>/key/<id>/rotateand no body (the hash of no bytes). TheARCGATE-KEYheader does not authorize it: a call with only a key is a 401signature_required.Inputs:
addressandid(path). No body.Returns: the
id, thelabeland the newkey, shown only now.Errors:
404
account_not_found: the address has no account.404
key_not_found: the account has no key with that id. It was never made, was revoked, or is another account's.
Next:
keyList: read the account's keys.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A key's id, `key_` and 22 base64url characters, as `keyCreate` and `keyList` answer it. It is not the secret. | |
| address | Yes | The account owner's address, any letter case. One account per address, and a signed request must be signed by it. | |
| agentSignature | No | The owner's EIP-712 signature over this request, as the AGENT-SIGNATURE, AGENT-NONCE and AGENT-EXPIRY headers carry it over HTTP. Sign the typed data `AccountRequest` (not `AgentRequest`) with fields `origin` (the API's base URL with no trailing slash: the URL this request is sent to less its path, for example `https://api.arcgate.dev`; over MCP the same, not the /mcp URL), `address` (the owner), `method`, `path`, `bodyHash`, `nonce` and `expiry`, in that order. A signature made for another deployment's origin is a 401 invalid_signature, under the domain {name: "arcgate", version: "1"} with no chainId (a wallet that can only sign with one may add the chainId of the chain this deployment serves). The `path` is the request path with the address lowercased. The `bodyHash` is the keccak256 of the canonical JSON of the body you send (sorted keys, no whitespace), or of no bytes when there is none. Each nonce is accepted once per owner. Omitting it is a 401 signature_required, never a charge. |