Skip to content

Indexer REST API ​

The SLASettle Indexer service provides a read-optimized REST API that parses on-chain Soroban events into indexed records for fast client consumption.

  • Hosted Production Endpoint: https://slasettle-indexer.slasettle-indexer.workers.dev
  • Hosting Engine: Cloudflare Workers with Cloudflare D1 SQL storage
  • Design Boundary: Read-only. The API contains zero write endpoints and holds no signing keys.

API Endpoints ​

1. Health Status (GET /v1/health) ​

Returns ingestion engine health and the most recently ingested ledger sequence.

Response 200 OK:

json
{
  "status": "ok",
  "last_indexed_ledger": 5214890
}

2. Network Clock (GET /v1/clock) ​

Returns the authoritative network reference timestamp and active round sequence.

Response 200 OK:

json
{
  "current_time": "2026-10-07T14:32:00.000Z",
  "unix_timestamp": 1791383520,
  "round_length_seconds": 60,
  "current_round_id": 29856392
}

3. Active Watchers (GET /v1/watchers) ​

Returns the list of currently authorized watcher nodes (removed_at IS NULL).

Response 200 OK:

json
{
  "data": [
    {
      "address": "GA4WTXER6HGGZUXEPIOFYRTMOM34Q675DEAAK3WLBIO2FY7ENFNNDQHK",
      "registered_at": "2026-10-01T12:00:00Z"
    }
  ],
  "next_cursor": null
}

4. Active Round Status (GET /v1/slas/:slaId/current-round) ​

Aggregates checks submitted during the active round for a specified SLA.

Parameters:

  • slaId: Numerical SLA identifier (path parameter).

Response 200 OK:

json
{
  "round_id": 29856392,
  "round_started_at": "2026-10-07T14:32:00.000Z",
  "checked_in": [
    {
      "watcher": "GA4WTXER6HGGZUXEPIOFYRTMOM34Q675DEAAK3WLBIO2FY7ENFNNDQHK",
      "status": "up",
      "checked_at": "2026-10-07T14:32:15Z"
    }
  ],
  "not_yet_checked_in": [
    "GB7N22Q..."
  ]
}

5. Settlement History (GET /v1/slas/:slaId/settlements) ​

Chronological list of all executed breach penalty settlements for an SLA.

Parameters:

  • slaId: Numerical SLA identifier (path parameter).
  • limit: Number of records to return (optional, default: 20, maximum: 100).
  • before: Opaque pagination cursor (optional).

Response 200 OK:

json
{
  "data": [
    {
      "round_id": 1042,
      "votes_up": 1,
      "votes_down": 4,
      "quorum_threshold": 3,
      "penalty_amount": "10000000",
      "beneficiary": "GBAKUA3AN6MNXF6RREUBQRN3Z6JKT3IH5O6T3WUK3JRYVIWFN45XNVJ2",
      "tx_hash": "6522d8b77e135fc60154089d89b2b720d71593eed0de63916187eef16897d147",
      "ledger_close_time": "2026-10-01T12:45:00Z",
      "explorer_url": "https://stellar.expert/explorer/testnet/tx/6522d8b77e135fc60154089d89b2b720d71593eed0de63916187eef16897d147"
    }
  ],
  "next_cursor": null
}

Error Handling & CORS Policy ​

  • 400 Bad Request: Returned when path parameters or query constraints (e.g. invalid cursor or negative limits) fail validation.
  • 404 Not Found: Returned if an SLA identifier has no recorded events.
  • 500 Internal Error: Returned if upstream Soroban RPC queries or database reads experience an unhandled failure.
  • CORS Allowlist: Cross-Origin Resource Sharing is controlled via strict allowlists (ALLOWED_ORIGINS). Wildcard origins (*) are disallowed in production deployments.