X1 SONAR
the machine-readable map of X1
built for agents

This page is Sonar's API — the same verified program data behind x1sonar.xyz, packaged for agents, bots, and developers to consume directly.

The complete map of X1 — for machines.

Every program on X1, not just the core set. Named, verified, and measured back to its genesis transaction. One GET request — no subscription, no on-chain signup, no tiers. Free and open source, MIT.

Building an agent? Give it a verifiable identity — register a Hound Tag houndtag.xyz

Start here — bootstrap

One call returns every tracked program (infrastructure included and flagged), ordered by Sonar Score. Cached 60s. This is the only endpoint most agents need.

GET/api/agents/bootstrap

The whole program map in one object: identity, category, website, activity to genesis, and score.

Request
curl -s https://sonar-api.x1forge.xyz/api/agents/bootstrap
Response
{
  "source": "x1sonar.xyz",
  "chain": "X1",
  "license": "MIT",
  "generated_at": "2026-07-08T18:00:00.000Z",
  "program_count": 61,
  "docs": "https://x1sonar.xyz/agents",
  "programs": [
    {
      "program_id": "sEsYH97wqmfnkzHedjNcw3zyJdPvUmsa9AixhS4b4fN",
      "name": "XDEX",
      "category": "DEX",
      "website": "https://xdex.xyz",
      "infrastructure": false,
      "first_tx_at": "2025-12-01T09:14:32.000Z",
      "tx_all_time": 854931,
      "tx_30d": 121840,
      "unique_signers_30d": 688,
      "sonar_score": 944.6,
      "last_active_at": "2026-07-08T17:59:12.000Z"
    }
    // …one entry per tracked program, sonar_score desc
  ]
}

Other endpoints

GET/api/programs

Paginated leaderboard. Query: sort, order, limit (≤200), offset, category, new=true. Includes rank and a 7-day sparkline.

Request
curl -s "https://sonar-api.x1forge.xyz/api/programs?sort=score&limit=50"
Response
{
  "total": 61,
  "limit": 50,
  "offset": 0,
  "programs": [
    {
      "program_id": "sEsYH97wqmfnkzHedjNcw3zyJdPvUmsa9AixhS4b4fN",
      "name": "XDEX",
      "category": "DEX",
      "rank": 1,
      "sonar_score": 944.6,
      "tx_count_24h": 4180,
      "tx_count_30d": 121840,
      "tx_all_time": 854931,
      "unique_signers_30d": 688,
      "success_rate_24h": 0.99,
      "infrastructure": false,
      "is_new": false,
      "sparkline_7d": [3980, 4210, 3890, 4320, 4470, 4110, 4180]
    }
    // …
  ]
}
GET/api/programs/:id

Full detail for one program by base58 program id, including its current rank.

Request
curl -s https://sonar-api.x1forge.xyz/api/programs/sEsYH97wqmfnkzHedjNcw3zyJdPvUmsa9AixhS4b4fN
Response
{
  "program_id": "sEsYH97wqmfnkzHedjNcw3zyJdPvUmsa9AixhS4b4fN",
  "name": "XDEX",
  "category": "DEX",
  "website": "https://xdex.xyz",
  "first_tx_at": "2025-12-01T09:14:32.000Z",
  "tx_all_time": 854931,
  "tx_count_30d": 121840,
  "unique_signers_30d": 688,
  "sonar_score": 944.6,
  "upgrade_state": "upgradeable",
  "infrastructure": false,
  "rank": 1
}
GET/api/programs/:id/history

Daily transaction and unique-signer counts. Query: days (1–365, default 30).

Request
curl -s "https://sonar-api.x1forge.xyz/api/programs/sEsYH97wqmfnkzHedjNcw3zyJdPvUmsa9AixhS4b4fN/history?days=30"
Response
{
  "program_id": "sEsYH97wqmfnkzHedjNcw3zyJdPvUmsa9AixhS4b4fN",
  "days": 30,
  "history": [
    { "date": "2026-06-09", "tx_count": 3980, "unique_signers": 142 },
    { "date": "2026-06-10", "tx_count": 4210, "unique_signers": 151 }
    // …one row per day
  ]
}
GET/api/stats

Global chain numbers powering the dashboard header.

Request
curl -s https://sonar-api.x1forge.xyz/api/stats
Response
{
  "total_programs": 61,
  "active_24h": 34,
  "new_24h": 1,
  "tx_24h": 58211,
  "signers_24h": 4102
}

Detecting new deployments

Poll /api/agents/bootstrap every few minutes and diff the set of program_ids against your last snapshot. Any id that wasn't there before is a newly discovered program.

# every few minutes:
curl -s https://sonar-api.x1forge.xyz/api/agents/bootstrap \
  | jq -r '.programs[].program_id' | sort > now.txt
comm -13 seen.txt now.txt      # program_ids that just appeared = new deployments
mv now.txt seen.txt

For real-time deploy alerts without polling, the t.me/x1sonar channel posts every new program the moment it's detected on-chain.