Skip to content
SeerDocsWebsite
Browse documentation

Developer documentation API v1

Authorization and execution state

Bind authority to an exact action and preserve uncertainty across the venue boundary.

Order state under uncertain delivery

An admitted action moves to submission. A lost acknowledgment leads to submission_unknown, which resolves by venue lookup rather than replacement submission. Open orders can fill, partially fill or cancel.
Selected transitions emphasize venue acceptance uncertainty. Reconciliation state is orthogonal to execution state; cancellation preserves fills already observed. View full size ↗

An action-bound approval

The action constructor converts a research result into an exact proposal by resolving the account, instrument, direction, quantity, quote and costs. The authorization binds the principal and account to that proposal’s revision, digest, policy and expiry. A body field such as approved:true cannot supply this authority.

Dispatch re-evaluates revocation, account state, quote validity and aggregate commitments. A required single-use authorization is consumed atomically with local admission. The venue’s acknowledgment then establishes its own acceptance state; local authorization alone does not imply a fill.

Action request

POST /v1/actions also requires an Idempotency-Key. The authorization is obtained through a separately authenticated approval or delegation flow; this request does not create that authority. Arbitrary calldata and credentials are excluded.

json
{
  "proposal_id": "proposal_example_1",
  "proposal_revision": 3,
  "authorization_ref": "auth_example_1"
}

State transitions

Current stateEventNext state or constraint
acceptedPreflight succeedsready; resources reserved if required.
accepted / readyPermission denied or expiredrejected before external submission.
readyDispatch beginssubmitting; durable attempt identity recorded.
submittingVenue acknowledgmentopen, partially_filled or filled.
submittingResponse lostsubmission_unknown; reconcile before any new submission.
open / partially_filledFill or cancellation acknowledgmentUpdate unique fills; cancellation applies to remaining quantity.
Any externally active stateStatus disagreementPreserve reconciliation discrepancy separately.

Action projection after an uncertain submission

Zero recorded fill quantity here means no fills have yet been observed in this projection. It does not prove the venue has executed nothing.

json
{
  "action_id": "act_example_1",
  "proposal_id": "proposal_example_1",
  "execution_state": "submission_unknown",
  "reconciliation_state": "pending",
  "venue_order_ref": null,
  "filled_quantity": {"asset": "instrument_example", "atoms": "0", "scale": 0},
  "fills": [],
  "next_step": "query_existing_action"
}

Concurrency and duplicate effects

Capital checks include other agents and outstanding orders. Conditional reservation updates serialize competing claims on the same balance, preventing two agents from independently spending a shared amount.

External recovery uses venue idempotency, stable client-order identifiers and status lookup according to the connection. Fills are deduplicated within account and venue identity. A timeout after dispatch leaves the outcome unresolved; capital remains committed until reconciliation establishes whether the venue accepted or executed the action.

Cancellation and revocation

Revocation blocks new authorized effects; it cannot undo an already accepted external order. Cancellation is a separate venue request whose result must be observed. Partial fills survive cancellation. Brokerage execution, on-chain swaps and derivatives require separate adapter semantics and cannot share a fictional universal atomic rollback.

A lost acknowledgment, step by step

An action is admitted with a stable identity and capital reservation. The venue accepts its order, but the acknowledgment is lost before Seer records the external order reference. The action becomes submission_unknown and its reservation remains committed.

Recovery queries the venue using the connection’s stable submission identity. If the venue reports an open order, Seer attaches that reference and resumes observation. If it reports fills, those fills are ingested by stable identity. An authoritative rejection or absence is interpreted according to the venue’s recovery guarantees; a transport timeout alone is neither. A second newly identified order would risk duplicating the economic effect.

Remaining order quantity

The fill set is deduplicated by stable venue identity within the account. Cancellation changes the status of the unfilled remainder; it does not subtract already executed quantity. Amendments or replacements retain their own linkage and accepted quantity revision.

qremaining=qaccepted−∑f∈Funiqueqf≥0q_{\mathrm{remaining}}=q_{\mathrm{accepted}}-\sum_{f\in\mathcal F_{\mathrm{unique}}}q_f\ge0

From allocation to an authorized order

StepResourceContract
Inspect the accountGET /v1/accounts; POST /v1/account-snapshotsRead current balances, pending actions and supported routes.
Compute target weightsPOST /v1/portfolio-proposalsA computation artifact; not an executable order.
Construct an exact orderPOST /v1/execution-proposalsAccount, snapshot, listing, side, quantity, limit, time-in-force and expiry.
Approve or delegateAccount-owner approval screen; GET /v1/authorizations?proposal_id=…Current authority bound to exact revision and digest. No research token can mint approval.
SubmitPOST /v1/actionsUse proposal_id, proposal_revision, authorization_ref and a persisted idempotency key.
Observe and cancelGET /v1/actions/{id}; POST /v1/actions/{id}/cancellationsA cancellation request is not a confirmed cancellation.
Follow movementsGET /v1/actions/{id}/settlementsInspect each settlement and reconciliation state.

Proposal expiration and authorization discovery

GET /v1/execution-proposals/{id} returns the exact order, quote/cost references, digest and expires_at. An account owner reviews that record in the workspace approval flow. GET /v1/authorizations filtered by proposal_id returns only authorizations visible to the authenticated principal, including mode, bound revision, digest, expiry and revocation status.

At dispatch the server rechecks current authority and financial state. A stale quote, changed balance, expired proposal or revised order requires a refreshed proposal and matching authorization. A completed portfolio optimization does not supply either.

Construct an exact execution proposal

POST /v1/execution-proposals. Example prices and expiry are illustrative; use an actual current quote and account snapshot. The 201 response identifies the proposal revision and digest for account-owner approval.

json
{
  "account_id": "account_example_1",
  "account_snapshot_id": "acctsnap_example_1",
  "instrument_id": "equity:listing:apple-common-xnas",
  "side": "buy",
  "quantity": {
    "asset": "equity:listing:apple-common-xnas",
    "atoms": "10",
    "scale": 0
  },
  "order_type": "limit",
  "limit_price": "100.25",
  "quote_asset": "USD",
  "time_in_force": "day",
  "expires_at": "2026-10-01T20:06:00Z",
  "quote_ref": "quote_example_1"
}

Cost references and signed positions

ExecutionProposal.cost_estimate_ref is an artifact ID resolved through GET /v1/artifacts/{artifact_id}; its kind is tool_result and its tool is execution.cost_estimate. The exact proposal’s quote_ref identifies the size-specific quote used by that cost artifact. A quote with inadequate fillable size, unavailable status or expired validity cannot satisfy executable preflight.

Account Position.quantity is an unsigned magnitude paired with side=long or short. Signed exposure is +quantity for long and −quantity for short, followed by the instrument’s contract multiplier and valuation rules. Order quantities remain nonnegative, with buy/sell describing the requested transaction. A sell does not imply permission to create a short position.

SeerTechnical reference · 1 November 2026