Persist check
GET /api/persist-check?account= a checksummed keeta_ address. 0.02 USDC. A missing or bad address returns 400 and is not charged. This is a pre-flight check. It does not store data, and it does not read how much the account already stores. While payments are down it returns 503. It is not free.
Fields
- product
- keespecs.persist-check
- schema
- persist-check/1. A new field may be added. A rename or removal bumps this to persist-check/2.
- network
- main
- asOf
- When this copy was built. The same account is cached for 60 seconds.
- account
- The checksummed keeta_ address.
- verdict
- ready, caution, or blocked.
- reasons
- Every triggered condition, as a stable code. ready is an empty list.
- rule
- https://keespecs.xyz/docs/persist-check#rule
- storage
- The storage-quotas fields, without a signature. live false means the quotas were reused after the service failed.
- accountInfo
- exists, type, blockCount, and ktaBalance. exists is true only when the account has at least one block. type is user, token, or other from the address prefix. ktaBalance is the KTA amount, or 0.
- permissions
- The same shape as /api/permissions: account, truncated, and grants.
- status
- ledger, settlement, and price. Each is pass, fail, or unknown.
- note
- A pre-flight check, not a guarantee. Quotas are per user; this does not read the account's current usage (that endpoint needs the account's own signature).
- api_version
- The KeeSpecs response version.
- keespecs_signature
- Ed25519 over the canonical envelope. Check it at /api/verify.
Rule
A pre-flight check, not a guarantee. Quotas are per user; this does not read the account's current usage (that endpoint needs the account's own signature). There are no hidden conditions. ready is returned only when none of these fired.
- blocked: the storage service is unreachable and there is no cached copy (storage_unreachable), or the account has no block (account_not_found), or its type is not user (not_user_account), or the ledger check is fail (ledger_fail).
- caution: the quotas are an older copy (storage_stale), or the KTA balance is 0 (no_kta_for_fees), or another account holds ADMIN or ACCESS (delegated_permissions), or settlement is fail (settlement_slow), or settlement is unknown (settlement_unknown: Settlement data is still collecting; not enough samples in the last 15 minutes.), or the price check is fail or unknown (price_unknown), or the ledger check is unknown (ledger_unknown).
- ready: otherwise. reasons is empty. A ready response never includes a reason.
A blocked condition wins over a caution condition. Every code that fired is listed, in this order.