Skip to main content
Public and unauthenticated, on purpose. Anyone can verify any statement. There is nothing to sign up for and no key to rotate.

Endpoint

string
required
0x followed by 64 hex characters. Anything else returns status: "unknown".

Response

Fields

"valid" | "revoked" | "unknown"
required
The only field that decides whether to proceed. A revoked statement still returns a full record. Read this, not the presence of data.
string | null
The short public reference derived from the credential id, such as orru:cred:7b6a24eb. It is null for invalid input.
object | null
{ id, label }. The range the holder proved every payment fell inside. Never an exact amount. We do not hold one.
number
How many consecutive pay cycles the proof covers. Three today.
string | null
The date of the newest accepted Ethereum evidence record. This is the field your freshness policy applies to. Resolved from the Ethereum block in evidenceEndHeight.
number | null
The Ethereum block containing the newest accepted transfer or anchor. The authoritative value; evidenceEndDate is derived from it for convenience.
object | null
A compatibility view of the dated evidence. The registry currently stores only the end height, not the first period’s height, so from and to are both the date derived from evidenceEndHeight. Do not interpret it as the full payroll date range.
string | null
The wallet the statement belongs to. Proven by signature at issuance, which is what walletBindingProven reports.
string[]
Compatibility labels returned by the current API. payments_occurred means an accepted source record exists. For an on-chain payer that record includes the transfer; for an off-chain payer it is the approved payer’s anchor and does not independently prove bank settlement. The exact expected source and indexed payer are checked before the record is accepted.
string | null
Optional hash of a supporting document supplied at issuance. A valid statement with no document returns the zero bytes32; an unknown statement returns null. Orru never holds the document itself.
string | null
Reserved for transaction discovery. The current endpoint does not index transaction hashes, so it returns null even for a valid statement.
string | null
Reserved for transaction discovery. The current endpoint returns null; use the registry and explorer if the transaction hash is required.

A complete check

Rejecting for age is not the same as the statement being false. It attested a real window; that window is simply older than your policy accepts. Say that in your UI, or your users will think the statement is fake.

Errors

An id that was never issued returns 200 with status: "unknown" rather than a 404. A malformed id also returns that shape. If Creditcoin or the source-height lookup cannot be read, the endpoint returns 502 with { "error": "This statement could not be read." }. Treat that as a failed read, not as an unknown or invalid statement.

Rate limits and keys

None today. Metering and keys are not built; see the roadmap. If you plan to depend on the hosted endpoint at volume, read the contract directly instead, which nobody can rate-limit.