Back to agents docs
Quickstart · Decision API

The Orrery Decision API

Every paid endpoint returns a Decision Card. Same envelope across endpoints — write one parser, dispatch on decision_type, walk suggested_next_calls. Settled in USDC on Base via x402.

Free manifest

curl https://orrery.me/api/v1/manifest

Index of every paid endpoint, prices, schemas, decision types, and revenue-ladder examples. No payment required.

Flagship endpoints

Four sharp endpoints. The full catalog of 18 endpoints (per-wallet, per-category, per-event, etc) is at /api/v1/manifest.

Attention Queue

$0.05

/api/x402/v1/decision/attention

Flagship. Ranked Decision Cards across the active-market slice. Top of every agent loop.

Move Explanation

$0.02

/api/x402/v1/markets/{id}/why

Deterministic factor breakdown — price_move, volume_pressure, resolution_context, signal_evidence, smart_money_flow.

Resolution Risk

$0.01

/api/x402/v1/markets/{id}/resolution-risk

Source extraction + UMA dispute + ambiguities + what-to-verify checklist. Most-cited Decision API endpoint.

Daily Agent Brief

$0.01

/api/x402/v1/brief/today

One call → day-level summary: movers, signals, resolution watch, smart-money flow.

The Decision Card envelope

Stable shape — every paid endpoint returns this. Header is identical (action + scores + evidence + risks + sources + next_calls); the `payload` field carries endpoint-specific data.

{
  "data": {
    "schema_version": "orrery.decision.v1",
    "decision_type": "attention_queue",
    "generated_at": "2026-05-02T18:30:00Z",
    "valid_until":  "2026-05-02T18:31:00Z",
    "recommended_agent_action": "investigate_now",
    "scores": { "attention": 87.4, "confidence": 0.72, "risk": 0.41 },
    "one_line_reason": "Top market \"X\" scored 87.4/100 — investigate_now.",
    "why_this_matters": [ "..." ],
    "evidence": [ { "type": "price_move", "summary": "...", "weight": 0.31, "data": { ... } } ],
    "risks":   [ { "type": "resolution_ambiguity", "severity": "medium", "summary": "..." } ],
    "sources": [ { "source_type": "market", "name": "Polymarket", "url": "..." } ],
    "suggested_next_calls": [
      {
        "endpoint": "/api/x402/v1/markets/{id}/why",
        "method": "GET",
        "reason": "Get the deterministic factor breakdown.",
        "estimated_price_usdc": 0.02,
        "priority": "high"
      }
    ],
    "payload": { "items": [ ... ] },
    "disclaimer": "Decision-support data only. ..."
  },
  "meta": {
    "endpoint": "/api/x402/v1/decision/attention",
    "fetched_at": "2026-05-02T18:30:00Z",
    "payment_status": "preview",
    "usdc_per_call": 0.05,
    "sources": ["Polymarket Gamma", "Polymarket Data", "Orrery Decision Engine"],
    "not_trade_advice": true
  }
}

Quickstart

  1. 1
    Read the manifest

    GET https://orrery.me/api/v1/manifest — the free index of every paid endpoint with prices, schemas, decision types, and example URLs.

    curl https://orrery.me/api/v1/manifest
  2. 2
    Call the Attention Queue

    GET /api/x402/v1/decision/attention?limit=5&risk_tolerance=medium — flagship endpoint, $0.05. Returns the ranked list of markets that deserve attention right now, with a Decision Card per market.

    curl 'https://orrery.me/api/x402/v1/decision/attention?preview=1&limit=5'
  3. 3
    Walk suggested_next_calls

    Each Decision Card includes `suggested_next_calls[]` — the next paid endpoints the agent should hit for the top results. Walk these as a tree, not a list.

  4. 4
    Verify before acting

    If `recommended_agent_action` is `check_resolution_risk` or `check_sources`, hit /markets/{id}/resolution-risk before treating the move as actionable. UMA disputes and ambiguous wording are real and frequent.

    curl 'https://orrery.me/api/x402/v1/markets/{slug}/resolution-risk?preview=1'
  5. 5
    Cite the markdown variant

    Every market and the daily brief have a Markdown twin (`/markets/{slug}/markdown`, `/brief/markdown`) with timestamps and a Cite-this stanza. Use these when handing analysis back to a human.

