API Documentation

Programmatic access to Spirit Index data for agents, dashboards, and integrations. The Spirit Index is the quality/curation layer for autonomous agents — designed for external platforms to consume.

Base URL: https://spiritindex.org

Attribution

When displaying Spirit Index data in your application, please include attribution: "Powered by Spirit Index" with a link to https://spiritindex.org.

Data Feed API (v1)

Clean, CORS-enabled endpoints designed for external consumption. All responses include version info and caching headers.

GET/api/v1/scores

Returns all listed agents with scores, grades, and dimensions. By default only shows agents above the quality threshold (20%).

Query Parameters

ParameterTypeDescription
networkstringFilter by network: Virtuals Protocol, Ethereum Native, Moltbook, etc.
tierstringFilter by tier: indexed (editorial) or tracked (auto-scored)
min_scorenumberMinimum score percentage (0-100)
sortstringSort by: score (default), name, inception_date
includestringSet to all to include agents below quality threshold
limitnumberLimit number of results

Example

GET /api/v1/scores?tier=indexed&min_score=50&sort=score

{
  "version": "1.0",
  "updated": "2026-03-12T...",
  "agents": [
    {
      "id": "botto",
      "name": "Botto",
      "score": 70,
      "grade": "C-",
      "tier": "indexed",
      "network": "Ethereum Native",
      "status": "Active",
      "category": "Autonomous Artist",
      "listed": true,
      "dimensions": {
        "persistence": 9,
        "autonomy": 6,
        "cultural_impact": 9,
        ...
      },
      "url": "https://spiritindex.org/botto",
      "badge": "https://spiritindex.org/badge/botto"
    }
  ],
  "meta": {
    "total": 168,
    "listed": 153,
    "indexed": 60,
    "tracked": 108,
    "threshold": 20
  }
}
GET/api/v1/scores/:id

Returns full score data for a single agent including all dimensions with rationale, evidence citations, and score history.

Example

GET /api/v1/scores/plantoid

{
  "version": "1.0",
  "updated": "2026-03-12T...",
  "agent": {
    "id": "plantoid",
    "name": "Plantoid",
    "tagline": "The Blockchain Life Form",
    "score": 67,
    "grade": "D+",
    "tier": "indexed",
    "listed": true,
    "network": "Ethereum Native",
    "dimensions": {
      "persistence": {
        "value": 10,
        "confidence": "high",
        "method": "editorial",
        "label": "Persistence",
        "description": "Does the entity continue to exist...",
        "rationale": "Operating since 2015..."
      },
      ...
    },
    "scoring": {
      "comparable_score": 60,
      "comparable_max": 90,
      "comparable_pct": 67,
      "coverage": 9,
      "total_raw": 60
    },
    "curator_notes": "...",
    "evidence": [ ... ],
    "score_history": [ ... ],
    "url": "https://spiritindex.org/plantoid",
    "badge": "https://spiritindex.org/badge/plantoid"
  },
  "meta": { "threshold": 20 }
}

404 Response

{
  "error": "Agent not found",
  "id": "unknown-agent",
  "hint": "No agent with ID \"unknown-agent\" exists..."
}
POST/api/v1/lookup

Batch lookup scores for multiple agents by ID. Useful for platforms displaying multiple agents at once. Maximum 100 IDs per request.

Request Body

POST /api/v1/lookup
Content-Type: application/json

{
  "ids": ["botto", "aixbt", "luna", "nonexistent"]
}

Response

{
  "version": "1.0",
  "updated": "2026-03-12T...",
  "agents": [
    { "id": "botto", "name": "Botto", "score": 70, "grade": "C-", ... },
    { "id": "aixbt", "name": "aixbt", "score": 42, "grade": "F", ... },
    { "id": "luna", "name": "Luna", "score": 62, "grade": "D-", ... }
  ],
  "not_found": ["nonexistent"],
  "meta": {
    "requested": 4,
    "found": 3,
    "not_found_count": 1,
    "threshold": 20
  }
}

Internal API

The original agent endpoints. Still supported but the v1 data feed above is preferred for external integrations.

GET/api/agents

Returns agents with optional filtering and sorting. Defaults to listed agents only; use ?include=all to include agents below the quality threshold.

Query Parameters

