ar.io Logoar.io Documentation

Gateway

Operations related to the AR.IO Gateway server itself, including health checks, metrics, and gateway-specific information

Gateway Info or Apex Content

Returns either gateway information or serves content based on configuration:

  • If neither APEX_TX_ID nor APEX_ARNS_NAME is set, returns gateway information
  • If APEX_TX_ID is set, serves that transaction's content
  • If APEX_ARNS_NAME is set, resolves and serves that ArNS name's content

The Content-Type of the response will match the content type of the transaction or ArNS-resolved data (e.g., text/html for HTML documents, application/json for JSON documents, application/octet-stream for binary data, etc.).

GET
/

Response Body

curl -X GET "https://turbo-gateway.com"
{
  "wallet": "string",
  "ans104UnbundleFilter": {},
  "ans104IndexFilter": {},
  "supportedManifestVersions": [
    "0.1.0"
  ],
  "release": "string"
}

Health check endpoint

Get the current health status of the AR.IO Gateway.

GET
/ar-io/healthcheck

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/healthcheck"
{
  "status": "ok",
  "uptime": 0,
  "date": "2019-08-24T14:15:22Z",
  "reasons": [
    "string"
  ]
}

Get root transaction offsets for a data item

Returns the location of a data item within its root L1 transaction, from this node's own data: its index first, then CDB64 indexes on its local disk, such as bands installed by Index Sharing.

This is the cheap counterpart to HEAD /raw/{id}, which exposes the same values in X-AR-IO-Root-* headers but only as a side effect of a successful data retrieval — on a cache miss that route runs the node's entire retrieval cascade before answering. This endpoint never reads contiguous data and never makes a network request. A hit costs one index read; a miss costs that plus a read or two per local CDB64 index.

Offsets resolve for any data item this node has unbundled and indexed, or that an installed CDB64 index covers, even when none of its bytes are cached locally. CDB64 indexes are consulted only while cdb is in ROOT_TX_LOOKUP_ORDER, as it is by default.

A 200 is cached for CACHE_DEFAULT_MAX_AGE seconds, short because a band can be replaced or withdrawn; a 404 for CACHE_NOT_FOUND_MAX_AGE seconds with must-revalidate; a 500 is no-store.

A 200 is signed with HTTP Message Signatures (when the gateway signs responses, the default), with Content-Digest binding the body, so it is this gateway's attributable claim. The offsets are still a claim, not proof: confirm them by reading the data item header at rootOffset (its ID must match) or with a chunk proof. An answer from a CDB64 index never includes contentType or dataSize.

GET
/ar-io/offsets/{id}

Path Parameters

idstring

The 43-character base64url data item or transaction ID.

Match^[a-zA-Z0-9_-]{43}$

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/offsets/string"
{
  "rootTxId": "string",
  "path": [
    "string"
  ],
  "rootOffset": 0,
  "rootDataOffset": 0,
  "contentType": "string",
  "size": 0,
  "dataSize": 0
}
"string"
"string"
"string"

Get AR.IO Gateway information

Returns information about the AR.IO Gateway, including:

  • Gateway wallet address
  • The AR.IO Network's Solana program IDs
  • ANS-104 filter configurations
  • Supported manifest versions
  • Gateway software release version
  • Bundler service URLs for data upload service discovery
  • Rate limiter configuration (if enabled)
  • x402 payment protocol configuration (if enabled)
  • HTTPSIG response signing configuration (if enabled)
  • The indexes it publishes, and their feeds (if it publishes any)
GET
/ar-io/info

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/info"
{
  "wallet": "34LYvMptiDvBP5sqfh1oAd6Q4qFsy4PWaZ1HTFmML7h5",
  "programIds": {
    "core": "73YoECm6NKXpVRoe5f1Q9BcP5DJGPFUjnFy6AxBE5Nvh",
    "gar": "89fNiiwgpFSPHKuqfNUkgYTYjtAJAhyqHjXmgXeppGpf",
    "arns": "2yCUx5edFvUrkibYaUa2ZXWyx9kuJkS8CwyzsgHPWdZZ",
    "ant": "2MWexMHfMhGJwMHv9Qm9YAVCqjUFUJwDJAysW4oCUGk5"
  },
  "ans104UnbundleFilter": {},
  "ans104IndexFilter": {},
  "supportedManifestVersions": [
    "0.1.0"
  ],
  "release": "string",
  "services": {
    "bundlers": [
      {
        "url": "https://turbo.ardrive.io/"
      }
    ]
  },
  "rateLimiter": {
    "enabled": true,
    "dataEgress": {
      "buckets": {
        "resource": {
          "capacity": 1000000,
          "refillRate": 100,
          "capacityBytes": 1024000000,
          "refillRateBytesPerSec": 102400
        },
        "ip": {
          "capacity": 100000,
          "refillRate": 20,
          "capacityBytes": 102400000,
          "refillRateBytesPerSec": 20480
        }
      }
    }
  },
  "x402": {
    "enabled": true,
    "network": "base-sepolia",
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "facilitatorUrl": "https://x402.org/facilitator",
    "dataEgress": {
      "pricing": {
        "perBytePrice": "0.0000000001",
        "minPrice": "0.001000",
        "maxPrice": "1.000000",
        "currency": "USDC",
        "exampleCosts": {
          "1KB": 0.001,
          "1MB": 0.0001024,
          "1GB": 0.1048576
        }
      },
      "rateLimiterCapacityMultiplier": 10
    }
  },
  "httpsig": {
    "algorithm": "ed25519",
    "solanaAddress": "FJwaz3DWJ2TuDRDaBRsE7t29LDm1wB8txPHcBNoCDwkt"
  },
  "indexes": {
    "manifestUrl": "/ar-io/indexes",
    "names": [
      "root-tx-index"
    ],
    "feeds": {
      "parquet-l1": "/ar-io/indexes/feed/parquet-l1.xml"
    }
  }
}

Get AR.IO Gateway peer information

Returns information about AR.IO Gateway peers and Arweave node peers. For gateways, includes both data and chunk weights used for peer selection, and what the gateway registry says about each peer (wallet, observer address, operator stake, status), from the registry read the gateway refreshes hourly. Peer keys are formatted as host:port.

GET
/ar-io/peers

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/peers"
{
  "gateways": {
    "gateway.example.com:443": {
      "url": "https://gateway.example.com",
      "dataWeight": 50,
      "chunkWeight": 50
    }
  },
  "arweaveNodes": {
    "arweave.example.com:1984": {
      "url": "http://arweave.example.com:1984",
      "blocks": 165967,
      "height": 1732652,
      "lastSeen": 1755190447700
    }
  }
}

Get Prometheus metrics

Returns metrics in Prometheus format for monitoring the Gateway's performance and status. These metrics include various counters, gauges, and histograms tracking:

  • HTTP request statistics
  • Transaction processing metrics
  • System resource usage
  • Cache performance
  • Bundle processing statistics
GET
/ar-io/__gateway_metrics

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/__gateway_metrics"
"# HELP errors_total Total error count\n# TYPE errors_total counter\nerrors_total 0\n\n# HELP uncaught_exceptions_total Count of uncaught exceptions\n# TYPE uncaught_exceptions_total counter\nuncaught_exceptions_total 0\n"

How is this guide?