REST API

Two surfaces, one server: registry endpoints for Norien's own records, and /api/* for normalized external data with provenance.

Everything in Norien is a thin client over this API. Reads are public and need no credential; writes (publishing) need a Bearer key. The base URL is https://api.norien.live.

Endpoints

# Registry
GET  /agents                    GET  /tools
GET  /agents/:slug              GET  /tools/:slug
GET  /agents/:slug/versions     GET  /tools/:slug/versions
GET  /agents/:slug/runtime      POST /runtime/inspect
GET  /search                    POST /publish

# Unified data
GET  /api/tokens                GET  /api/contracts/:address
GET  /api/trending              GET  /api/wallets/:address
GET  /api/new                   GET  /api/search
GET  /api/signals               GET  /api/chain
GET  /api/token/:address        GET  /api/providers
GET  /api/token/:address/chart
GET  /api/projects              POST /api/signals/brief  (SSE)
GET  /api/project/:slug

# Account
GET  /api/keys                  POST /api/keys
DELETE /api/keys/:id

The envelope

Every /api/* response carries sources and degraded. If a provider fails the request still succeeds with whatever the others returned — a partial answer is visibly partial rather than quietly incomplete.

{
  "data": { "symbol": "USDG", "price": 1.0002, "holders": 31579 },
  "sources": [
    { "provider": "market-data", "status": "ok", "ms": 210 },
    { "provider": "price-feed",  "status": "skipped", "reason": "no platform mapping" }
  ],
  "degraded": false
}

Authentication

Send a key as a Bearer token: Authorization: Bearer norien_…. Create and revoke keys on the app's API Keys page.

NoteThe live, always-current OpenAPI document and Swagger UI are served at https://api.norien.live/docs.