data-anchor-api 0.3.0

The shared API for the Data Anchor indexer.
Documentation

Data Anchor API

This crate defines the API interfaces used when interacting with the Data Anchor indexer service.

API

The indexer service exposes data via a JSONRPC server. Here is an overview of the available methods:

get_blobs

Retrieve a list of blobs for a given slot and blober pubkey. Returns an error if there was a database or RPC failure, and None if the slot has not been completed yet. If the slot is completed but no blobs were uploaded, an empty list will be returned.

Signature

async fn get_blobs(&self, blober: Pubkey, slot: u64) -> RpcResult<Option<Vec<Vec<u8>>>>;

get_blobs_by_blober

Retrieve a list of blobs for a given blober pubkey and time range. Returns an error if there was a database or RPC failure, and an empty list if no blobs were found.

Signature

async fn get_blobs_by_blober(&self, blober: BlobsByBlober) -> RpcResult<Vec<Vec<u8>>>;

Parameters:

pub struct TimeRange {
    pub start: Option<DateTime<Utc>>,
    pub end: Option<DateTime<Utc>>,
}

pub struct BlobsByBlober {
    pub blober: Pubkey,
    #[serde(flatten)]
    pub time_range: TimeRange,
}

Which equals to the following options in JSON:

{
  "blober": "BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK"
}
{
  "blober": "BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK",
  "start": "2025-06-09T14:35:06.538958843Z"
}
{
  "blober": "BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK",
  "start": "2025-06-09T14:30:06.538958843Z",
  "end": "2025-06-09T14:35:06.538958843Z"
}

get_blobs_by_payer

Retrieve a list of blobs for a given payer pubkey, network ID, and time range. Returns an error if there was a database or RPC failure, and an empty list if no blobs were found.

Signature

async fn get_blobs_by_payer(&self, payer: BlobsByPayer) -> RpcResult<Vec<Vec<u8>>>;

Parameters:

pub struct BlobsByPayer {
    pub payer: Pubkey,
    pub network_name: String,
    #[serde(flatten)]
    pub time_range: TimeRange,
}

Which equals to the following options in JSON:

{
  "payer": "BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK",
  "network_name": "ping"
}
{
  "payer": "BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK",
  "network_name": "ping",
  "start": "2025-06-09T14:35:06.538958843Z"
}
{
  "payer": "BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK",
  "network_name": "ping",
  "start": "2025-06-09T14:30:06.538958843Z",
  "end": "2025-06-09T14:35:06.538958843Z"
}

get_proof

Retrieve a proof for a given slot and blober pubkey. Returns an error if there was a database or RPC failure, and None if the slot has not been completed yet.

Signature

async fn get_proof(&self, blober: Pubkey, slot: u64) -> RpcResult<Option<CompoundProof>>;

get_proof_for_blob

Retrieve a compound proof that covers a particular blob. Returns an error if there was a database or RPC failure, and None if the blob does not exist.

Signature

async fn get_proof_for_blob(&self, blob_address: Pubkey) -> RpcResult<Option<CompoundProof>>;

Usage

To use the indexer API you can either use our pre-built CLI, Rust client, or if calling from any other language, simply create and send JSONRPC requests.

curl example

curl "<INDEXER-URL>" -XPOST \
    -H 'Content-Type: application/json' \
    --data '{"jsonrpc":"2.0","id":1,"method":"get_blobs","params":["BAugq2PZwXBCw72YTRe93kgw3X6ghB3HfF7eSYBDhTsK",385430344]}'