Developer Documentation

RiskOS exposes four API layers that constrain autonomous agent decisions. Each layer operates independently but they're designed to work as a pipeline: market data flows through Axon, allocations through Tensor, verification through Myelin, and execution plans through Synapse.

Base URL
https://api.sylaris.io/v1
All endpoints require Bearer token authentication.

Quick start

Evaluate a policy constraint in one request, or follow the complete integration loop.

Create API key

Generate credentials in dashboard.

Call /axon/artifact

Fetch your first invariant artefact.

Call /tensor/allocate

Submit invariants for allocation.

Export audit bundle

Download the complete trail.

Single Request Evaluation
bash
"text-blue-600 dark:text-blue-400 font-semibold">curl "text-blue-600 dark:text-blue-400 font-semibold">-X "text-blue-600 dark:text-blue-400 font-semibold">POST https://api.sylaris.io/v1/policy/evaluate \
  "text-blue-600 dark:text-blue-400 font-semibold">-H "Authorization: Bearer sk_live_..." \
  "text-blue-600 dark:text-blue-400 font-semibold">-H "Content-Type: application/json" \
  "text-blue-600 dark:text-blue-400 font-semibold">-d '{
    "network": "arbitrum",
    "asset": "ETH-USD",
    "action": "buy",
    "size_usd": 50000,
    "max_slippage_bps": 15
  }'

Axon — Signal Layer

Axon produces invariant risk artefacts — versioned model outputs that are replayable and deterministic. Five models run in parallel on GPU: fractal regime detection, GBM scenario paths, neural pressure scoring, macro regime classification, and geodesic momentum vectors.

Model Suite Preview
Market state
ShortRangeLongRangeregime
action: HOLDconfidence: 0.91

Fractal emits regime state and stability-informed confidence for guardrail decisions.

Axon Invariants — artifact.json

v0.9
{
  "run_id": "axn_2026_02_09_fractal_001",
  "as_of": "2026-02-09",
  "config_hash": "a1b2...c3d4",
  "model": "fractal",
  "model_version": "v0.9",
  "invariants": {
    "regime_state": "Range",
    "action": "HOLD",
    "confidence": 0.91,
    "stability_flag": true
  }
}
run: axn_2026_02_09_fractal_001
v: fractal.v0.9
hash: a1b2...c3d4
GET
/axon/signals
Fetch latest cached signals for a given asset and network.
GET
/axon/regime
Current regime classification (linear / non-linear / transition).
GET
/axon/models/{model_id}/output
Raw output from a specific model run, including version and config hash.

Tensor — Allocation Engine

Tensor constrains capital allocation into opposing buy/sell baskets with hard budget limits. Submit a proposed allocation and Tensor returns whether it's within bounds — or activates refusal mode if constraints are violated.

Sandbox

Tensor Playground

Example requests and deterministic mock responses — no live data.

Request
{
  "action": "allocate",
  "portfolio_id": "pf_8a2c1e",
  "invariants": {
    "run_id": "axn_2026_02_09_fractal_001",
    "model": "fractal",
    "model_version": "v0.9",
    "as_of": "2026-02-09"
  },
  "risk_budget": 0.12,
  "universe": [
    "AAPL",
    "MSFT",
    "GOOGL",
    "AMZN",
    "NVDA",
    "JPM",
    "V",
    "UNH"
  ],
  "constraints": {
    "max_single_weight": 0.2,
    "max_sector_weight": 0.4,
    "min_positions": 5,
    "turnover_limit": 0.3
  },
  "config": {
    "model_version": "tensor.v0.4.1",
    "objective": "min_variance",
    "rebalance_frequency": "weekly"
  }
}
ResponseOK
{
  "run_id": "tns_2026_02_09_bal_001",
  "model_version": "tensor.v0.4.1",
  "config_hash": "a7f3...c91d",
  "as_of": "2026-02-09T08:00:00Z",
  "status": "OK",
  "weights": {
    "AAPL": 0.148,
    "MSFT": 0.162,
    "GOOGL": 0.121,
    "AMZN": 0.098,
    "NVDA": 0.134,
    "JPM": 0.112,
    "V": 0.118,
    "UNH": 0.107
  },
  "constraints": [
    {
      "name": "max_single_weight",
      "status": "PASS",
      "detail": "Max 16.2% ≤ 20.0% limit"
    },
    {
      "name": "max_sector_weight",
      "status": "PASS",
      "detail": "Tech 56.3% → split across sub-sectors"
    },
    {
      "name": "min_positions",
      "status": "PASS",
      "detail": "8 positions ≥ 5 minimum"
    },
    {
      "name": "turnover_limit",
      "status": "PASS",
      "detail": "Turnover 18.4% ≤ 30.0% limit"
    }
  ]
}
Constraints
max_single_weight
PASS
max_sector_weight
PASS
min_positions
PASS
turnover_limit
PASS
run: tns_2026_02_09_bal_001
v: tensor.v0.4.1
hash: a7f3...c91d