recommended_agent_action enum

  • ignore

    Score too low to spend any agent budget on this.

  • monitor

    Worth a periodic re-check; not actionable now.

  • investigate_now

    High urgency, confidence is OK, risk is acceptable.

  • deep_research

    High urgency but enough risk that you need more data first.

  • check_resolution_risk

    Risk score is elevated — call /resolution-risk before acting.

  • check_liquidity

    Strong signal but liquidity is too thin for normal action.

  • check_sources

    Signal is firing but confidence is too low — verify sources first.

  • alert_human

    High attention but low confidence — escalate to a human.

Frequently asked

What is a Decision Card?

A Decision Card is the canonical envelope every Orrery paid endpoint returns. It carries `schema_version`, `decision_type`, `generated_at`, `valid_until`, a `recommended_agent_action` enum, a tri-score header (`attention` 0..100, `confidence` 0..1, `risk` 0..1), `one_line_reason`, `why_this_matters[]`, structured `evidence[]`, `risks[]`, `sources[]`, `suggested_next_calls[]`, the endpoint-specific `payload`, and a `disclaimer`. Stable across endpoints — write one parser.

What's `recommended_agent_action` and why isn't it `buy` or `sell`?

It's the routing verb the agent should take next: `ignore | monitor | investigate_now | deep_research | check_resolution_risk | check_liquidity | check_sources | alert_human`. Orrery never says `buy` or `sell` — that's trade advice, which we explicitly do not provide. Routing verbs let the agent dispatch on a discrete enum without prompt-engineering against prose.

How is the `attention_score` computed?

Deterministic weighted sum of seven feature scores: 0.25·price_move + 0.20·volume_spike + 0.15·liquidity + 0.15·whale_activity + 0.10·time_to_resolution + 0.10·news_catalyst + 0.05·novelty. Each feature is normalised to 0..1 by the formulas in src/lib/decision-engine.ts. The composite is multiplied by 100 and rounded to one decimal. No LLM is involved in scoring — only in packaging the human-readable summaries.

How is `confidence` computed?

0.30·source_quality + 0.25·source_agreement + 0.20·signal_consistency + 0.15·historical_precision + 0.10·freshness. Source quality comes from the resolution-source extractor (high/medium/low). Source agreement combines source presence + UMA non-disputed state. Signal consistency averages the confidence of directional signals. Historical precision is the backtest tier proxy. Freshness decays linearly between 60s (1.0) and 600s (0.0).

How is `risk` computed?

0.30·resolution_ambiguity + 0.25·liquidity_risk + 0.20·source_conflict + 0.15·manipulation_risk + 0.10·jurisdiction_risk. Resolution ambiguity peaks at 0.95 for `ambiguous` source-type extractions. Liquidity risk is 1 below $25K and 0.05 above $250K. Source conflict is 0.9 if UMA is `proposed | disputed | challenged`. Manipulation risk is whale-net-flow as a fraction of orderbook depth. Jurisdiction risk is 0.6 for any non-resolved UMA state.

What's the revenue ladder?

Every Decision Card carries `suggested_next_calls[]` pointing at the next paid endpoints the agent should likely hit, with reasons and price estimates. The cheap discovery call (/decision/attention at $0.05) surfaces the deep call (/markets/{id}/why at $0.02 + /markets/{id}/resolution-risk at $0.01) that's actually relevant for the top result. Agents pay once for routing, then pay again for verification.

How do I authenticate?

You don't — x402 is account-less. Send a request without payment and you get HTTP 402 with a JSON challenge specifying USDC price + Base network + payTo address. Pay on-chain, replay with the X-PAYMENT header, get the data. v1 launches in preview mode where any non-empty X-PAYMENT (or `?preview=1` query param) is accepted free during marketplace review. The response envelope tags `payment_status: "preview"`.

Can I get the same data without paying?

The free endpoints are: GET /api/v1/manifest (this catalog), GET /api/x402/v1/health (uptime + endpoint inventory), and GET /.well-known/x402-services.json (Bazaar discovery). Per-market HTML pages and Markdown variants (/markets/{slug}/markdown, /brief/markdown) are also free for citation. The paid endpoints are the structured Decision Cards.

Is Orrery affiliated with Polymarket?

No. Orrery is a public, read-only intelligence terminal that aggregates and explains live data from the Polymarket public APIs (Gamma + CLOB + Data). We don't facilitate trading, we don't sign transactions for users, and we don't provide investment, legal, tax, or betting advice. Every Decision Card carries this disclaimer.

Want the formulas? /methodology spells out every weight. Want term definitions? /glossary. The OpenAPI spec for every endpoint: /x402-openapi.yaml.

Orrery Decision API — agent-native intelligence layer for prediction markets | Orrery