ar.io Logoar.io Documentation

Admin

Access several password protected features and functions specific to your AR.IO Gateway.

Admin debugging information.

Get detailed information about the current operational state of your AR.IO Gateway, including information about any current warnings or errors.

GET
/ar-io/admin/debug
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/admin/debug"
Empty
Empty

Prioritize a transaction or bundle in the queue.

Stage a specific TX ID as priority for your Gateway to locate and index. This will trigger and queue bundle processing if the transaction is a bundle, and your Gateway is configured to unbundle and index.

POST
/ar-io/admin/queue-tx
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

id?Base64Url43

TX ID of the transaction you would like to prioritize.

Match^[0-9a-zA-Z_-]{43}$

Response Body

curl -X POST "https://turbo-gateway.com/ar-io/admin/queue-tx" \  -H "Content-Type: application/json" \  -d '{    "id": "3lyxgbgEvqNSvJrTX2J7CfRychUD5KClFhhVLyTPNCQ"  }'
{
  "message": "TX queued"
}
"Must provide 'id'"
"Unauthorized"
"Internal Server Error"

Queue a bundle for indexing, bypassing any filter settings by default.

Queue a bundle for indexing, bypassing any filter settings by default.

POST
/ar-io/admin/queue-bundle
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

id?Base64Url43

TX ID of the transaction you would like to prioritize.

Match^[0-9a-zA-Z_-]{43}$

Response Body

curl -X POST "https://turbo-gateway.com/ar-io/admin/queue-bundle" \  -H "Content-Type: application/json" \  -d '{    "id": "3lyxgbgEvqNSvJrTX2J7CfRychUD5KClFhhVLyTPNCQ"  }'
{
  "message": "TX queued"
}

"Must provide 'id'"

"Unauthorized"
"Internal Server Error"

Queue data items for indexing

Queue one or more data items for indexing. This endpoint accepts an array of data item headers and prioritizes them for processing.

POST
/ar-io/admin/queue-data-item
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

Response Body

curl -X POST "https://turbo-gateway.com/ar-io/admin/queue-data-item" \  -H "Content-Type: application/json" \  -d '[    {      "data_size": 0,      "id": "string",      "owner": "string",      "owner_address": "string",      "signature": "string"    }  ]'
{
  "message": "Data item(s) queued"
}
"Must provide array of data item headers"
"Unauthorized"
"Internal Server Error"
"Data item indexer saturated (queue depth 100001 exceeds 100000); retry after backpressure clears"

Optimistically index a signed L1 transaction before it mines

Index one or more signed L1 transaction headers so the transaction is resolvable (GraphQL transaction(id), returning block: null) before it is mined. Trusted/allowlist only: requires the admin bearer token AND OPTIMISTIC_TX_INDEXING_ENABLED=true (disabled by default → 403). Every transaction is cryptographically verified (arweave.transactions.verify), so a forged id or data_root is rejected. The row is inserted with a NULL height and promoted in place when the transaction mines; never-mined rows are reclaimed by the stale-transaction GC. The data is never marked verified while the transaction is unmined (height IS NULL). Accepts a single transaction object or an array, up to OPTIMISTIC_TX_MAX_BATCH_SIZE.

POST
/ar-io/admin/queue-optimistic-tx
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

A signed Arweave L1 transaction header (the same JSON shape returned by GET /tx/:id). The signature is verified server-side, so every consequential field (data_root, owner, target, quantity, reward, last_tx, tags, data_size) is bound to the signature.

idBase64Url43

Transaction ID (sha256 of the signature)

Match^[0-9a-zA-Z_-]{43}$
ownerOwner

Transaction signer's public key

Match^[0-9a-zA-Z_-]{1,683}$
signatureSignature

Transaction signature

Match^[0-9a-zA-Z_-]{1,683}$
last_txstring

Anchor (a recent block hash or tx ID)

data_root?Base64Url43

Merkle root of the transaction's data

Match^[0-9a-zA-Z_-]{43}$
data_size?string

Size of the data in bytes (stringified integer)

format?integer

Transaction format (2 for current data transactions)

target?string

Optional recipient address

quantity?string

Optional transfer amount in winston (stringified integer)

reward?string

Mining reward in winston (stringified integer)

tags?TagList

Optional transaction tags

Response Body

curl -X POST "https://turbo-gateway.com/ar-io/admin/queue-optimistic-tx" \  -H "Content-Type: application/json" \  -d '{    "id": "string",    "owner": "string",    "signature": "string",    "last_tx": "string"  }'
{
  "message": "Optimistic transaction(s) indexed"
}
"Invalid signature for transaction <id>"
"Unauthorized"
"Optimistic tx indexing is disabled"
"Internal Server Error"

Get bundle processing status

Returns detailed status information about a bundle's processing state, including counts of data items, processing timestamps, and retry attempts. This endpoint helps monitor the progress and state of bundle processing through the gateway's pipeline.

GET
/ar-io/admin/bundle-status/{id}
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

Path Parameters

idstring

Bundle ID

Match^[0-9a-zA-Z_-]{43}$

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/admin/bundle-status/string"
{
  "id": "string",
  "formatId": 0,
  "unbundleFilterId": 0,
  "indexFilterId": 0,
  "dataItemCount": 0,
  "matchedDataItemCount": 0,
  "firstQueuedAt": 0,
  "lastQueuedAt": 0,
  "firstSkippedAt": 0,
  "lastSkippedAt": 0,
  "firstUnbundledAt": 0,
  "lastUnbundledAt": 0,
  "firstFullyIndexedAt": 0,
  "lastFullyIndexedAt": 0,
  "rootTransactionId": "string",
  "importAttemptCount": 0,
  "duplicatedDataItemCount": 0,
  "previousUnbundleFilterId": 0,
  "previousIndexFilterId": 0,
  "retryAttemptCount": 0,
  "firstRetriedAt": 0,
  "lastRetriedAt": 0
}
"Must provide a valid bundle id"
"Unauthorized"
"Bundle not found"
"Internal Server Error"