This playground is illustrative and does not call production endpoints.

POST
/tensor/allocate
Submit a proposed allocation for constraint validation.
GET
/tensor/limits
Current vault budget limits and remaining capacity.

Myelin — Verification Layer

Myelin scores LLM-generated trading rationale for hallucination risk. Submit the agent's reasoning alongside source signals, and Myelin returns a calibrated trust score with flagged claims.

POST
/myelin/verify
Submit agent reasoning for hallucination scoring against source data.
GET
/myelin/audit/{decision_id}
Retrieve the full verification report for a past decision.
json
// POST /v1/myelin/verify
// Request
{
  "text-accent-hover">"agent_reasoning": "ETH shows strong bullish momentum...",
  "text-accent-hover">"source_signals": { "text-accent-hover">"run_id": "axn_2026_03_03_001" },
  "text-accent-hover">"claim_refs": ["regime is trending", "momentum is positive"]
}

// Response
{
  "text-accent-hover">"trust_score":"text-orange-400"> 0.87,
  "text-accent-hover">"hallucination_score":"text-orange-400"> 0.02,
  "text-accent-hover">"flagged_claims": [],
  "text-accent-hover">"verified_claims":"text-orange-400"> 2,
  "text-accent-hover">"total_claims":"text-orange-400"> 2
}

Synapse — Decision Layer

Synapse produces the final trading plan by aggregating outputs from all upstream layers. The result is a bounded, auditable decision document with a cryptographic hash for institutional review.

POST
/synapse/plan
Generate a validated trading plan from upstream layer outputs.
GET
/synapse/plan/{plan_id}
Retrieve a past trading plan by ID for audit replay.

Integration flow

Four steps from market data to policy enforcement. Every input is versioned, every output is replayable.

Step 1

Fetch Axon artefact

Request the latest invariant artefact for your asset universe.

GET /axon/artifact?universe=US_LARGE_CAP
Step 2

Validate + store

Verify config_hash, store artefact in your registry for replay.

POST /registry/store { artifact, config_hash }
Step 3

Request Tensor allocation

Submit invariants to Tensor for constrained allocation.

POST /tensor/allocate { invariants, constraints }
Step 4

Enforce policy

Apply allocation to your agent runtime with policy enforcement.

POST /runtime/enforce { allocation, policy }

Monads Ledger

Every operation is tracked in the Monads ledger with audit-grade precision. Artifact generation, allocation requests, and premium features consume monads independently.

ledger entry

Example ledger entry

timestamp2026-02-09T07:42:00Z
event_typeARTIFACT_GENERATION
monads_delta-12
run_idaxn_2026_02_09_001
balance_after7,842
run: mnd_2026_02_09_ldg
v: monads.v1.2.0
hash: e3b0...c442

Core schemas

All API responses follow consistent schemas. Errors return standard HTTP codes with a machine-readable error body.

Error response
json
{
  "text-accent-hover">"error": {
    "text-accent-hover">"code": "CONSTRAINT_VIOLATION",
    "text-accent-hover">"message": "Proposed allocation exceeds vault budget",
    "text-accent-hover">"details": {
      "text-accent-hover">"budget_remaining_usd":"text-orange-400"> 425000,
      "text-accent-hover">"requested_usd":"text-orange-400"> 600000
    }
  }
}
Authentication
bash
# All requests require a Bearer token
"text-blue-600 dark:text-blue-400 font-semibold">curl "text-blue-600 dark:text-blue-400 font-semibold">-H "Authorization: Bearer sk_live_..." \
     https://api.sylaris.io/v1/axon/signals
Rate limits
Standard tier
100 req/min
Pro tier
1,000 req/min
Enterprise
Custom