Authorization: Bearer <jwt>.
How a funding or credential failure surfaces
Gotcha: a missing fund or credential does not fail any request. Because
both are optional at create time, a strategy arms happily without them and the
shortfall only surfaces when it tries to fire. The engine records that attempt
as an execution with
action_taken: false and a skip_reason, and returns no
error to anyone. A strategy can sit “armed” for days and never trade.
Poll
GET /api/v1/executions or watch the
trigger events on the SSE stream — both
carry skip_reason — to see why a strategy is armed but not trading.
Funds
A fund is a named spending limit. When a strategy with afund_id fires, the
order cost is reserved against the fund; the reservation is released on a
terminal order state. A strategy can only fire while its fund has headroom.
Gotcha: a fund is not the only cap. A strategy can also carry its own
allocation in
action_config.total_capital, which
is what the strategy_capital_remaining and strategy_spent
DSL variables read. Absent, that allocation is
uncapped and only the fund (if any) bounds the strategy — so a strategy with
neither is unbounded.List funds
Response
Array of fund objects.Create fund
201 Created with the fund object.
Request
Example
Get fund
404.
Update fund
Request
All fields optional.
Disabling a fund makes every strategy linked to it skip with
no_fund — see
the table above.
Delete fund
204 No Content.
Credentials
Credentials are per-exchange API keys. Krisis encrypts the secret material at rest and only ever returns a redacted hint — the raw key and secret are never echoed back, so store your own copy.List credentials
Response
Array of credential objects.Add or update a credential
exchange_id replaces the stored key, it does not create a second one.
Returns 201 Created with the credential object (redacted hint only).
Request
Example
Delete a credential
204 No Content. Strategies on that exchange then skip with
no_credentials.
