accountTier
Sets the tier the account's next accountRenew runs at, up or down. The tier, units and limits do not change until that renewal.
Cost: Free. Signed by the owner over method
POST, path/account/v1/<address lowercased>/tierand the body{"tier": ...}. TheARCGATE-KEYheader does not authorize it: a call with only a key is a 401signature_required.Inputs:
address(path), any letter case, andtier(body), one of the paid tiers. The account's current tier cancels a change already scheduled.Returns:
accountId,tier, the account's tier now,scheduledTier, the tier the next renewal runs at (null after a cancel), andperiodEnd, when renewal opens. A lapsed account or one in grace schedules the same way, and a lapse keeps the schedule.Errors:
404
account_not_found: the address has no account.409
tier_does_not_fit: a downgrade whose target tier holds fewer boxes, watches, screens or agent screens than the account's linked boxes have. Nothing is scheduled. The body names thetier, itslimitsand what has to go intoRemove. Held messages are not checked, and an upgrade is never refused.
Next:
accountRenew: pay for the next period onceperiodEndhas passed, at the scheduled tier.accountStatus: readscheduledTier.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tier | Yes | The tier the next `accountRenew` runs at, up or down. The account's current tier cancels a change already scheduled. | |
| 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. |