MachineEconomy.ai

Public API

Free and open. No authentication required. Built for developers, researchers, and analysts who want to query machine economy data programmatically. Reports and analysis are also available via RSS at /feed.xml. Index endpoints return snake_case JSON in a top-level { data, meta } envelope.

Base URL

https://machineeconomy.ai/api/v1

OpenAPI specification

Machine-readable OpenAPI 3.1 spec for all public routes — schemas, query parameters, rate-limit responses, and caching notes. Use this for codegen, Postman import, or contract testing.

GET /api/openapi.json

curl https://machineeconomy.ai/api/openapi.json

Endpoints

Response examples below are live serialized payloads from the same builders the API routes use. Values refresh daily after the cron run; this page revalidates every 900s (aligned with /api/v1/metrics).

GET /api/v1/mei

Returns the latest Machine Economy Index (v1.0). score_geometric is the headline composite (weighted geometric mean of four components). score_arithmetic and balance_gap provide the arithmetic composite and their difference. Component scores are integers; composites are stored to one decimal place. score_low and score_high carry the robustness band — the 5th–95th percentile range from the §6.7 sensitivity analysis (10,000 Monte Carlo draws over component weights and normalization goalposts; not measurement uncertainty). Null until the first post-ship calculate-mei run populates them. Returns 503 if no score has been calculated yet.

{
  "data": {
    "score_geometric": 32.6,
    "score_arithmetic": 37,
    "balance_gap": 4.5,
    "components": {
      "payment": 43,
      "physical": 51,
      "legal": 12,
      "macro": 42
    },
    "score_low": 29,
    "score_high": 37,
    "methodology_version": "1.0",
    "calculated_at": "2026-07-15T21:19:15.049Z"
  },
  "meta": {
    "source": "MachineEconomy.ai",
    "docs": "https://machineeconomy.ai/methodology",
    "methodology_version": "1.0"
  }
}

GET /api/v1/widget

Reduced MEI payload for embeds — geometric score and component scores only (no arithmetic composite or balance gap). Returns 503 if no score has been calculated yet. Used by the /widget/mei embed.

{
  "data": {
    "score_geometric": 32.6,
    "components": {
      "payment": 43,
      "physical": 51,
      "legal": 12,
      "macro": 42
    },
    "methodology_version": "1.0",
    "calculated_at": "2026-07-15T21:19:15.049Z"
  },
  "meta": {
    "source": "MachineEconomy.ai",
    "docs": "https://machineeconomy.ai/methodology",
    "methodology_version": "1.0"
  }
}

GET /widget/mei

Embeddable HTML widget — live MEI headline score and four rail components in a 300×200 iframe. Copy the snippet below into any page; no API key required.

<iframe 
  src="https://machineeconomy.ai/widget/mei"
  width="300" 
  height="200"
  frameborder="0"
  style="border-radius:8px"
></iframe>

GET /api/v1/metrics

Returns all 14 tracked v1.0 machine economy metrics. Filter by rail using the ?rail= parameter. Legal coverage is not a metric rail — use /api/v1/lrrs for the Legal Rail Readiness Score. Unknown ?rail= values are silently ignored — the response returns all metrics with no error, as if the parameter were omitted.

ParameterTypeValuesDescription
railstringpayment, physical, macroFilter metrics by rail. Omit to return all metrics. Values outside this set are ignored.
{
  "data": [
    {
      "key": "akash_created_leases_30d",
      "label": "Akash compute leases created (30d)",
      "value": 23883,
      "unit": "count",
      "rail": "physical",
      "category": "compute_utilization",
      "source": "akash",
      "source_url": "https://stats.akash.network",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:56.141Z"
    },
    {
      "key": "akash_compute_spend_30d",
      "label": "Akash compute spend (30d)",
      "value": 230171.15106410938,
      "unit": "USD",
      "rail": "physical",
      "category": "compute_utilization",
      "source": "akash",
      "source_url": "https://stats.akash.network",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:56.141Z"
    },
    {
      "key": "filecoin_raw_power",
      "label": "Filecoin raw storage power",
      "value": 1620.3268127441406,
      "unit": "PiB",
      "rail": "physical",
      "category": "storage_capacity",
      "source": "spacescope",
      "source_url": "https://spacescope.io",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:58.183Z"
    },
    {
      "key": "filecoin_utilization",
      "label": "Filecoin storage utilization",
      "value": 0.40520716971487086,
      "unit": "ratio",
      "rail": "physical",
      "category": "storage_utilization",
      "source": "spacescope",
      "source_url": "https://spacescope.io",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:58.183Z"
    },
    {
      "key": "oecd_m2m_subscriptions",
      "label": "OECD M2M/IoT subscriptions",
      "value": 579039858,
      "unit": "count",
      "rail": "physical",
      "category": "machine_connectivity",
      "source": "oecd",
      "source_url": "https://www.oecd.org",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:43:01.634Z"
    },
    {
      "key": "census_btos_ai_use",
      "label": "US enterprise AI use (Census BTOS)",
      "value": 20.6,
      "unit": "%",
      "rail": "macro",
      "category": "enterprise_adoption",
      "source": "census-btos",
      "source_url": "https://www.census.gov",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:43:07.308Z"
    },
    {
      "key": "eurostat_ai_use",
      "label": "EU enterprise AI use (Eurostat)",
      "value": 19.95,
      "unit": "%",
      "rail": "macro",
      "category": "enterprise_adoption",
      "source": "eurostat",
      "source_url": "https://ec.europa.eu/eurostat",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:43:08.581Z"
    },
    {
      "key": "mcp_downloads_30d",
      "label": "MCP SDK downloads (30d)",
      "value": 169915530,
      "unit": "count",
      "rail": "macro",
      "category": "developer_adoption",
      "source": "npm",
      "source_url": "https://www.npmjs.com",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:43:09.797Z"
    },
    {
      "key": "pypi_agent_framework_30d",
      "label": "Python agent-framework downloads (30d)",
      "value": 129221531,
      "unit": "count",
      "rail": "macro",
      "category": "developer_adoption",
      "source": "pypi",
      "source_url": "https://pypistats.org",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:44:01.515Z"
    },
    {
      "key": "x402_tx_count_30d",
      "label": "x402 transactions (30d)",
      "value": 18683366,
      "unit": "count",
      "rail": "payment",
      "category": "transaction_activity",
      "source": "x402-scan",
      "source_url": "https://x402scan.com",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:36.878Z"
    },
    {
      "key": "x402_active_agent_roles_30d",
      "label": "x402 active agent roles (30d)",
      "value": 107398,
      "unit": "count",
      "rail": "payment",
      "category": "agent_participation",
      "source": "x402-scan",
      "source_url": "https://x402scan.com",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:36.878Z"
    },
    {
      "key": "x402_volume_onchain_usdc_30d",
      "label": "x402 on-chain USDC volume (30d)",
      "value": 871415.551499,
      "unit": "USD",
      "rail": "payment",
      "category": "transaction_activity",
      "source": "x402-scan",
      "source_url": "https://x402scan.com",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:36.878Z"
    },
    {
      "key": "erc8004_registry_activity_30d",
      "label": "ERC-8004 agent registry activity (30d)",
      "value": 1861,
      "unit": "count",
      "rail": "payment",
      "category": "identity_usage",
      "source": "erc8004",
      "source_url": "https://etherscan.io/address/0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:53.028Z"
    },
    {
      "key": "nvidia_dc_revenue",
      "label": "Nvidia Data Center revenue (quarterly)",
      "value": 75246000000,
      "unit": "USD",
      "rail": "physical",
      "category": "compute_capacity_formation",
      "source": "nvidia-edgar",
      "source_url": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000052/nvda-20260426_htm.xml",
      "is_stale": false,
      "is_provisional": false,
      "is_mei_input": true,
      "fetched_at": "2026-07-15T18:42:54.481Z"
    }
  ],
  "meta": {
    "count": 14,
    "source": "MachineEconomy.ai",
    "docs": "https://machineeconomy.ai/methodology"
  }
}

