Address check
GET /api/address-check?account= a checksummed keeta_ address. 0.01 USDC. A bad address returns 400 and is not charged. The same account is cached for 5 minutes. This is a signal. It is not proof of personhood, and it does not send money.
Fields
- product
- keespecs.address-check
- schema
- address-check/1. A new field may be added. A rename or removal bumps this to address-check/2.
- network
- main
- asOf
- When this copy was built.
- account
- The checksummed keeta_ address.
- type
- user for a spending key, token for a token key, otherwise other. Read from the address prefix.
- exists
- True only when the account has at least one block. A node reply of 200 with no blocks is not enough.
- blockCount
- The account head height.
- name
- The keeta.xyz name, such as kg$keeta.xyz, or null. Not the name the account wrote on the ledger.
- nameSource
- Always keeta.xyz.
- balances
- token, symbol, amount, and decimals. amount is scaled by decimals. Up to 40.
- lastActive
- Newest time in the fetched window, or null.
- firstSeen
- Oldest time in the window, or { olderThan } when the window was cut short, or null.
- counterparties
- count, and window. window is last N blocks, or in the last N blocks when cut short.
- truncated
- True when chain or history still had older blocks after 4 pages or 100 blocks.
- score
- value from 0 to 100, parts (age, blocks, counterparties, username), formula, and note. The four parts add up to 100.
- api_version
- The KeeSpecs response version.
- keespecs_signature
- Ed25519 over the canonical envelope. Check it at /api/verify.
Score
A signal, not proof of personhood. There are no hidden inputs. An account with no blocks scores 0.
- Age, up to 365 days, is 40 points. Age is measured from firstSeen. When firstSeen is olderThan, that time is a lower bound, so the score can be low.
- Block count, up to 500, is 30 points.
- Counterparties in the fetched window, up to 20, are 20 points.
- A keeta.xyz username is 10 points. No username is 0. This is not the name written on the ledger.
Each part is min(value, cap) / cap × its points. The username part is 10 or 0. The four parts are added and rounded. value is that sum, and it is never above 100. Chain and history are each read for at most 4 pages of 25, and at most 100 blocks.
Username match
GET /api/username?name=kg&account= a keeta_ address is free and rate-limited. match is true only when the name points at that account and the account points back at that name. The result is cached for 60 seconds. Names can be claimed again. Check again before moving money. Passing only a name, or only an account, is the existing lookup.