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/:idThe 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.
Note —The live, always-current OpenAPI document and Swagger UI are served at https://api.norien.live/docs.