SKOOR Risk Money movement. Skoored by AI.

Key

API keys: test_ and live_.

Keys let a program or a bank integration call the API without the operator token. A test key may only touch simulated programs and the sandbox; a live key only Column-sourced programs (403 either way). The secret is shown once at creation and only its sha256 is stored. For a key, the operator on the record is key:<prefix> unless an X-Operator header names a person.

ApiKey

Only the sha256 of the secret is stored; the secret is shown once at creation.

FieldTypeNotes
idstring (uuid)
namestring
mode"test" | "live"test_ keys may only touch simulated programs and the sandbox; live_ keys touch Column programs.
prefixstringFirst 12 characters of the secret, for display.
programIdstring | null (uuid)null = every program on the tenant.
scopesstring[][] = all scopes the mode allows.
lastUsedAtstring | null (date-time)
revokedAtstring | null (date-time)
createdAtstring (date-time)

Endpoints

post/api/keys

Create an API key

live keys may be created only when the tenant's Column environment is live or the operator passes confirmLive: true. The secret (test_/live_ + 32 base64url characters) is returned exactly once.

AuthBearer + X-Operator
OperationKey · POST /api/keys

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
namestring
mode"test" | "live"
programId (optional)string (uuid) | null
scopes (optional)string[]
confirmLive (optional)boolean

Responses

201 — The key with its secret, shown once. object

FieldTypeNotes
idstring (uuid)
namestring
mode"test" | "live"
prefixstring
secretstring

400 — Validation failed. 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.

Example

curl -s -X POST "https://skoor.ai/risk/api/keys?tenant=demo" \
  -H "Authorization: Bearer test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "X-Operator: you@bank.example" \
  -H "Content-Type: application/json" \
  -d '{"name":"Northwind integration","mode":"test","programId":null}'

get/api/keys

List keys (never the secret)

AuthBearer + X-Operator
OperationKey · GET /api/keys

Parameters

NameInTypeNotes
tenant (optional)querystringTenant slug. Optional: the bearer token already proves the tenant. Pass it to be explicit.

Responses

200 — Every key on the tenant, including revoked ones. Array of ApiKey

FieldTypeNotes
idstring (uuid)
namestring
mode"test" | "live"test_ keys may only touch simulated programs and the sandbox; live_ keys touch Column programs.
prefixstringFirst 12 characters of the secret, for display.
programIdstring | null (uuid)null = every program on the tenant.
scopesstring[][] = all scopes the mode allows.
lastUsedAtstring | null (date-time)
revokedAtstring | null (date-time)
createdAtstring (date-time)

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.

Example

curl -s "https://skoor.ai/risk/api/keys?tenant=demo" \
  -H "Authorization: Bearer test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "X-Operator: you@bank.example"

delete/api/keys/{id}

Revoke a key

AuthBearer + X-Operator
OperationKey · DELETE /api/keys/{id}

Parameters

NameInTypeNotes
idpathstring (uuid)Key id.
tenant (optional)querystringTenant slug. Optional: the bearer token already proves the tenant. Pass it to be explicit.

Responses

200 — Revoked; the key stops working at once. ApiKey

FieldTypeNotes
idstring (uuid)
namestring
mode"test" | "live"test_ keys may only touch simulated programs and the sandbox; live_ keys touch Column programs.
prefixstringFirst 12 characters of the secret, for display.
programIdstring | null (uuid)null = every program on the tenant.
scopesstring[][] = all scopes the mode allows.
lastUsedAtstring | null (date-time)
revokedAtstring | null (date-time)
createdAtstring (date-time)

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 — Not this tenant's key. 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 DELETE "https://skoor.ai/risk/api/keys/5f3c1c8e-2a44-4c0b-9d0f-2b0a2f6e7c11?tenant=demo" \
  -H "Authorization: Bearer test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "X-Operator: you@bank.example"

← All objects