> For the complete documentation index, see [llms.txt](https://docs.triton.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.triton.one/sui/archival.md).

# Archival service

Long-term gRPC access to Sui history, covering transactions, checkpoints, and object states from genesis.

Full nodes on Sui enforce limited data retention for performance and scalability reasons. Once a full node prunes older data, it is no longer available through the standard gRPC endpoint.

{% hint style="info" %}
At the end of September 2026, Sui ended the implicit fallback from JSON-RPC to the archival service. Triton's Archival service is a separate, Triton-operated endpoint that you query directly over gRPC.
{% endhint %}

The **Archival Storage and Service** solves this by providing long-term, consistent access to the full historical record of the Sui blockchain, including old transactions, checkpoints, and object states from genesis. It is the historical backbone for indexers, analytics platforms, exchanges, and any application that needs to query data older than what a full node retains.

The Archival Service exposes the same `LedgerService` gRPC interface, so if you are already using the standard gRPC API, switching to the archival endpoint for historical lookups requires no client changes beyond the endpoint URL.

{% hint style="warning" %}
The standard gRPC full node endpoint does **not** automatically fall back to Archival when data has been pruned. Your application must query the Archival endpoint explicitly for historical data.
{% endhint %}

***

## Endpoints

| Plan          | Standard gRPC endpoint                        | Archival endpoint                             |
| ------------- | --------------------------------------------- | --------------------------------------------- |
| **Shared**    | `<your-endpoint>.mainnet.sui.rpcpool.com:443` | `archive.mainnet.sui.rpcpool.com:443`         |
| **Dedicated** | `<your-endpoint>.sui.rpcpool.com:443`         | `archive-<your-endpoint>.sui.rpcpool.com:443` |

{% hint style="info" %}
Shared plan clients access the Archival Service via a fixed shared endpoint.

Dedicated plan clients can have their own archival hostname on request. It's served by the same Triton archival service as the shared endpoint.

`<your-endpoint>` is your unique endpoint slug. Both your endpoint and token can be found in your [customer dashboard](https://customers.triton.one/).
{% endhint %}

***

## Authentication

All archival endpoints require the `X-Token` header on every request, the same token used for your standard gRPC endpoint.

Example with `grpcurl`:

```bash
grpcurl \
  -H "X-Token: <your-token>" \
  archive.mainnet.sui.rpcpool.com:443 \
  list
```

***

## What data is available

The Archival Service stores and serves the complete history of the Sui mainnet, including:

* **Transactions**: full transaction data from genesis
* **Checkpoints**: complete checkpoint records
* **Object states**: historical object snapshots at past checkpoints
* **Effects and events**: full transaction effects and emitted events

***

## Using the archival service

The Archival Service uses the standard Sui gRPC `LedgerService` interface. You interact with it the same way as a regular gRPC full node, the only difference is the endpoint URL. As on a full node, a call without a `read_mask` returns only a few identifying fields. See [field masks](/sui/grpc.md#field-masks).

### List available services

```bash
grpcurl \
  -H "X-Token: <your-token>" \
  archive.mainnet.sui.rpcpool.com:443 \
  list
```

On the archival hostname, only `sui.rpc.v2.LedgerService` calls go to the archive. `list` and any other service you call there are answered by a regular full node, so they don't show what the archive covers.

### Get a historical transaction

```bash
grpcurl \
  -H "X-Token: <your-token>" \
  -d '{
    "digest": "<transaction-digest>",
    "read_mask": {
      "paths": ["effects", "events"]
    }
  }' \
  archive.mainnet.sui.rpcpool.com:443 \
  sui.rpc.v2.LedgerService/GetTransaction
```

### Get a historical checkpoint

```bash
grpcurl \
  -H "X-Token: <your-token>" \
  -d '{
    "sequence_number": 12345678
  }' \
  archive.mainnet.sui.rpcpool.com:443 \
  sui.rpc.v2.LedgerService/GetCheckpoint
```

### Get an object at a past version

```bash
grpcurl \
  -H "X-Token: <your-token>" \
  -d '{
    "object_id": "0x<object-id>",
    "version": "<object-version>"
  }' \
  archive.mainnet.sui.rpcpool.com:443 \
  sui.rpc.v2.LedgerService/GetObject
```

{% hint style="info" %}
For dedicated nodes, replace `archive.mainnet.sui.rpcpool.com` with your dedicated archival endpoint `archive-<your-endpoint>.sui.rpcpool.com`.
{% endhint %}

***

## Routing strategy: full node vs archival

A common production pattern is to query your standard gRPC endpoint first for recent data, and fall back to the Archival endpoint when data is not found (i.e. when the node returns `NotFound`).

```
Request
  │
  ▼
Standard gRPC endpoint (<your-endpoint>.mainnet.sui.rpcpool.com,
                        or your dedicated node's hostname)
  │
  ├─ Found → Return result
  │
  └─ NotFound → Retry on Archival endpoint
                  (archive.mainnet.sui.rpcpool.com
                   or archive-<your-endpoint>.sui.rpcpool.com)
```

This keeps latency low for recent data while ensuring full coverage for historical lookups.

***

## Resources

* [Official: Archival Store and Service](https://docs.sui.io/develop/accessing-data/archival-store)
* [Official: Querying Historical Data with Archival Service](https://docs.sui.io/develop/accessing-data/archival-store/using-archival-store)
* The [grpcurl tool](https://github.com/fullstorydev/grpcurl)

***

<i class="fa-life-ring">:life-ring:</i> Contact support by clicking the chat icon in your [customer dashboard](https://customers.triton.one)\ <i class="fa-briefcase">:briefcase:</i> Sales questions? [Contact us](https://triton.one/contact)\ <i class="fa-sparkles">:sparkles:</i> AI agent? Read [llms.txt](https://docs.triton.one/llms.txt)\ <i class="fa-rss">:rss:</i> Follow updates: [Blog](https://blog.triton.one) · [X](https://x.com/triton_one) · [YouTube](https://www.youtube.com/@triton_one_ltd) · [Telegram](https://t.me/tritonone) · [GitHub](https://github.com/rpcpool)
