SKOOR Risk Money movement. Skoored by AI.

Proof

A signed Skoor another bank can verify offline.

An EdDSA-signed compact token carrying what the platform observed about one actor at one moment: the Skoor, its band, the version, n, confidence and the reason ids. Unscored actors cannot be proved (409): there is no proof of a number that does not exist. The public key is published as a JWKS.

ProofClaims

FieldTypeNotes
issstringIssuer: the platform URL.
substring<type>:<id>
tenantstringTenant slug.
programstring | nullProgram id.
skoorinteger
bandstring
versionstring
ninteger
confidencenumber | null
reasonsstring[]Reason-code ids only.
simulated (optional)const truePresent only when the underlying data is simulated.
iatinteger
expinteger24 hours after iat.
jtistringThe actor_skoors row id.

ProofVerification

FieldTypeNotes
validboolean
reason (optional)stringmalformed | unsupported alg | unknown kid | bad signature | expired | no skoor in claims | token required
claims (optional)ProofClaims
expired (optional)boolean

Jwks

FieldTypeNotes
keysobject[]
keys[].ktystring
keys[].crvstring
keys[].xstring
keys[].kidstring
keys[].useconst "sig"
keys[].algconst "EdDSA"

Endpoints

post/api/proofs/actor

Issue a signed proof for an actor

AuthBearer + X-Operator
OperationProof · POST /api/proofs/actor

Parameters

NameInTypeNotes
tenant (optional)querystringTenant slug. Optional: the bearer token already proves the tenant. Pass it to be explicit.
Idempotency-Key (optional)headerstring1–255 characters. A replay with the same body returns the stored status and body with Idempotent-Replayed: true; a different body under the same key is 409.

Request body (application/json, required) · object

FieldTypeNotes
type"entity" | "counterparty" | "agent"
idstring

Responses

201 — A 24-hour EdDSA token, its claims, and where the public key lives. object

FieldTypeNotes
tokenstringCompact JWT (header.payload.signature), alg EdDSA.
claimsProofClaims
jwksUrlstring

400 — type (entity|counterparty|agent) and id required. Error

FieldTypeNotes
errorstringWhat went wrong, in one sentence.
requestId (optional)stringPresent once the gateway is live: the X-Request-Id of the failed request.

401 — Bearer token missing or unknown. Error

FieldTypeNotes
errorstringWhat went wrong, in one sentence.
requestId (optional)stringPresent once the gateway is live: the X-Request-Id of the failed request.

404 — No Skoor on record for the actor. Error

FieldTypeNotes
errorstringWhat went wrong, in one sentence.
requestId (optional)stringPresent once the gateway is live: the X-Request-Id of the failed request.

409 — The actor is unscored; a proof is never issued for a null Skoor. Error

FieldTypeNotes
errorstringWhat went wrong, in one sentence.
requestId (optional)stringPresent once the gateway is live: the X-Request-Id of the failed request.

Example

curl -s -X POST "https://skoor.ai/risk/api/proofs/actor?tenant=demo" \
  -H "Authorization: Bearer test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "X-Operator: you@bank.example" \
  -H "Content-Type: application/json" \
  -d '{"type":"entity","id":"enti_sim_acme"}'

get/api/proofs/verify

Verify a proof

Checks the signature against the platform key, the expiry and the presence of a Skoor. No database access; anyone may call it.

AuthNone (public)
OperationProof · GET /api/proofs/verify

Parameters

NameInTypeNotes
token (optional)querystringThe compact token.

Responses

200 — valid with the claims, or invalid with the reason. ProofVerification

FieldTypeNotes
validboolean
reason (optional)stringmalformed | unsupported alg | unknown kid | bad signature | expired | no skoor in claims | token required
claims (optional)ProofClaims
expired (optional)boolean

400 — token required. ProofVerification

FieldTypeNotes
validboolean
reason (optional)stringmalformed | unsupported alg | unknown kid | bad signature | expired | no skoor in claims | token required
claims (optional)ProofClaims
expired (optional)boolean

Example

curl -s "https://skoor.ai/risk/api/proofs/verify?token=eyJhbGciOiJFZERTQSIs%E2%80%A6"

get/.well-known/skoor-risk-jwks.json

The public key set

AuthNone (public)
OperationProof · GET /.well-known/skoor-risk-jwks.json

Parameters

None.

Responses

200 — JWKS with the current Ed25519 key (cached 5 minutes). Jwks

FieldTypeNotes
keysobject[]
keys[].ktystring
keys[].crvstring
keys[].xstring
keys[].kidstring
keys[].useconst "sig"
keys[].algconst "EdDSA"

Example

curl -s "https://skoor.ai/risk/.well-known/skoor-risk-jwks.json"

← All objects