Trade Strategy Operations

trade_strategy.operation.status_changed

An operation represents one cycle of work against a strategy — an enrollment (initial onboarding of a participant), a top_up (additional funding into an already-enrolled strategy), or a partial_sell (selling part of an enrolled trader's crypto holdings back to fiat). This webhook fires on every state transition of that operation.

ParameterDescriptionType
idUnique identifier for this operation.string (UUID)
strategy_idIdentifier of the strategy this operation belongs to.string (UUID)
request_idIdempotency key from the client request that created this operation.string (UUID)
typeKind of operation. One of enrollment, top_up, partial_sell.string
statusCurrent operation status. See Operation statuses below.string
status_reasonMachine-readable reason for the current status. Empty when not applicable. See Operation status reasons.string
allocationsArray of {underlying_currency, weight} entries describing the target asset mix for this operation. Weights are strings carrying decimal values that sum to 1.array
created_atOperation creation timestamp (UTC, RFC3339).string
updated_atTimestamp of the transition that triggered this webhook (UTC, RFC3339).string

Operation statuses

StatusDescription
validatingRequest received, payload accepted, initial checks underway.
pricingQuotes are being requested for the configured allocations.
settlingQuotes accepted, underlying trades and balance movements are being applied.
settledOperation completed successfully and balances are reflected on the strategy account.
skippedOperation completed without performing any work. (Planned — fires once the rebalance / dust-skip flow lands; current operations do not produce this status.)
failedOperation did not complete. Check status_reason for details.

Operation status reasons

ReasonDescription
no_executionsOperation ended without producing any executions.
all_rejectedEvery underlying execution was rejected — see the corresponding execution webhook for the per-execution reason. Operation status is failed.
all_skippedEvery underlying execution ended skipped. Operation status is skipped. (Planned — fires once the rebalance / dust-skip flow lands.)
partial_successMixed outcome — at least one execution settled and at least one was rejected. Operation status is settled (not failed) with this reason; inspect each execution webhook for the per-participant outcome.


Payload Examples

Operation status pricing

{
    "id": "663a258c-5e7c-456f-9759-73e02db8b5d9",
    "strategy_id": "9ba5e569-a966-42a9-a7ad-666b0a5300f3",
    "request_id": "e4edff9d-422e-41e2-a2a2-a887c6444fde",
    "type": "enrollment",
    "status": "pricing",
    "status_reason": "",
    "allocations": [
        { "underlying_currency": "BTC", "weight": "0.5" },
        { "underlying_currency": "ETH", "weight": "0.5" }
    ],
    "created_at": "2026-05-29T18:56:43Z",
    "updated_at": "2026-05-29T18:56:43Z"
}

Operation status settled

{
    "id": "663a258c-5e7c-456f-9759-73e02db8b5d9",
    "strategy_id": "9ba5e569-a966-42a9-a7ad-666b0a5300f3",
    "request_id": "e4edff9d-422e-41e2-a2a2-a887c6444fde",
    "type": "enrollment",
    "status": "settled",
    "status_reason": "",
    "allocations": [
        { "underlying_currency": "BTC", "weight": "0.5" },
        { "underlying_currency": "ETH", "weight": "0.5" }
    ],
    "created_at": "2026-05-29T18:56:43Z",
    "updated_at": "2026-05-29T18:56:46Z"
}

Operation status failed

{
    "id": "7fb46299-9e74-4c14-9f04-172a005e9aca",
    "strategy_id": "78e8282c-2363-40c2-879a-52e1ee090e45",
    "request_id": "bd64a9bd-0f65-481b-af7a-03e033bc920c",
    "type": "top_up",
    "status": "failed",
    "status_reason": "all_rejected",
    "allocations": [
        { "underlying_currency": "BTC", "weight": "0.5" },
        { "underlying_currency": "ETH", "weight": "0.5" }
    ],
    "created_at": "2026-05-29T18:40:29Z",
    "updated_at": "2026-05-29T18:40:29Z"
}