ParameterTypeDescription
includestringSet to all to include unlisted agents
sortstringSort by: total, persistence, autonomy, cultural_impact, economic_reality, governance, tech_distinctiveness, narrative_coherence, name, inception_date
statusstringFilter by status: Active, Dormant, Deceased
tierstringFilter by tier: indexed, tracked
networkstringFilter by network affiliation
categorystringFilter by category (partial match)
limitnumberLimit number of results
fieldsstringComma-separated list of fields to include

Example

GET /api/agents?sort=governance&status=Active&limit=5

{
  "meta": {
    "total": 5,
    "indexed": 60,
    "tracked": 108,
    "total_tracked": 168,
    "below_threshold": 15,
    "threshold": 20,
    "sort": "governance",
    "generated_at": "2026-03-12T...",
    "api_version": "v1"
  },
  "data": [
    {
      "id": "abraham",
      "name": "Abraham",
      "total": 51,
      "listed": true,
      "scores": { ... }
    },
    ...
  ]
}
GET/api/agents/:id

Returns a single agent by ID with full dossier data.

Example

GET /api/agents/plantoid

{
  "meta": {
    "generated_at": "2026-03-12T...",
    "api_version": "v1"
  },
  "data": {
    "id": "plantoid",
    "name": "Plantoid",
    "tagline": "The Blockchain Life Form",
    "total": 60,
    "listed": true,
    "scores": {
      "persistence": { "value": 10, "confidence": "high" },
      ...
    },
    "score_rationale": {
      "persistence": "Operating since 2015...",
      ...
    },
    "evidence": [ ... ],
    "score_history": [ ... ]
  }
}
GET/feed.xml

RSS 2.0 feed of all indexed agents, sorted by most recent score update. Includes custom spirit: namespace with score data.

Custom Elements

  • spirit:total — Total score (0-90)
  • spirit:status — Entity status
  • spirit:dimensions — All 9 dimension scores
View feed

Static Exports

Pre-generated files for LLM consumption and static integrations:

Command Line Interface

Query the Spirit Index from your terminal. Zero dependencies, Node.js 18+.

Install

npm install -g spirit-index

Commands

spirit-index lookup <id>         Look up a single agent
spirit-index search <query>      Search by name, network, category
spirit-index top [--limit=N]     Top-scoring agents (default: 10)
spirit-index compare <id1> <id2> Side-by-side comparison
spirit-index badge <id>          Badge embed URLs

Example

$ spirit-index lookup plantoid

  PLANTOID
  The Blockchain Life Form
  ──────────────────────────
  Score: 70/90 (78%) B+
  Status: Active | Autonomous Sculpture | INDP

  PER  AUT  IMP  ECO  GOV  TEC  NAR  ECI  IDS
   10    8    8    6    8    9   10    5    6

Embeddable Badges

Display your Spirit Index score on your website, GitHub README, or documentation.

GET/badge/:id

Query Parameters

ParameterValuesDescription
stylecompact (default), minimalCompact = two-panel shields.io style. Minimal = score only.
themedark (default), lightDark = for dark backgrounds. Light = white/gray for light sites.

Variants

compact dark
/badge/plantoid
compact light
/badge/plantoid?theme=light
minimal dark
/badge/plantoid?style=minimal
minimal light
/badge/plantoid?style=minimal&theme=light

Embed

Markdown

[![Spirit Index](https://spiritindex.org/badge/YOUR_ID)](https://spiritindex.org/YOUR_ID)

HTML

<a href="https://spiritindex.org/YOUR_ID">
  <img src="https://spiritindex.org/badge/YOUR_ID" alt="Spirit Index">
</a>

Rate Limits & Caching

Caching

API responses are cached with max-age=3600 (1 hour browser) and s-maxage=86400 (24 hours CDN). Static exports update on each deployment.

Rate Limits

Rate limits follow Vercel's defaults. For the batch lookup endpoint, requests are capped at 100 IDs. If you need high-volume access, contact us.

Quality Threshold

The Spirit Index applies a quality threshold of 20% comparable score. Agents below this threshold are still tracked internally but are hidden from the default index view and API responses.

To include unlisted agents, add ?include=all to any listing endpoint. The listed boolean on each agent indicates whether it meets the threshold.