Blocks transactions or data-items so your AR.IO Gateway will not serve them.

Submits a TX ID/data-item ID or sha-256 content hash for content you do not want your AR.IO Gateway to serve. Once submitted, your Gateway will not respond to requests for these transactions or data-items.

WARNING - Testing a TX ID here WILL result in that data being blocked by your Gateway.

PUT
/ar-io/admin/block-data
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

id?string

TX ID for a transaction you want to block.

notes?string

Any notes or comments related to the block data. Documentation purposes only.

source?string

The source from which the block data was obtained. Documentation purposes only.

Response Body

curl -X PUT "https://turbo-gateway.com/ar-io/admin/block-data" \  -H "Content-Type: application/json" \  -d '{    "id": "3lyxgbgEvqNSvJrTX2J7CfRychUD5KClFhhVLyTPNCQ",    "notes": "This content is offensive",    "source": "Public Block list"  }'
Empty
Empty

Blocks an ARNS name so your AR.IO Gateway will not serve it.

Blocks an ARNS name so your AR.IO Gateway will not serve it.

PUT
/ar-io/admin/block-name
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

name?string

The name you want to block.

notes?string

Any notes or comments related to the block name. Documentation purposes only.

source?string

The source from which the block name was obtained. Documentation purposes only.

Response Body

curl -X PUT "https://turbo-gateway.com/ar-io/admin/block-name" \  -H "Content-Type: application/json" \  -d '{}'
Empty
Empty

Unblock an ARNS name.

Unblock an ARNS name so your AR.IO Gateway will serve it again.

PUT
/ar-io/admin/unblock-name
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

name?string

The name you want to unblock.

Response Body

curl -X PUT "https://turbo-gateway.com/ar-io/admin/unblock-name" \  -H "Content-Type: application/json" \  -d '{}'
Empty
Empty

Export data to Parquet format

Initiates an export of data to Parquet format files. This process runs in the background and exports data for the specified block height range.

POST
/ar-io/admin/export-parquet
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

outputDirstring

Directory in the server where Parquet files will be saved

startHeightinteger

Starting block height for the export

Range0 <= value
endHeightinteger

Ending block height for the export

Range0 <= value
maxFileRowsinteger

Maximum number of rows per Parquet file

Range0 <= value

Response Body

curl -X POST "https://turbo-gateway.com/ar-io/admin/export-parquet" \  -H "Content-Type: application/json" \  -d '{    "outputDir": "string",    "startHeight": 0,    "endHeight": 0,    "maxFileRows": 0  }'
{
  "message": "Parquet export started",
  "jobId": "2c3f4f8e-1b2d-4a4e-9e2a-6f2d2c3b4a5e"
}
Empty
"Unauthorized"
Empty
"Internal Server Error"

Get latest Parquet export status (singleton)

Returns the most recently updated export status. Because the server runs at most one export at a time, this endpoint reflects whichever export POSTed last — it can be overwritten mid-poll if another caller submits. Prefer /status/{jobId} for per-job tracking.

GET
/ar-io/admin/export-parquet/status
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/admin/export-parquet/status"
{
  "status": "not_started",
  "jobId": "string",
  "outputDir": "string",
  "startHeight": 0,
  "endHeight": 0,
  "maxFileRows": 0,
  "heightPartitionSize": 0,
  "skipL1Transactions": true,
  "skipL1Tags": true,
  "currentPartitionStart": 0,
  "currentPartitionEnd": 0,
  "completedPartitions": 0,
  "totalPartitions": 0,
  "durationInSeconds": 0,
  "endTime": "2019-08-24T14:15:22Z",
  "endTimestamp": 0,
  "error": "string"
}
"Unauthorized"
"Internal Server Error"

Get Parquet export status for a specific job

Returns the status record for the export identified by jobId (returned by POST /ar-io/admin/export-parquet). The server retains a bounded history of recent jobs; older job ids are evicted and return 404.

GET
/ar-io/admin/export-parquet/status/{jobId}
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

Path Parameters

jobIdstring

Response Body

curl -X GET "https://turbo-gateway.com/ar-io/admin/export-parquet/status/string"
{
  "status": "not_started",
  "jobId": "string",
  "outputDir": "string",
  "startHeight": 0,
  "endHeight": 0,
  "maxFileRows": 0,
  "heightPartitionSize": 0,
  "skipL1Transactions": true,
  "skipL1Tags": true,
  "currentPartitionStart": 0,
  "currentPartitionEnd": 0,
  "completedPartitions": 0,
  "totalPartitions": 0,
  "durationInSeconds": 0,
  "endTime": "2019-08-24T14:15:22Z",
  "endTimestamp": 0,
  "error": "string"
}
"Unauthorized"
Empty
"Internal Server Error"

Prune stable data items

Removes stable data items from the database that were indexed before the specified timestamp. This helps manage database size by removing older, stable data items.

POST
/ar-io/admin/prune-stable-data-items
AuthorizationBearer <token>

ADMIN_API_KEY set in your .env file.

In: header

indexedAtThresholdinteger

Unix timestamp - data items indexed before this time will be pruned

Range0 <= value

Response Body

curl -X POST "https://turbo-gateway.com/ar-io/admin/prune-stable-data-items" \  -H "Content-Type: application/json" \  -d '{    "indexedAtThreshold": 1677721600  }'
{
  "message": "Stable data items pruned successfully"
}
"Invalid indexedAtThreshold - must be a positive integer"
"Unauthorized"
"Internal Server Error"

How is this guide?