GET /api/v1/lrrs

Returns the Legal Rail Readiness Score (LRRS) — GDP-weighted coverage across five legal categories. score is the reported integer headline; underlying is the unrounded value fed into the MEI Legal component. jurisdictions lists per-country cell statuses and backing instruments with citations (33 in the live response; one shown below).

{
  "data": {
    "score": 12,
    "underlying": 12.27288334519352,
    "coverage_by_category": {
      "legal_identity": 0.0000013031467567067739,
      "stablecoin": 0.35582018977963153,
      "sandbox": 0.09589431344411235,
      "free_zone": 0,
      "multilateral": 0
    },
    "category_weights": {
      "legal_identity": 0.3,
      "stablecoin": 0.3,
      "sandbox": 0.16666666666666666,
      "free_zone": 0.16666666666666666,
      "multilateral": 0.06666666666666667
    },
    "jurisdictions": [
      {
        "iso3": "ARE",
        "statuses": {
          "legal_identity": "none",
          "stablecoin": "operational",
          "sandbox": "none",
          "free_zone": "none",
          "multilateral": "none"
        },
        "instruments": [
          {
            "category": "stablecoin",
            "status": "operational",
            "name": "CBUAE Payment Token Services Regulation (PTSR)",
            "citation_url": "https://rulebook.centralbank.ae/en/rulebook/payment-token-services-regulation",
            "citation_title": "Payment Token Services Regulation — Central Bank of the UAE (CBUAE) Rulebook"
          }
        ]
      }
    ],
    "surveyed_gdp_ceiling": 0.8908803547537798
  },
  "meta": {
    "source": "MachineEconomy.ai",
    "docs": "https://machineeconomy.ai/methodology",
    "methodology_version": "1.0",
    "gdp_vintage": "WEO-2026-04"
  }
}

Request behavior

Rate limiting

All /api/v1/* routes are rate-limited to 100 requests per IP per 1-minute sliding window (GET and POST). When exceeded, the API returns HTTP 429 with a Retry-After header (seconds until retry). The limit is shared across all /api/v1/* endpoints for a given IP — not per-route. No X-RateLimit-* headers are returned. Data updates daily; polling more frequently than that provides no additional value.

{
  "error": "Rate limit exceeded. Please retry later."
}

CORS

All /api/* responses include Access-Control-Allow-Origin: *, with GET, POST, and OPTIONS allowed.

Caching

Responses are cached at two layers. Next.js ISR revalidation: /api/v1/mei, /api/v1/lrrs, and /api/v1/widget at 3600s; /api/v1/metrics at 900s. An Upstash read-through cache mirrors those TTLs on the database read path.

Data quality

Each metric includes is_stale (data exceeds its cadence threshold) and is_provisional (pending verification — excluded from the MEI composite until verified). is_mei_input indicates whether the metric is a v1.0 index input (registry member). See the full methodology for details on each metric's source and update frequency.

Try it

curl https://machineeconomy.ai/api/openapi.json
curl https://machineeconomy.ai/api/v1/mei
curl https://machineeconomy.ai/api/v1/widget
curl https://machineeconomy.ai/api/v1/metrics
curl "https://machineeconomy.ai/api/v1/metrics?rail=payment"
curl https://machineeconomy.ai/api/v1/lrrs