# Authentication
Source: https://docs.rwa.xyz/api/authentication
How to authenticate with the RWA API
All API requests require authentication using a Bearer token in the `Authorization` header.
## Obtaining an API Key
Login to your account at [https://app.rwa.xyz/login](https://app.rwa.xyz/login) and navigate to the API Tools section: [https://app.rwa.xyz/tools/api/api-keys](https://app.rwa.xyz/tools/api/api-keys).
If you do not have access to the API Tools section, contact us at [team@rwa.xyz](mailto:team@rwa.xyz) to request access.
Enter a name for your API key and click "Create API Key".
## Authorization Header Format
```
Authorization: Bearer YOUR_API_KEY
```
## Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/tokens" \
-H "Authorization: Bearer $RWA_API_KEY"
```
## Error Responses
### Missing Authorization Header
**Status Code:** `401 Unauthorized`
```json theme={null}
{
"message": "Authorization header missing. Please include a valid API key."
}
```
### Invalid API Key
**Status Code:** `401 Unauthorized`
```json theme={null}
{
"message": "Invalid API key. Please ensure that the API key is correct and try again."
}
```
# Endpoints
Source: https://docs.rwa.xyz/api/endpoints
Overview of all available API endpoints
## Available Endpoints
The RWA API provides access to various data endpoints organized by resource type. All endpoints support the query language for filtering, sorting, and pagination.
### Assets
Docs: [Assets Endpoint](/api/endpoints/assets)
* `GET /v4/assets` - List assets
* `GET /v4/assets/aggregates` - Get aggregated asset data
* `GET /v4/assets/aggregates/timeseries` - Get timeseries data for asset aggregates
### Tokens
Docs: [Tokens Endpoint](/api/endpoints/tokens)
* `GET /v4/tokens` - List tokens with filtering and sorting
* `GET /v4/tokens/aggregates` - Get aggregated token metrics
* `GET /v4/tokens/aggregates/timeseries` - Get timeseries data for token aggregates
### Networks
Docs: [Networks Endpoint](/api/endpoints/networks)
* `GET /v4/networks` - List networks
### Platforms
Docs: [Platforms Endpoint](/api/endpoints/platforms)
* `GET /v4/platforms` - List platforms
### Issuers
Docs: [Issuers Endpoint](/api/endpoints/issuers)
* `GET /v4/issuers` - List issuers
### Managers
Docs: [Managers Endpoint](/api/endpoints/managers)
* `GET /v4/managers` - List managers
### Service Providers
Docs: [Service Providers Endpoint](/api/endpoints/service-providers)
* `GET /v4/service-providers` - List service providers
### Transactions
Docs: [Transactions Endpoint](/api/endpoints/transactions)
* `GET /v4/transactions` - List transactions
## Metadata Endpoints
Most resource endpoints have a corresponding [`/meta` endpoint](/api/meta) that returns:
* Available fields for filtering and sorting
* Field types and descriptions
* Allowed operators per field
* Select options for enumerated fields
* Default values
**Example:**
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/tokens/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Assets
Source: https://docs.rwa.xyz/api/endpoints/assets
Asset data and aggregates endpoints
Get data about RWA assets across different platforms and networks.
For a complete list of available fields, see the [Assets Schema](/schemas/assets).
## GET /v4/assets
Returns a list of assets with filtering, sorting, and pagination.
**Endpoint:** `GET /v4/assets`
### Query Parameters
* `query` (optional) - JSON-encoded query object
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "equals",
"field": "asset_class_name",
"value": "US Treasury Debt"
},
"sort": { "field": "circulating_market_value_dollar", "direction": "desc" },
"pagination": { "page": 1, "perPage": 5 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 51,
"name": "Circle USYC",
"slug": "circle-usyc",
"ticker": "USYC",
"asset_class_name": "US Treasury Debt",
"issuer_name": "Circle International",
"circulating_market_value_dollar": {
"val": 2394947347.33,
"val_7d": 2118658299.28,
"chg_7d_pct": 13.04
},
"yield_to_maturity_percent": {
"val": 0.0383,
"val_7d": 0.0383
},
"token_count": 3,
"network_names": ["Ethereum", "BNB Chain", "Solana"]
// ... ~200 fields total per asset
}
],
"pagination": { "page": 1, "perPage": 5, "pageCount": 17, "resultCount": 83 }
}
```
Numeric metrics are returned as objects with the current value (`val`), historical snapshots, and percentage changes. See [Responses](/api/responses#metric-objects) for the full format. For a complete list of fields, see the [Assets Schema](/schemas/assets).
## GET /v4/assets/\[assetID]
Returns a single asset by ID.
**Endpoint:** `GET /v4/assets/[assetID]`
### Path Parameters
* `assetID` - The unique identifier for the asset
### Example Request
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/assets/123' \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/assets/aggregates
Returns aggregated asset data with grouping and timeseries support.
**Endpoint:** `GET /v4/assets/aggregates`
### Query Parameters
* `query` - JSON-encoded query with `aggregate` field
### Aggregate GroupBy Options
* `protocol_id`
* `network_id`
* `asset_class_id`
* `date` (for timeseries)
### Example Query
```json theme={null}
{
"aggregate": {
"groupBy": "protocol_id",
"aggregateFunction": "sum"
},
"filter": {
"operator": "equals",
"field": "network_slug",
"value": "ethereum"
}
}
```
### Example Request
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/assets/aggregates?query=%7B%22aggregate%22%3A%7B%22groupBy%22%3A%22protocol_id%22%2C%22aggregateFunction%22%3A%22sum%22%7D%7D' \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/assets/aggregates/meta
Returns [metadata](/api/meta) for the asset aggregates endpoint. Use this to discover available measures and filterable fields for timeseries queries.
**Endpoint:** `GET /v4/assets/aggregates/meta`
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/assets/aggregates/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/assets/aggregates/timeseries
Returns timeseries data for asset aggregates with date-based grouping. See the [Timeseries & Aggregation guide](/api/timeseries) for a detailed walkthrough of grouping, intervals, and modes.
**Endpoint:** `GET /v4/assets/aggregates/timeseries`
### Example Query
```json theme={null}
{
"aggregate": {
"groupBy": "date",
"aggregateFunction": "sum",
"interval": "month",
"mode": "stock"
}
}
```
### Example Request
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/assets/aggregates/timeseries?query=%7B%22aggregate%22%3A%7B%22groupBy%22%3A%22date%22%2C%22aggregateFunction%22%3A%22sum%22%2C%22interval%22%3A%22month%22%2C%22mode%22%3A%22stock%22%7D%7D' \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Issuers
Source: https://docs.rwa.xyz/api/endpoints/issuers
Asset issuer data endpoints
Get data about the entities that issue RWA assets.
## GET /v4/issuers
Returns a list of issuers with filtering, sorting, and pagination.
**Default sort:** `name` ascending | **Default page size:** 25
### Fields
| Field | Type | Filterable | Description |
| ---------------------------------------- | ------ | :--------: | -------------------------------------- |
| `id` | string | Yes | Unique issuer identifier |
| `name` | string | Yes | Issuer name (searchable) |
| `slug` | string | Yes | URL-friendly identifier |
| `description` | string | Yes | Issuer description (searchable) |
| `icon_url` | string | Yes | Issuer logo URL |
| `website` | string | Yes | Issuer website |
| `legal_name` | string | Yes | Legal entity name (searchable) |
| `cik` | string | Yes | SEC Central Index Key |
| `lei` | string | Yes | Legal Entity Identifier |
| `legal_structure_type` | string | Yes | Legal structure (e.g., LLC, Trust) |
| `legal_structure_country_id` | number | Yes | Country of incorporation ID |
| `legal_structure_country_name` | string | Yes | Country of incorporation name |
| `legal_structure_state` | string | Yes | State of incorporation |
| `asset_count` | number | Yes | Number of assets issued |
| `token_count` | number | Yes | Number of tokens issued |
| `bridged_token_value_dollar` | number | Yes | Value of bridged tokens |
| `bridged_token_market_cap_dollar` | number | Yes | Market cap of bridged tokens |
| `holding_addresses_count` | number | Yes | Number of holding addresses |
| `trailing_30_day_transfer_volume` | number | Yes | Transfer volume over trailing 30 days |
| `trailing_30_day_active_addresses_count` | number | Yes | Active addresses over trailing 30 days |
| `daily_mints_dollar` | number | Yes | Daily mint volume (USD) |
| `daily_mints_token` | number | Yes | Daily mint volume (tokens) |
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/issuers' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": { "field": "asset_count", "direction": "desc" },
"pagination": { "page": 1, "perPage": 10 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 1,
"name": "BlackRock",
"slug": "blackrock",
"legal_name": "BlackRock, Inc.",
"website": "https://www.blackrock.com",
"legal_structure_type": "Corporation",
"legal_structure_country_name": "United States",
"asset_count": 3,
"token_count": 8,
"bridged_token_value_dollar": { "val": 2500000000, "val_7d": 2400000000, "chg_7d_pct": 4.17 },
"holding_addresses_count": { "val": 1234, "val_7d": 1200, "chg_7d_pct": 2.83 },
"trailing_30_day_transfer_volume": { "val": 950000000, "val_7d": 920000000 },
"trailing_30_day_active_addresses_count": { "val": 856, "val_7d": 830 },
"daily_mints_dollar": { "val": 15000000, "val_7d": 12000000 },
"daily_mints_token": { "val": 15100000, "val_7d": 12050000 }
}
],
"pagination": { "page": 1, "perPage": 10, "pageCount": 15, "resultCount": 142 }
}
```
Numeric metrics are returned as objects with the current value (`val`), historical snapshots, and percentage changes. See [Responses](/api/responses#metric-objects) for the full format.
## GET /v4/issuers/meta
Returns [metadata](/api/meta) about available fields, filter operators, and select options for the issuers endpoint.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/issuers/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Managers
Source: https://docs.rwa.xyz/api/endpoints/managers
Asset manager data endpoints
Get data about asset managers responsible for managing RWA funds and portfolios.
## GET /v4/managers
Returns a list of managers with filtering, sorting, and pagination.
**Default sort:** `name` ascending | **Default page size:** 25
### Fields
| Field | Type | Filterable | Description |
| ---------------------------------------- | ------ | :--------: | -------------------------------------- |
| `id` | string | Yes | Unique manager identifier |
| `name` | string | Yes | Manager name (searchable) |
| `slug` | string | Yes | URL-friendly identifier (searchable) |
| `description` | string | Yes | Manager description (searchable) |
| `asset_count` | number | Yes | Number of assets managed |
| `bridged_token_value_dollar` | number | Yes | Value of bridged tokens |
| `bridged_token_market_cap_dollar` | number | Yes | Market cap of bridged tokens |
| `holding_addresses_count` | number | Yes | Number of holding addresses |
| `trailing_30_day_transfer_volume` | number | Yes | Transfer volume over trailing 30 days |
| `trailing_30_day_active_addresses_count` | number | Yes | Active addresses over trailing 30 days |
| `daily_mints_dollar` | number | Yes | Daily mint volume (USD) |
| `daily_mints_token` | number | Yes | Daily mint volume (tokens) |
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/managers' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": { "field": "asset_count", "direction": "desc" },
"pagination": { "page": 1, "perPage": 10 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 74,
"name": "Reental America",
"slug": "reental-america",
"asset_count": 20,
"website": "https://www.reental.co/en",
"bridged_token_value_dollar": { "val": 29034335.51, "val_7d": 29050231.26, "chg_7d_pct": -0.05 },
"bridged_token_market_cap_dollar": { "val": 29034335.51, "val_7d": 29050231.26 },
"holding_addresses_count": { "val": 5699, "val_7d": 5707, "chg_7d_pct": -0.14 },
"trailing_30_day_transfer_volume": { "val": 125000, "val_7d": 118000 },
"trailing_30_day_active_addresses_count": { "val": 42, "val_7d": 38 },
"daily_mints_dollar": { "val": 0, "val_7d": 5000 },
"daily_mints_token": { "val": 0, "val_7d": 5000 }
}
],
"pagination": { "page": 1, "perPage": 10, "pageCount": 11, "resultCount": 106 }
}
```
Numeric metrics are returned as objects with the current value (`val`), historical snapshots, and percentage changes. See [Responses](/api/responses#metric-objects) for the full format.
## GET /v4/managers/meta
Returns [metadata](/api/meta) about available fields, filter operators, and select options for the managers endpoint.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/managers/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Networks
Source: https://docs.rwa.xyz/api/endpoints/networks
Blockchain network data endpoints
Get data about the blockchain networks on which RWA tokens are deployed.
## GET /v4/networks
Returns a list of supported blockchain networks with filtering, sorting, and pagination.
**Default sort:** `name` ascending | **Default page size:** 25
### Fields
| Field | Type | Filterable | Description |
| ---------------------------------------- | ------ | :--------: | -------------------------------------- |
| `id` | string | Yes | Unique network identifier |
| `name` | string | Yes | Network name (searchable) |
| `slug` | string | Yes | URL-friendly identifier (searchable) |
| `parent_network_id` | number | Yes | Parent network ID (for L2s) |
| `token_count` | number | Yes | Number of tokens on this network |
| `asset_count` | number | No | Number of assets on this network |
| `bridged_token_market_cap_dollar` | number | No | Market cap of bridged tokens |
| `bridged_token_value_dollar` | number | No | Value of bridged tokens |
| `holding_addresses_count` | number | No | Number of holding addresses |
| `trailing_30_day_transfer_volume` | number | No | Transfer volume over trailing 30 days |
| `trailing_30_day_active_addresses_count` | number | No | Active addresses over trailing 30 days |
| `daily_mints_dollar` | number | No | Daily mint volume (USD) |
| `daily_mints_token` | number | No | Daily mint volume (tokens) |
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/networks' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": { "field": "token_count", "direction": "desc" },
"pagination": { "page": 1, "perPage": 10 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 1,
"name": "Ethereum",
"slug": "ethereum",
"parent_network_id": null,
"token_count": 245,
"asset_count": 180,
"bridged_token_market_cap_dollar": { "val": 1350000000, "val_7d": 1320000000, "chg_7d_pct": 2.27 },
"bridged_token_value_dollar": { "val": 1250000000, "val_7d": 1200000000, "chg_7d_pct": 4.17 },
"holding_addresses_count": { "val": 52341, "val_7d": 51200, "chg_7d_pct": 2.23 },
"trailing_30_day_transfer_volume": { "val": 8500000000, "val_7d": 8200000000 },
"trailing_30_day_active_addresses_count": { "val": 12450, "val_7d": 12100 },
"daily_mints_dollar": { "val": 45000000, "val_7d": 42000000 },
"daily_mints_token": { "val": 45200000, "val_7d": 42100000 }
}
],
"pagination": { "page": 1, "perPage": 10, "pageCount": 4, "resultCount": 35 }
}
```
Numeric metrics are returned as objects with the current value (`val`), historical snapshots, and percentage changes. See [Responses](/api/responses#metric-objects) for the full format.
## GET /v4/networks/meta
Returns [metadata](/api/meta) about available fields, filter operators, and select options for the networks endpoint.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/networks/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Platforms
Source: https://docs.rwa.xyz/api/endpoints/platforms
Tokenization platform data endpoints
Get data about tokenization platforms — the applications through which RWA assets are issued and managed.
In the API, platforms are referenced as `protocol` in field names (e.g., `protocol_id`, `protocol_slug`, `protocol_name`) for historical reasons. The terms are interchangeable — "platform" and "protocol" refer to the same entity.
## GET /v4/platforms
Returns a list of platforms with filtering, sorting, and pagination.
**Default sort:** `name` ascending | **Default page size:** 25
### Fields
| Field | Type | Filterable | Description |
| ---------------------------------------- | ------ | :--------: | -------------------------------------- |
| `id` | string | Yes | Unique platform identifier |
| `name` | string | Yes | Platform name (searchable) |
| `slug` | string | Yes | URL-friendly identifier (searchable) |
| `asset_count` | number | Yes | Number of assets on this platform |
| `bridged_token_market_cap_dollar` | number | Yes | Market cap of bridged tokens |
| `bridged_token_value_dollar` | number | Yes | Value of bridged tokens |
| `circulating_asset_value_dollar` | number | Yes | Total circulating asset value |
| `holding_addresses_count` | number | Yes | Number of holding addresses |
| `trailing_30_day_transfer_volume` | number | Yes | Transfer volume over trailing 30 days |
| `trailing_30_day_active_addresses_count` | number | Yes | Active addresses over trailing 30 days |
| `daily_mints_dollar` | number | Yes | Daily mint volume (USD) |
| `daily_mints_token` | number | Yes | Daily mint volume (tokens) |
Each platform response also includes nested breakdowns: `asset_class_stats`, `issuer_stats`, `jurisdiction_country_stats`, and `network_stats`.
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/platforms' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": { "field": "circulating_asset_value_dollar", "direction": "desc" },
"pagination": { "page": 1, "perPage": 10 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 16,
"name": "Securitize",
"slug": "securitize",
"asset_count": 12,
"circulating_asset_value_dollar": { "val": 2500000000, "val_7d": 2400000000, "chg_7d_pct": 4.17 },
"bridged_token_value_dollar": { "val": 2500000000, "val_7d": 2400000000 },
"bridged_token_market_cap_dollar": { "val": 2500000000, "val_7d": 2400000000 },
"holding_addresses_count": { "val": 8234, "val_7d": 8100, "chg_7d_pct": 1.65 },
"trailing_30_day_transfer_volume": { "val": 1200000000, "val_7d": 1150000000 },
"trailing_30_day_active_addresses_count": { "val": 2150, "val_7d": 2050 },
"daily_mints_dollar": { "val": 25000000, "val_7d": 22000000 },
"daily_mints_token": { "val": 25100000, "val_7d": 22050000 },
"asset_class_stats": [ ... ],
"issuer_stats": [ ... ],
"jurisdiction_country_stats": [ ... ],
"network_stats": [ ... ]
}
],
"pagination": { "page": 1, "perPage": 10, "pageCount": 8, "resultCount": 75 }
}
```
Numeric metrics are returned as objects with the current value (`val`), historical snapshots, and percentage changes. See [Responses](/api/responses#metric-objects) for the full format.
## GET /v4/platforms/meta
Returns [metadata](/api/meta) about available fields, filter operators, and select options for the platforms endpoint.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/platforms/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Service Providers
Source: https://docs.rwa.xyz/api/endpoints/service-providers
Service provider data endpoints
Get data about service providers involved in RWA operations — including custodians, auditors, fund administrators, transfer agents, and others.
## GET /v4/service-providers
Returns a list of service providers with filtering, sorting, and pagination.
**Default sort:** `name` ascending | **Default page size:** 25
### Fields
| Field | Type | Filterable | Description |
| ------------- | ---------- | :--------: | ---------------------------------------- |
| `id` | string | Yes | Unique service provider identifier |
| `name` | string | Yes | Provider name (searchable) |
| `slug` | string | Yes | URL-friendly identifier (searchable) |
| `description` | string | Yes | Provider description (searchable) |
| `network_ids` | integer\[] | Yes | IDs of networks the provider operates on |
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/service-providers' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": { "field": "name", "direction": "asc" },
"pagination": { "page": 1, "perPage": 25 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 1,
"name": "Anchorage Digital",
"slug": "anchorage-digital",
"description": "Anchorage Digital is a federally chartered digital asset bank.",
"network_ids": [1, 5, 12]
},
{
"id": 2,
"name": "BitGo",
"slug": "bitgo",
"description": "BitGo provides institutional-grade custody and financial services for digital assets.",
"network_ids": [1, 3, 5, 7]
}
],
"pagination": { "page": 1, "perPage": 25, "pageCount": 3, "resultCount": 68 }
}
```
## GET /v4/service-providers/meta
Returns [metadata](/api/meta) about available fields, filter operators, and select options for the service providers endpoint.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/service-providers/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Tokens
Source: https://docs.rwa.xyz/api/endpoints/tokens
Token data and aggregates endpoints
Get data about RWA tokens across different platforms and networks.
For a complete list of available fields, see the [Tokens Schema](/schemas/tokens).
## GET /v4/tokens
Returns a list of tokens with filtering, sorting, and pagination.
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/tokens' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": { "field": "market_value_dollar", "direction": "desc" },
"pagination": { "page": 1, "perPage": 5 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": 20,
"name": "Ethereum USYC",
"asset_id": 51,
"address": "0x136471a34f6ef19fe...",
"decimals": 6,
"standards": ["ERC-20"],
"network_name": "Ethereum",
"protocol_name": "Circle",
"transferability_type": "Transferable within whitelist",
"market_value_dollar": {
"val": 2100000000,
"val_7d": 1950000000,
"chg_7d_pct": 7.69
},
"total_supply_token": { "val": 113140795.54, "val_7d": 109385452.12 },
"holding_addresses_count": { "val": 342, "val_7d": 335, "chg_7d_pct": 2.09 }
// ...
}
],
"pagination": { "page": 1, "perPage": 5, "pageCount": 120, "resultCount": 598 }
}
```
Numeric metrics are returned as objects with the current value (`val`), historical snapshots, and percentage changes. See [Responses](/api/responses#metric-objects) for the full format. For a complete list of fields, see the [Tokens Schema](/schemas/tokens).
In the API, platforms are referenced as `protocol` in field names (e.g., `protocol_id`, `protocol_name`) for historical reasons. The terms are interchangeable.
## GET /v4/tokens/\[tokenID]
Returns a single token by ID.
### Example Request
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/tokens/123' \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/tokens/meta
Returns [metadata](/api/meta) about available fields and filter options.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/tokens/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/tokens/aggregates
Returns aggregated token data with grouping support.
### Aggregate GroupBy Options
* `protocol_id`
* `network_id`
* `asset_class_id`
* `asset_id`
* `issuer_id`
* `date` (for timeseries)
### Example Request
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/tokens/aggregates?query=%7B%22aggregate%22%3A%7B%22groupBy%22%3A%22protocol_id%22%2C%22aggregateFunction%22%3A%22sum%22%7D%7D' \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/tokens/aggregates/meta
Returns [metadata](/api/meta) for the token aggregates endpoint. Use this to discover available measures and filterable fields for timeseries queries.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/tokens/aggregates/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
## GET /v4/tokens/aggregates/timeseries
Returns timeseries data for token aggregates. See the [Timeseries & Aggregation guide](/api/timeseries) for a detailed walkthrough of grouping, intervals, and modes.
### Example Request
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/tokens/aggregates/timeseries?query=%7B%22aggregate%22%3A%7B%22groupBy%22%3A%22date%22%2C%22aggregateFunction%22%3A%22sum%22%2C%22interval%22%3A%22month%22%2C%22mode%22%3A%22stock%22%7D%7D' \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Transactions
Source: https://docs.rwa.xyz/api/endpoints/transactions
On-chain transaction data endpoints
Get on-chain transaction data for RWA tokens, including mints, burns, and transfers.
Transaction data is only available for RWA tokens. Stablecoin transactions (e.g., USDC, USDT) are not included.
This endpoint is rate limited to **120 requests per hour** per organization. See [Rate Limits](/api/overview#rate-limits) for details.
## GET /v4/transactions
Returns a list of transactions with filtering, sorting, and pagination.
**Default sort:** `date` descending | **Default page size:** 25
### Fields
| Field | Type | Filterable | Description |
| --------------------- | -------- | :--------: | ----------------------------------- |
| `id` | number | Yes | Unique transaction identifier |
| `date` | datetime | Yes | Transaction date |
| `timestamp` | string | Yes | Transaction timestamp |
| `transaction_hash` | string | Yes | On-chain transaction hash |
| `amount` | number | Yes | Transaction amount (in token units) |
| `usd_amount` | number | Yes | Transaction amount (USD) |
| `to_address` | string | Yes | Recipient wallet address |
| `from_address` | string | Yes | Sender wallet address |
| `transaction_type_id` | number | Yes | Transaction type identifier |
| `token_id` | number | Yes | Associated token ID |
| `asset_id` | number | Yes | Associated asset ID |
| `asset_class_id` | number | Yes | Associated asset class ID |
| `protocol_id` | number | Yes | Associated platform ID |
| `network_id` | number | Yes | Associated network ID |
Each transaction result also includes nested `asset`, `token`, and `transaction_type` objects with details.
### Example Request
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/transactions' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{
"operator": "equals",
"field": "asset_class_id",
"value": 1
},
{
"operator": "gte",
"field": "usd_amount",
"value": 1000000
}
]
},
"sort": { "field": "date", "direction": "desc" },
"pagination": { "page": 1, "perPage": 10 }
}'
```
### Example Response
```json theme={null}
{
"results": [
{
"id": "1-0x9d60a645b0a92c98...-42",
"date": "2026-03-17T00:00:00.000Z",
"timestamp": "2026-03-17T11:02:59.000Z",
"transaction_hash": "0x9d60a645b0a92c98...",
"amount": 22331806.95,
"usd_amount": 24995829.91,
"from_address": "0xfd78ee919681417d...",
"to_address": "0x0000000000000000...",
"transaction_type": {
"id": 2,
"slug": "token-burn",
"name": "Token Burn",
"description": "Tokens are destroyed and removed from the circulating supply."
},
"token": {
"id": "20",
"asset_id": "51",
"network_name": "Ethereum",
"address": "0x136471a34f..."
},
"asset": {
"id": "51",
"name": "Circle USYC",
"asset_class_name": "US Treasury Debt"
}
}
],
"pagination": { "page": 1, "perPage": 10, "pageCount": 312, "resultCount": 3118 }
}
```
## GET /v4/transactions/meta
Returns [metadata](/api/meta) about available fields, filter operators, and select options for the transactions endpoint.
### Example Request
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/transactions/meta" \
-H "Authorization: Bearer $RWA_API_KEY"
```
# Examples
Source: https://docs.rwa.xyz/api/examples
Make your first API calls in minutes
This guide walks you through a series of API calls that demonstrate every major endpoint and query pattern — filtering, sorting, pagination, timeseries, and aggregation.
## Prerequisites
1. [Obtain an API key](/api/overview#obtaining-an-api-key)
2. Set it as an environment variable:
```bash theme={null}
export RWA_API_KEY="your_api_key_here"
```
## Find U.S. Treasury assets
Fetch all assets in the U.S. Treasuries asset class, sorted by market value.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "equals",
"field": "asset_class_name",
"value": "US Treasury Debt"
},
"sort": {
"field": "circulating_market_value_dollar",
"direction": "desc"
},
"pagination": {
"page": 1,
"perPage": 5
}
}'
```
* `filter` narrows results to assets classified as `US Treasury Debt`
* `sort` orders by market value, largest first
* `pagination` limits to 5 results on page 1
**Response:**
```json theme={null}
{
"results": [
{
"id": 51,
"name": "Circle USYC",
"slug": "circle-usyc",
"ticker": "USYC",
"asset_class_name": "US Treasury Debt",
"issuer_name": "Circle International",
"circulating_market_value_dollar": {
"val": 2394947347.33,
"val_7d": 2118658299.28,
"chg_7d_pct": 13.04
},
"yield_to_maturity_percent": {
"val": 0.0383,
"val_7d": 0.0383
}
// ... ~200 fields total per asset
}
],
"pagination": { "page": 1, "perPage": 5, "pageCount": 17, "resultCount": 83 }
}
```
Numeric metrics are returned as objects with the current value (`val`) plus historical snapshots (`val_7d`, `val_30d`, `val_90d`) and deltas (`chg_7d_amt`, `chg_7d_pct`, etc.).
Note the `id` field — you'll use it in later examples.
## Browse asset managers
The `/v4/managers` endpoint lists entities that manage RWA funds. This is one of several entity endpoints (`/v4/issuers`, `/v4/platforms`, `/v4/networks`) that all support the same query language.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/managers' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": {
"field": "asset_count",
"direction": "desc"
},
"pagination": {
"page": 1,
"perPage": 5
}
}'
```
**Response:**
```json theme={null}
{
"results": [
{
"id": 74,
"name": "Reental America",
"slug": "reental-america",
"asset_count": 20,
"website": "https://www.reental.co/en",
"holding_addresses_count": { "val": 5699, "val_7d": 5707, "chg_7d_pct": -0.14 },
"bridged_token_value_dollar": { "val": 29034335.51, "val_7d": 29050231.26 }
// ...
}
],
"pagination": { "page": 1, "perPage": 5, "pageCount": 22, "resultCount": 106 }
}
```
## List an asset's tokens
An **asset** represents a financial product (e.g., "Ondo Short-Term US Government Bond Fund"). A **token** is a specific on-chain deployment of that asset — the same asset can have tokens on multiple chains.
Use `/v4/tokens` to see all the on-chain tokens for a given asset.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/tokens' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "equals",
"field": "asset_id",
"value": "51"
}
}'
```
**Response:**
```json theme={null}
{
"results": [
{
"id": 20,
"name": "Ethereum USYC",
"asset_id": 51,
"network_name": "Ethereum",
"address": "0x136471a34f6ef19fe...",
"decimals": 6,
"standards": ["ERC-20"],
"protocol_name": "Circle",
"transferability_type": "Transferable within whitelist",
"total_supply_token": { "val": 113140795.54, "val_7d": 109385452.12 }
// ...
},
{
"id": 4801,
"name": "BNB Chain USYC",
"asset_id": 51,
"network_name": "BNB Chain",
"address": "0x8d0fa28f221eb5735b..."
// ...
},
{
"id": 5076,
"name": "Solana USYC",
"asset_id": 51,
"network_name": "Solana",
"address": "7LWanZteUKtvFjv4MHYg..."
// ...
}
]
}
```
This shows the same asset (Circle USYC) deployed as three separate tokens on Ethereum, BNB Chain, and Solana. Each token has its own supply, address, and on-chain metrics.
## Get historical NAV for an asset
Use `/v4/assets/aggregates/timeseries` to pull historical metrics for an asset. The timeseries endpoints require a `measure_slug` filter to specify which metric you want — use the [Data Catalog](https://app.rwa.xyz/catalog) or the [`/v4/assets/aggregates/meta`](/api/meta) endpoint to discover available measures.
Replace `ASSET_ID` with an `id` from a previous response.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets/aggregates/timeseries' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{
"operator": "equals",
"field": "asset_id",
"value": "ASSET_ID"
},
{
"operator": "equals",
"field": "measure_slug",
"value": "net_asset_value_dollar"
}
]
},
"pagination": {
"page": 1,
"perPage": 30
}
}'
```
* `filter` combines two conditions with `and` — a specific asset and the NAV measure
* The timeseries endpoint defaults to daily granularity when no `aggregate` block is provided
**Response:**
Each result contains a `measure` descriptor, a `group` descriptor, and an array of `points` where each point is a `[date, value]` pair.
```json theme={null}
{
"results": [
{
"measure": {
"id": 3,
"slug": "net_asset_value_dollar",
"name": "Net Asset Value (Dollar)",
"unit": "dollar"
},
"group": {
"id": 51,
"type": "asset",
"name": "Circle USYC",
"color": "#2A3758"
},
"points": [
["2023-10-19", 1.01577],
["2023-10-20", 1.01590]
]
}
],
"pagination": { "page": 1, "perPage": 30, "pageCount": 1, "resultCount": 1 }
}
```
## Track token supply across chains
Use `/v4/tokens/aggregates/timeseries` instead of the asset timeseries when you need chain-level granularity. The `aggregate.groupBy: "token"` option returns a separate series for each on-chain token, so you can see how supply is distributed across networks.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/tokens/aggregates/timeseries' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{
"operator": "equals",
"field": "asset_id",
"value": "51"
},
{
"operator": "equals",
"field": "measure_slug",
"value": "total_supply_token"
}
]
},
"aggregate": {
"groupBy": "token",
"aggregateFunction": "sum",
"interval": "day",
"mode": "stock"
}
}'
```
* `groupBy: "token"` returns one series per on-chain token (e.g., Ethereum USYC, Solana USYC)
* `mode: "stock"` returns point-in-time snapshots (use `"flow"` to accumulate values over a period)
* Compare with the previous example: asset timeseries gives you one combined series, token timeseries breaks it out per chain
**Response:**
```json theme={null}
{
"results": [
{
"measure": { "slug": "total_supply_token", "name": "Total Supply (Token)", "unit": "token" },
"group": { "type": "token", "name": "Ethereum USYC" },
"points": [
["2023-06-13", 25000],
["2023-06-14", 25000]
]
},
{
"measure": { "slug": "total_supply_token", "name": "Total Supply (Token)", "unit": "token" },
"group": { "type": "token", "name": "BNB Chain USYC" },
"points": [
["2025-07-09", 1.83],
["2025-07-10", 1.83]
]
}
]
}
```
## Aggregate value across an asset class
To see the total value for **all** assets in a class combined, use `aggregate.groupBy: "asset_class"`. This sums across every asset in the category.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets/aggregates/timeseries' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{
"operator": "equals",
"field": "asset_class_name",
"value": "US Treasury Debt"
},
{
"operator": "equals",
"field": "measure_slug",
"value": "net_asset_value_dollar"
}
]
},
"aggregate": {
"groupBy": "asset_class",
"aggregateFunction": "sum",
"interval": "month",
"mode": "stock"
}
}'
```
* `groupBy: "asset_class"` sums values across all assets in the class into a single series
* `interval: "month"` returns one data point per month
* This gives you the total market size of tokenized U.S. Treasuries over time
**Response:**
```json theme={null}
{
"results": [
{
"measure": { "slug": "net_asset_value_dollar", "name": "Net Asset Value (Dollar)", "unit": "dollar" },
"group": { "id": 27, "type": "asset_class", "name": "US Treasury Debt", "color": "#05417a" },
"points": [
["2021-04-01", 25],
["2021-05-01", 31],
["2025-01-01", 3500000000],
["2025-02-01", 3800000000]
]
}
]
}
```
## Query on-chain transactions
Use `/v4/transactions` to query individual on-chain events — mints, burns, and transfers. This example finds large transactions (over \$100,000 USD) for a specific asset, demonstrating comparison operators like `gte`.
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/transactions' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{
"operator": "equals",
"field": "asset_id",
"value": 51
},
{
"operator": "gte",
"field": "usd_amount",
"value": 100000
}
]
},
"sort": { "field": "date", "direction": "desc" },
"pagination": { "page": 1, "perPage": 5 }
}'
```
* `gte` (greater than or equal) is one of several comparison operators — see [Requests](/api/requests) for the full list
* Transactions default to `date` descending, but we include it explicitly for clarity
* Each result includes nested `asset`, `token`, and `transaction_type` objects
**Response:**
```json theme={null}
{
"results": [
{
"id": "1-0x9d60a645b0a92c98...-42",
"date": "2026-03-17T00:00:00.000Z",
"timestamp": "2026-03-17T11:02:59.000Z",
"transaction_hash": "0x9d60a645b0a92c98...",
"amount": 22331806.95,
"usd_amount": 24995829.91,
"from_address": "0xfd78ee919681417d...",
"to_address": "0x0000000000000000...",
"transaction_type": {
"id": 2,
"slug": "token-burn",
"name": "Token Burn",
"description": "Tokens are destroyed and removed from the circulating supply."
},
"token": { "id": "20", "asset_id": "51", "network_name": "Ethereum", "address": "0x136471a34f..." },
"asset": { "id": "51", "name": "Circle USYC", "asset_class_name": "US Treasury Debt" }
}
],
"pagination": { "page": 1, "perPage": 5, "pageCount": 6216, "resultCount": 31078 }
}
```
The transactions endpoint is rate limited to 120 requests per hour per organization. See [Rate Limits](/api/overview#rate-limits).
## Discovering available fields
Every resource endpoint has a corresponding [`/meta` endpoint](/api/meta) that returns the available fields, their types, valid filter operators, and select options. This is useful for building dynamic queries or exploring what's filterable.
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/assets/meta' \
-H "Authorization: Bearer $RWA_API_KEY"
```
## Next steps
* **[Requests](/api/requests)** — full reference for filters, sorting, pagination, and aggregation
* **[Endpoints](/api/endpoints)** — overview of all available endpoints
* **[Assets schema](/schemas/assets)** — complete field reference for assets
* **[Tokens schema](/schemas/tokens)** — complete field reference for tokens
* **[Data Catalog](https://app.rwa.xyz/catalog)** — browse all entities, fields, and measures
# Field Discovery
Source: https://docs.rwa.xyz/api/meta
Discover available fields, operators, and values for any endpoint
Every resource endpoint has a corresponding `/meta` endpoint that tells you exactly which fields you can filter and sort on, what operators each field supports, and — for select fields — the valid values.
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/assets/meta' \
-H "Authorization: Bearer $RWA_API_KEY"
```
The response is an array of field definitions. Each entry describes one filterable field:
```json theme={null}
[
{
"type": "stringSingleSelect",
"field": "protocol_ids",
"content": {
"label": "Platform",
"description": "The platform where the data originated"
},
"defaultOperator": "includes",
"allowedOperators": ["includes", "not-includes"],
"selectOptions": [
{ "value": 2, "content": { "label": "Centrifuge" } },
{ "value": 16, "content": { "label": "Ondo" } }
]
},
{
"type": "Dollar",
"field": "circulating_market_value_dollar",
"content": {
"label": "Circulating Market Value",
"description": "..."
},
"defaultOperator": "gte",
"allowedOperators": ["gt", "gte", "lt", "lte", "equals", "notEquals"]
},
{
"type": "boolean",
"field": "is_investable",
"content": {
"label": "Is Investable",
"description": "Whether the asset is investable"
},
"defaultOperator": "equals",
"defaultValue": true,
"allowedOperators": ["equals", "notEquals"]
}
// ...
]
```
## Field types
| Type | Description | Typical operators |
| -------------------- | ---------------------------------------------------------- | ------------------------------------------------- |
| `search` | Free-text search | `like`, `notLike` |
| `stringSingleSelect` | Enumerated values — check `selectOptions` for valid values | `includes`, `not-includes`, `equals`, `notEquals` |
| `Dollar` | Dollar-denominated numeric field | `gt`, `gte`, `lt`, `lte`, `equals`, `notEquals` |
| `integer` | Integer numeric field | `gt`, `gte`, `lt`, `lte`, `equals`, `notEquals` |
| `percent` | Percentage numeric field | `gt`, `gte`, `lt`, `lte`, `equals`, `notEquals` |
| `boolean` | True/false field | `equals`, `notEquals` |
| `date` | Date field | `before`, `after`, `onOrBefore`, `onOrAfter` |
## Timeseries meta
The aggregate endpoints have their own meta endpoints that list different fields than the base resource. For example, `/v4/tokens/aggregates/meta` returns the fields available for filtering timeseries queries — including the `measure_slug` field with all available measures as `selectOptions`:
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/tokens/aggregates/meta' \
-H "Authorization: Bearer $RWA_API_KEY"
```
```json theme={null}
[
{
"type": "stringSingleSelect",
"field": "measure_slug",
"content": {
"label": "Measure",
"description": "The measure that's being queried"
},
"allowedOperators": ["equals", "notEquals"],
"selectOptions": [
{ "value": "apy_30_day", "content": { "label": "APY (30-Day)" } },
{ "value": "net_asset_value_dollar", "content": { "label": "Net Asset Value (Dollar)" } },
{ "value": "total_supply_token", "content": { "label": "Total Supply (Token)" } }
// ...
]
},
{
"type": "stringSingleSelect",
"field": "network_name",
"content": { "label": "Network" },
"selectOptions": [
{ "value": "Ethereum", "content": { "label": "Ethereum" } },
{ "value": "Solana", "content": { "label": "Solana" } }
// ...
]
}
// ...
]
```
## Available meta endpoints
| Endpoint | Meta |
| ----------------------- | ---------------------------- |
| `/v4/assets` | `/v4/assets/meta` |
| `/v4/tokens` | `/v4/tokens/meta` |
| `/v4/networks` | `/v4/networks/meta` |
| `/v4/platforms` | `/v4/platforms/meta` |
| `/v4/issuers` | `/v4/issuers/meta` |
| `/v4/managers` | `/v4/managers/meta` |
| `/v4/service-providers` | `/v4/service-providers/meta` |
| `/v4/transactions` | `/v4/transactions/meta` |
| `/v4/assets/aggregates` | `/v4/assets/aggregates/meta` |
| `/v4/tokens/aggregates` | `/v4/tokens/aggregates/meta` |
# Overview
Source: https://docs.rwa.xyz/api/overview
Introduction to the RWA API
The RWA API provides programmatic access to Real World Asset (RWA) data including tokens, platforms, networks, and market metrics. The API is built on a flexible query system that allows filtering, sorting, pagination, and aggregation.
## Base URL
**Production:** `https://api.rwa.xyz`
All endpoints are versioned. The current version is **v4**.
## Obtaining an API Key
Login to your account at [https://app.rwa.xyz/login](https://app.rwa.xyz/login) and navigate to the API Tools section: [https://app.rwa.xyz/tools/api/api-keys](https://app.rwa.xyz/tools/api/api-keys).
If you do not have access to the API Tools section, contact us at [team@rwa.xyz](mailto:team@rwa.xyz) to request access.
Enter a name for your API key and click "Create API Key".
## Data Model
The API is organized around the [RWA.xyz data model](/schemas/data-model). Each core entity — such as assets, tokens, issuers, networks, and platforms — has a corresponding API endpoint. See the [data model documentation](/schemas/data-model) for details on how these entities relate to each other, or browse the [Data Catalog](https://app.rwa.xyz/catalog) to explore all available entities, fields, and measures.
## Caching
API responses are cached for 30 minutes (1800 seconds) to improve performance. Cache headers are included in responses:
```
Cache-Control: s-maxage=1800
```
## Rate Limits
The API uses a sliding window rate limiter. When rate limits apply, responses include the following headers:
| Header | Description |
| ----------------------- | -------------------------------------------------- |
| `X-RateLimit-Limit` | Maximum number of requests allowed in the window |
| `X-RateLimit-Remaining` | Number of requests remaining in the current window |
| `X-RateLimit-Reset` | Unix timestamp when the rate limit window resets |
If you exceed the rate limit, the API returns a `429 Too Many Requests` response. Back off and retry after the time indicated by `X-RateLimit-Reset`.
Currently, the following endpoints have rate limits:
| Endpoint | Limit | Window |
| ------------------ | ------------ | ------------------------- |
| `/v4/transactions` | 120 requests | 1 hour (per organization) |
Rate limits may be added to additional endpoints in the future. Always check the `X-RateLimit-*` headers in your responses to handle limits gracefully.
## Support
For API support, questions, or to report issues:
* **Email:** [team@rwa.xyz](mailto:team@rwa.xyz)
* **Documentation:** [https://docs.rwa.xyz](https://docs.rwa.xyz)
# Quickstart
Source: https://docs.rwa.xyz/api/quickstart
Make your first API call in under 2 minutes
Log in at [app.rwa.xyz](https://app.rwa.xyz/login) and go to [API Tools > API Keys](https://app.rwa.xyz/tools/api/api-keys). Create a key and copy it.
If you don't have access to API Tools, contact [team@rwa.xyz](mailto:team@rwa.xyz).
```bash theme={null}
export RWA_API_KEY="your_api_key_here"
```
Fetch the top 3 tokenized assets by market value:
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"sort": {
"field": "circulating_market_value_dollar",
"direction": "desc"
},
"pagination": {
"page": 1,
"perPage": 3
}
}'
```
```json theme={null}
{
"results": [
{
"id": 1,
"name": "USDC",
"slug": "usdc",
"ticker": "USDC",
"asset_class_name": "Stablecoins",
"issuer_name": "Circle International",
"circulating_market_value_dollar": {
"val": 44000000000.00,
"val_7d": 43500000000.00,
"chg_7d_pct": 1.15
},
"token_count": 16,
"network_names": ["Ethereum", "Solana", "Avalanche", "Base", "Polygon", "Arbitrum"]
// ... ~200 fields total per asset
}
],
"pagination": {
"page": 1,
"perPage": 3,
"pageCount": 112,
"resultCount": 335
}
}
```
Numeric metrics like `circulating_market_value_dollar` are returned as objects with the current value (`val`), historical snapshots (`val_7d`, `val_30d`), and percentage changes (`chg_7d_pct`). See [Responses](/api/responses#metric-objects) for the full format.
## Next steps
Walk through every major endpoint and query pattern
Full reference for filters, sorting, pagination, and aggregation
Overview of all available API endpoints
How assets, tokens, networks, and platforms relate
# Requests
Source: https://docs.rwa.xyz/api/requests
How to structure API requests with query parameters
The API uses a JSON-based query language passed as a URL parameter named `query`. The query object can include:
* `filter` - Filter conditions
* `sort` - Sort configuration
* `pagination` - Pagination settings
* `aggregate` - Aggregation configuration (for aggregate endpoints)
Every endpoint has a corresponding [`/meta` endpoint](/api/meta) that returns the available fields, allowed operators, and valid values.
## Basic Example
```json theme={null}
{
"filter": {
"operator": "equals",
"field": "protocol_slug",
"value": "ondo"
},
"sort": {
"field": "market_value_dollar",
"direction": "desc"
},
"pagination": {
"page": 1,
"perPage": 50
}
}
```
## URL Encoding
The query object must be JSON-stringified and URL-encoded:
```bash theme={null}
curl -X GET "https://api.rwa.xyz/v4/tokens?query=%7B%22filter%22%3A%7B%22operator%22%3A%22equals%22%2C%22field%22%3A%22protocol_slug%22%2C%22value%22%3A%22ondo%22%7D%7D" \
-H "Authorization: Bearer $RWA_API_KEY"
```
In the API, platforms are referenced as `protocol` in field names (e.g., `protocol_slug`, `protocol_id`) for historical reasons. The terms are interchangeable — "platform" and "protocol" refer to the same entity.
## Filtering
Filters allow you to narrow down results based on field values.
### Basic Filter
```json theme={null}
{
"operator": "equals",
"field": "protocol_slug",
"value": "ondo"
}
```
### Composite Filter (AND)
```json theme={null}
{
"operator": "and",
"filters": [
{
"operator": "equals",
"field": "network_slug",
"value": "ethereum"
},
{
"operator": "gte",
"field": "market_value_dollar",
"value": 1000000
}
]
}
```
### Composite Filter (OR)
```json theme={null}
{
"operator": "or",
"filters": [
{
"operator": "equals",
"field": "protocol_slug",
"value": "ondo"
},
{
"operator": "equals",
"field": "protocol_slug",
"value": "maple"
}
]
}
```
### Supported Operators
**Comparison Operators:**
* `equals` - Exact match
* `notEquals` - Not equal to
* `gt` - Greater than (numbers)
* `gte` - Greater than or equal (numbers)
* `lt` - Less than (numbers)
* `lte` - Less than or equal (numbers)
**String Operators:**
* `like` - Case-sensitive pattern match (use `%` as wildcard)
* `ilike` - Case-insensitive pattern match (use `%` as wildcard)
* `notLike` - Case-sensitive negative match
* `startsWith` - Starts with value
* `endsWith` - Ends with value
**Array Operators:**
* `in` - Value is in array (for array fields)
* `not-in` - Value is not in array
* `includes` - Array includes value (for array fields)
* `not-includes` - Array does not include value
**Date Operators:**
* `before` - Before date
* `onOrBefore` - On or before date
* `after` - After date
* `onOrAfter` - On or after date
**Logical Operators:**
* `and` - All filters must match
* `or` - Any filter must match
### Filter Examples
**Filter by platform:**
```json theme={null}
{
"operator": "equals",
"field": "protocol_slug",
"value": "centrifuge"
}
```
**Filter by minimum market cap:**
```json theme={null}
{
"operator": "gte",
"field": "market_value_dollar",
"value": 5000000
}
```
**Search by name (case-insensitive):**
```json theme={null}
{
"operator": "ilike",
"field": "name",
"value": "%treasury%"
}
```
## Sorting
Sort results by any field in ascending or descending order.
**Sort Structure:**
```json theme={null}
{
"field": "market_value_dollar",
"direction": "desc"
}
```
**Directions:**
* `asc` - Ascending order
* `desc` - Descending order
* `""` - No sorting (use default)
**Example:**
```json theme={null}
{
"sort": {
"field": "total_asset_value_dollar",
"direction": "desc"
}
}
```
## Pagination
Control the number of results returned and navigate through pages.
**Pagination Structure:**
```json theme={null}
{
"page": 1,
"perPage": 50
}
```
**Parameters:**
* `page` - Page number (starts at 1)
* `perPage` - Number of results per page (max varies by endpoint, typically 100)
**Example:**
```json theme={null}
{
"pagination": {
"page": 2,
"perPage": 25
}
}
```
## Aggregation
For aggregate and timeseries endpoints, you can specify aggregation parameters.
**Aggregate Structure:**
```json theme={null}
{
"groupBy": "protocol_id",
"aggregateFunction": "sum",
"interval": "day",
"mode": "stock"
}
```
**Parameters:**
* `groupBy` - Field to group by (e.g., `network_id`, `asset_class_id`, `date`)
* `aggregateFunction` - Function to apply: `sum`, `avg`, `min`, `max`
* `interval` - Time interval (for timeseries): `day`, `week`, `month`, `year`
* `mode` - Aggregation mode:
* `stock` - Point-in-time snapshot (latest value per period)
* `flow` - Aggregate over period (sum/avg/etc. of all values)
**Example:**
```json theme={null}
{
"aggregate": {
"groupBy": "date",
"aggregateFunction": "sum",
"interval": "month",
"mode": "stock"
}
}
```
## Code Examples
### JavaScript/TypeScript
```typescript theme={null}
const API_KEY = process.env.RWA_API_KEY;
const BASE_URL = 'https://api.rwa.xyz';
async function getTopTokens() {
const query = {
sort: {
field: 'market_value_dollar',
direction: 'desc'
},
pagination: {
page: 1,
perPage: 10
}
};
const queryParam = encodeURIComponent(JSON.stringify(query));
const url = `${BASE_URL}/v4/tokens?query=${queryParam}`;
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${API_KEY}`
}
});
const data = await response.json();
return data;
}
```
### Python
```python theme={null}
import os
import requests
import json
from urllib.parse import quote
API_KEY = os.environ['RWA_API_KEY']
BASE_URL = 'https://api.rwa.xyz'
def get_top_tokens():
query = {
'sort': {
'field': 'market_value_dollar',
'direction': 'desc'
},
'pagination': {
'page': 1,
'perPage': 10
}
}
query_param = quote(json.dumps(query))
url = f'{BASE_URL}/v4/tokens?query={query_param}'
headers = {
'Authorization': f'Bearer {API_KEY}'
}
response = requests.get(url, headers=headers)
return response.json()
```
# Responses
Source: https://docs.rwa.xyz/api/responses
Understanding API response format and error handling
## Response Format
All successful API responses follow this structure:
```json theme={null}
{
"results": [...],
"filter": {...},
"sort": {...},
"pagination": {
"page": 1,
"perPage": 50,
"pageCount": 10,
"resultCount": 487
}
}
```
### Response Fields
* `results` - Array of result objects
* `filter` - Applied filter (if any)
* `sort` - Applied sort configuration
* `pagination` - Pagination metadata
* `page` - Current page number
* `perPage` - Results per page
* `pageCount` - Total number of pages
* `resultCount` - Total number of results matching the query
## Metric Objects
Numeric metrics on assets and tokens are returned as objects containing the current value plus historical snapshots and deltas:
```json theme={null}
{
"circulating_market_value_dollar": {
"val": 2394947347.33,
"val_7d": 2118658299.28,
"val_30d": 1950000000.00,
"val_90d": 1200000000.00,
"chg_7d_amt": 276289048.05,
"chg_7d_pct": 13.04,
"chg_30d_amt": 444947347.33,
"chg_30d_pct": 22.82,
"chg_90d_amt": 1194947347.33,
"chg_90d_pct": 99.58
}
}
```
| Field | Description |
| ------------- | ------------------------------ |
| `val` | Current value |
| `val_7d` | Value 7 days ago |
| `val_30d` | Value 30 days ago |
| `val_90d` | Value 90 days ago |
| `chg_7d_amt` | Absolute change over 7 days |
| `chg_7d_pct` | Percentage change over 7 days |
| `chg_30d_amt` | Absolute change over 30 days |
| `chg_30d_pct` | Percentage change over 30 days |
| `chg_90d_amt` | Absolute change over 90 days |
| `chg_90d_pct` | Percentage change over 90 days |
Not all fields are present on every metric — only periods with available data are included.
## Timeseries Responses
Aggregate timeseries endpoints (`/v4/assets/aggregates/timeseries`, `/v4/tokens/aggregates/timeseries`) return a different shape. Each result contains a `measure` descriptor, a `group` descriptor, and an array of `points`:
```json theme={null}
{
"results": [
{
"measure": {
"id": 3,
"slug": "net_asset_value_dollar",
"name": "Net Asset Value (Dollar)",
"unit": "dollar"
},
"group": {
"id": 51,
"type": "asset",
"name": "Circle USYC",
"color": "#2A3758"
},
"points": [
["2023-10-19", 1.01577],
["2023-10-20", 1.01590]
]
}
],
"pagination": { "page": 1, "perPage": 30, "pageCount": 1, "resultCount": 1 }
}
```
* `measure` — the metric being returned (use the [Data Catalog](https://app.rwa.xyz/catalog) to discover available measures)
* `group` — what the data is grouped by (e.g., a specific asset, token, or asset class)
* `points` — array of `[date, value]` pairs in chronological order
## Error Handling
### HTTP Status Codes
| Status | Description |
| ------ | -------------------------------------------------- |
| `200` | Success |
| `400` | Bad Request — invalid query, filter, or parameters |
| `401` | Unauthorized — missing or invalid API key |
| `405` | Method Not Allowed — endpoint only supports GET |
| `429` | Too Many Requests — rate limit exceeded |
| `500` | Internal Server Error |
### Error Response Format
```json theme={null}
{
"message": "Error description"
}
```
### Common Errors
#### Invalid Filter
```json theme={null}
{
"message": "Invalid filter format"
}
```
#### Invalid Operator
```json theme={null}
{
"message": "Invalid operator 'invalidOp' for field 'market_value_dollar'"
}
```
#### Rate Limit Exceeded
When you exceed a rate limit, the API returns `429` with headers indicating when you can retry. See [Rate Limits](/api/overview#rate-limits) for details.
```
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1710000000
```
# Timeseries & Aggregation
Source: https://docs.rwa.xyz/api/timeseries
Pull historical data and aggregate metrics across entities
The RWA API provides timeseries endpoints for tracking metrics over time and aggregating data across assets, tokens, networks, and asset classes.
## Timeseries endpoints
| Endpoint | Granularity | Use case |
| -------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------ |
| [`/v4/assets/aggregates/timeseries`](/api/endpoints/assets#get-v4assetsaggregatestimeseries) | Asset-level | Track NAV, supply, or holders for one or many assets |
| [`/v4/tokens/aggregates/timeseries`](/api/endpoints/tokens#get-v4tokensaggregatestimeseries) | Token-level | Break down metrics by chain (e.g., supply per network) |
Both endpoints use the same query language and response format.
## The aggregate block
Timeseries queries use an `aggregate` block to control grouping, time resolution, and computation mode:
```json theme={null}
{
"aggregate": {
"groupBy": "asset",
"aggregateFunction": "sum",
"interval": "day",
"mode": "stock"
}
}
```
### groupBy
Controls how results are grouped. Each unique group becomes a separate series in the response.
| Value | Description | Returns |
| ------------- | -------------------- | ------------------------------------------------------- |
| `asset` | Group by asset | One series per asset |
| `token` | Group by token | One series per on-chain token (chain-level granularity) |
| `asset_class` | Group by asset class | One series per asset class |
| `network` | Group by network | One series per blockchain network |
| `date` | No entity grouping | A single combined series |
### interval
The time resolution of each data point.
| Value | Description |
| ------- | ------------------- |
| `day` | One point per day |
| `week` | One point per week |
| `month` | One point per month |
| `year` | One point per year |
### mode
How values are computed within each interval.
| Value | Description | Use when |
| ------- | --------------------------------------------------- | ---------------------------------------------------------------------------- |
| `stock` | Point-in-time snapshot (latest value in the period) | Tracking balances, NAV, supply, holders — metrics that represent a **state** |
| `flow` | Accumulated over the period | Tracking mints, burns, transfers — metrics that represent **activity** |
**Example:** For monthly supply, `stock` returns the supply at the end of each month. For monthly mints, `flow` returns the total minted during each month.
### aggregateFunction
| Value | Description |
| ----- | --------------------------- |
| `sum` | Sum values across the group |
| `avg` | Average across the group |
| `min` | Minimum value in the group |
| `max` | Maximum value in the group |
## Discovering available measures
Every timeseries query requires a `measure_slug` filter to specify which metric to retrieve. Use the meta endpoints to discover available measures:
```bash theme={null}
curl -X GET 'https://api.rwa.xyz/v4/assets/aggregates/meta' \
-H "Authorization: Bearer $RWA_API_KEY"
```
The `measure_slug` field in the response lists all available measures as `selectOptions`. You can also browse measures in the [Data Catalog](https://app.rwa.xyz/catalog).
**Common measures:**
| Slug | Description |
| --------------------------------- | ------------------------------- |
| `net_asset_value_dollar` | NAV in USD |
| `price_dollar` | Price in USD |
| `circulating_supply_token` | Circulating token supply |
| `circulating_market_value_dollar` | Circulating market value in USD |
| `circulating_asset_value_dollar` | Circulating asset value in USD |
| `holding_addresses_count` | Number of unique holders |
| `daily_mints_dollar` | Daily mint volume in USD |
| `daily_burns_dollar` | Daily burn volume in USD |
| `daily_transfer_volume_dollar` | Daily transfer volume in USD |
| `apy_7_day` | 7-day APY |
| `apy_30_day` | 30-day APY |
## Response format
Timeseries responses differ from list endpoints. Each result contains a **measure** descriptor, a **group** descriptor, and an array of **points**:
```json theme={null}
{
"results": [
{
"measure": {
"id": 3,
"slug": "net_asset_value_dollar",
"name": "Net Asset Value (Dollar)",
"unit": "dollar"
},
"group": {
"id": 51,
"type": "asset",
"name": "Circle USYC",
"color": "#2A3758"
},
"points": [
["2023-10-19", 1.01577],
["2023-10-20", 1.01590],
["2023-10-21", 1.01603]
]
}
],
"pagination": { "page": 1, "perPage": 30, "pageCount": 1, "resultCount": 1 }
}
```
| Field | Description |
| --------- | ------------------------------------------------------------------------ |
| `measure` | The metric being returned (slug, name, unit) |
| `group` | What the data is grouped by — a specific asset, token, asset class, etc. |
| `points` | Array of `[date, value]` pairs in chronological order |
## Examples
### Track an asset's NAV over time
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets/aggregates/timeseries' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{ "operator": "equals", "field": "asset_id", "value": "51" },
{ "operator": "equals", "field": "measure_slug", "value": "net_asset_value_dollar" }
]
},
"pagination": { "page": 1, "perPage": 365 }
}'
```
When no `aggregate` block is provided, the endpoint defaults to daily granularity grouped by the entity type.
### Compare token supply across chains
Use `groupBy: "token"` to get a separate series for each on-chain deployment:
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/tokens/aggregates/timeseries' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{ "operator": "equals", "field": "asset_id", "value": "51" },
{ "operator": "equals", "field": "measure_slug", "value": "total_supply_token" }
]
},
"aggregate": {
"groupBy": "token",
"aggregateFunction": "sum",
"interval": "day",
"mode": "stock"
}
}'
```
This returns one series per chain (e.g., "Ethereum USYC", "Solana USYC", "BNB Chain USYC"), so you can see how supply is distributed across networks.
### Aggregate an entire asset class over time
Use `groupBy: "asset_class"` to sum across all assets in a category:
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/assets/aggregates/timeseries' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": {
"operator": "and",
"filters": [
{ "operator": "equals", "field": "asset_class_name", "value": "US Treasury Debt" },
{ "operator": "equals", "field": "measure_slug", "value": "net_asset_value_dollar" }
]
},
"aggregate": {
"groupBy": "asset_class",
"aggregateFunction": "sum",
"interval": "month",
"mode": "stock"
}
}'
```
This gives you the total market size of tokenized U.S. Treasuries over time, with one data point per month.
## Choosing the right endpoint
| Question | Endpoint | groupBy |
| ----------------------------------------------- | ---------------------------------- | ------------- |
| What is this asset's total NAV over time? | `/v4/assets/aggregates/timeseries` | `asset` |
| How is supply distributed across chains? | `/v4/tokens/aggregates/timeseries` | `token` |
| What's the total market size of an asset class? | `/v4/assets/aggregates/timeseries` | `asset_class` |
| What are daily mints per network? | `/v4/tokens/aggregates/timeseries` | `network` |
| What's the total value of all assets combined? | `/v4/assets/aggregates/timeseries` | `date` |
# Changelog
Source: https://docs.rwa.xyz/changelog
API updates and data coverage changes
Added `issuance_type` field to differentiate **natively issued** tokens from **bridged** tokens. The classification is inherited from the token's platform.
**Allowed values:** `NATIVE`, `BRIDGE`
**Where it appears:**
* On each token object (top-level `issuance_type` field)
* Inside the nested `platform` object on each token
* On assets: `native_token_count`, `bridge_token_count`, `has_native_tokens`, `has_bridge_tokens`
**Filtering example — get only bridged tokens:**
```bash theme={null}
curl -G 'https://api.rwa.xyz/v4/tokens' \
-H "Authorization: Bearer $RWA_API_KEY" \
--data-urlencode 'query={
"filter": { "operator": "equals", "field": "issuance_type", "value": "BRIDGE" }
}'
```
See the [Tokens Schema](/schemas/tokens) and [Assets Schema](/schemas/assets) for the full field reference.
Introduced a new [asset classification framework](/frameworks/asset-classes) to provide more granular coverage of credit and fund strategies. [Read the full announcement](https://rwa.xyz/blog/introducing-our-new-asset-classification-framework).
**New asset classes:**
* Venture Capital
* Asset-Backed Credit
* Diversified Credit
* Specialty Finance
**Removed asset classes:**
* "Credit" and "Institutional Funds" have been removed. Assets previously under these classes have been re-classified into the new classes above.
**Renamed asset classes:**
* "Corporate Bonds" → **Corporate Credit**
* "Public Stocks" → **Stocks**
* "Actively-Managed Strategies" → **Active Strategies**
**New pages:**
* [Credit](https://app.rwa.xyz/credit)
* [Private Equity & Venture Capital](https://app.rwa.xyz/private-equity-venture-capital)
* [Active Strategies](https://app.rwa.xyz/active-strategies)
**Removed pages:**
* `app.rwa.xyz/private-credit` and `app.rwa.xyz/institutional-funds` have been removed. Their data is now covered under the new pages above.
# Asset Classes
Source: https://docs.rwa.xyz/frameworks/asset-classes
Assets are classified by their underlying economic exposure. This determines the risk model required for underwriting and remains stable regardless of how the asset is tokenized or distributed.
For multi-asset instruments, classification follows a dominant exposure rule — each instrument is assigned to its largest exposure category. Structural features, origination channels, and legal forms are captured as separate metadata dimensions.
## U.S. Treasuries
Exposure to debt obligations of the U.S. federal government.
**Examples:** Short-duration T-bills, long-duration T-bonds, inflation-protected securities, Treasury money market funds, Treasury ETFs
## Non-US Government Debt
Exposure to debt obligations of non-U.S. sovereign governments and their agencies.
**Examples:** Developed market sovereign bonds, emerging market sovereign bonds, sovereign money market funds, sovereign bond ETFs, supranational bond funds
## Credit
Exposure to non-sovereign debt across private or public borrowers.
### Corporate Credit
Exposure to debt of businesses, where repayment depends primarily on enterprise cash flow and capital structure.
**Examples:** Investment grade corporate bonds, high yield bonds, leveraged loans, CLOs, direct lending funds, corporate bond ETFs, trade finance funds, institutional DeFi lending to corporate counterparties
### Asset-Backed Credit
Exposure to debt backed by specific collateral or receivables, where repayment depends primarily on collateral value, liquidation rights, or asset cash flows rather than enterprise value. Includes consumer loan and receivables exposure.
**Examples:** Mortgage loans, HELOCs, auto loans, personal loan receivables, credit card receivables, student loans, BNPL receivables, consumer ABS, commercial real estate loans, mortgage REITs, real estate debt funds, trade receivables financing
### Specialty Finance
Exposure to niche asset- or contract-backed debt requiring specialized underwriting outside standard corporate and asset-backed categories.
**Examples:** Equipment financing, aircraft financing, royalty finance, litigation finance, project finance funds, revenue-based financing vehicles, insurance-linked securities, blockchain infrastructure revenue notes
### Diversified Credit
Exposure to vehicles investing across multiple credit sub-classes within a single structure.
**Examples:** Tokenized multi-strategy credit funds, diversified private credit vehicles, onchain credit vaults deploying across multiple borrower and collateral types
## Stocks
Exposure to publicly listed equities.
**Examples:** Large cap equities, small cap equities, sector ETFs, broad market index funds, ADRs
## Private Equity & Venture Capital
Exposure to equity not accessible through public market trading.
**Examples:** Venture capital funds, growth equity funds, leveraged buyout funds, secondaries, pre-IPO shares, non-traded shares of public companies
## Active Strategies
Exposure to actively managed mandates pursuing returns through discretionary or systematic strategies across traditional and digital asset markets.
**Examples:** Long/short, global macro, relative value, quantitative/systematic, multi-strategy, DeFi yield, liquidity provision, liquid token strategies, basis/carry, cross-venue arbitrage
## Commodities
Exposure to raw materials and natural resources through physical ownership, commodity-linked securities, or pooled funds.
**Examples:** Precious metals, energy commodities, agricultural commodities, commodity ETFs, commodity futures funds
## Real Estate
Exposure to property values and/or rental income.
**Examples:** Residential property, commercial property, development, land, REITs, real estate ETFs
## Stablecoins
Tokens whose NAV is intended to stay 1:1 with a fiat currency. Tokenization type is Distributed, as stablecoins are intended for payments and settlement.
**Examples:** USD-pegged stablecoins, EUR-pegged stablecoins
***
For more detail on the rationale behind this framework, see [Introducing Our New Asset Classification Framework](https://rwa.xyz/blog/introducing-our-new-asset-classification-framework).
# Overview
Source: https://docs.rwa.xyz/frameworks/overview
How we classify tokenized assets
We classify every tokenized asset along multiple independent dimensions. Each framework captures a different aspect of the asset: what it is economically, how it behaves on-chain, and how it is structured legally. The frameworks are orthogonal: any combination of values is possible, and each dimension is assigned independently.
What is the underlying economic exposure? U.S. Treasuries, credit, equities, real estate, commodities, and more.
How does the token behave on-chain? Freely transferable (Distributed) or platform-bound (Represented).
## How the frameworks relate
Because the frameworks are independent, the same asset class can appear with different tokenization types:
| | Distributed | Represented |
| ------------------- | ---------------- | ----------------------------------- |
| **U.S. Treasuries** | USYC, BUIDL | Franklin Templeton (early versions) |
| **Credit** | Centrifuge pools | J.P. Morgan Onyx |
| **Stablecoins** | USDC, USDT | — |
As the market matures, we are expanding our classification system to capture additional dimensions, including the legal and structural relationship between the token and its underlying assets. All frameworks are assigned during our [due diligence process](/methodology/coverage#due-diligence-process) and can be reclassified as an asset's structure evolves.
# Tokenization Type
Source: https://docs.rwa.xyz/frameworks/tokenization-type
Tokenized assets are classified into two categories based on whether the token can be (1) moved to a wallet outside of the issuing platform, and (2) transferred peer-to-peer between wallets.
## Distributed Assets
Tokenized assets that can be moved to wallets outside the issuing platform and transferred between wallets, including those with whitelist or eligibility controls. The blockchain serves as a channel for capital formation, enabling issuers to reach investors directly onchain.
## Represented Assets
Tokenized assets that cannot be moved to wallets outside the issuing platform or transferred between wallets, whether due to design or regulatory constraints. The blockchain serves as a recordkeeping and reconciliation layer for institutional participants.
## Reclassification
These categories are not static. **Represented Assets** can be reclassified as **Distributed Assets** if they become movable and transferable.
## Platform Impact
All tokenized asset league tables and time-series charts on our platform offer three views: **Distributed Assets**, **Represented Assets**, and **All Assets**. Distributed is the default view.
Classifications may change as new information becomes available.
## Further Reading
* [A New Framework for Tokenized Assets: Distributed & Represented](https://rwa.xyz/blog/a-new-framework-for-tokenized-assets-distributed-and-represented)
# Introduction
Source: https://docs.rwa.xyz/home
Welcome to RWA.xyz!
[RWA.xyz](https://www.rwa.xyz) is the leading analytics platform for tokenized real-world assets. We bring all tokenized assets into one place and give institutions, networks, issuers, and service providers the tools they need to understand and navigate this fast-growing market.
This site covers our data methodology, classification frameworks, data model, and API reference.
Get your API key and make your first call in under 2 minutes.
How we define and relate assets, tokens, networks, and platforms.
How we source, verify, and maintain our dataset.
How we classify tokenized assets by asset class and tokenization type.
Issuers and platforms who want to submit assets can [use this form](https://forms.default.com/353141). For questions, reach out at [team@rwa.xyz](mailto:team@rwa.xyz).
## Industry Citations
Below are examples of how other organizations have used data from RWA.xyz.
**Government & International Organizations:**
* The White House ([link](https://whitehouse.gov/wp-content/uploads/2025/07/Digital-Assets-Report-EO14178.pdf))
* US Treasury Department ([link](https://home.treasury.gov/system/files/221/TBACCharge2Q42024.pdf)), ([link](https://home.treasury.gov/system/files/221/CombinedChargesforArchivesQ42024.pdf))
* International Monetary Fund ([link](https://www.elibrary.imf.org/display/book/9798400277573/CH001.xml))
* Bank for International Settlements ([link](https://www.bis.org/publ/bisbull115.htm))
* Federal Reserve Bank of New York ([link](https://libertystreeteconomics.newyorkfed.org/2025/09/the-emergence-of-tokenized-investment-funds-and-their-use-cases/))
* Federal Reserve Bank of Boston ([link](https://www.bostonfed.org/-/media/Documents/events/2025/second-conference-on-stablecoins/New_Activities_Familiar_Risks.pdf))
* Bank of France ([link](https://www.banque-france.fr/system/files/2025-02/Banque_de_France_RSF_Dec2024_English.pdf))
* World Economic Forum ([link](https://reports.weforum.org/docs/WEF_Asset_Tokenization_in_Financial_Markets_2025.pdf))
* Financial Stability Board ([link](https://www.fsb.org/uploads/P221024-2.pdf))
* SEC, Crypto Task Force ([link](https://www.sec.gov/files/ctf-memo-digital-economy-04172025.pdf))
* SEC, Tokenized U.S. Equities Economic Analysis ([link](https://www.sec.gov/files/ctf-written-james-overdahl-tokenized-us-equities-01-22-2026.pdf))
* SEC, Circle, Inc. S-1 ([link](https://d18rn0p25nwr6d.cloudfront.net/CIK-0001876042/4e110da0-5359-47fd-8fb3-063f72279572.pdf))
* Testimony Before the US House Committee on Financial Services ([link](https://www.congress.gov/119/meeting/house/118320/witnesses/HHRG-119-BA00-Wstate-RamanV-20250604.pdf))
* FDIC, Chairman ([link](https://www.fdic.gov/view-fdic-update-key-policy-issues-remarks-fdic-acting-chairman-travis-hill.pdf))
* CFA Institute ([link](https://rpc.cfainstitute.org/sites/default/files/docs/research-reports/tokenization_part-i_online-1.pdf))
* DTCC ([link](https://www.dtcc.com/digital-assets/digital-standard/tokenized-real-world-assets)), ([link](https://www.dtcc.com/-/media/interoperable-digital-asset-securities-white-paper.pdf))
* Korea Institute of Finance ([link](https://www.kif.re.kr/kif4/publication/viewer?mid=20\&vid=0\&cno=347973\&fcd=2025004729PU\&ft=0))
* Financial Information Forum ([link](https://www.fif.com/media/com_acymailing/upload/fif_digital_assets_wg_presentation___6_18_24.pdf))
* North American Securities Administrators Association ([link](https://www.nasaa.org/wp-content/uploads/2025/03/nasaa-excludes-interest-bearing-securities-from-payment-stablecoin-definition.pdf))
**Investment Banks & Financial Institutions:**
* BlackRock ([link](https://www.ishares.com/us/literature/presentation/2026-thematic-outlook-stamped.pdf))
* JP Morgan ([link](https://am.jpmorgan.com/content/dam/jpm-am-aem/emea/regional/en/insights/portfolio-insights/gl-tokenization-whitepaper.pdf)), ([link](https://www.jpmorgan.com/kinexys/documents/portfolio-management-powered-by-tokenization.pdf)), ([link](https://www.jpmorgan.com/kinexys/documents/JPMC-Kinexys-Project-Epic-Whitepaper-2024.pdf))
* Citibank ([link](https://www.citibank.com/icg/docs/Citi_Securities_Services_Evolution_2024.pdf))
* Fidelity ([link](https://www.fidelitydigitalassets.com/sites/g/files/djuvja3256/files/acquiadam/FDA%202025%20Look%20Ahead%20Report%20-%20Final.pdf))
* Amundi ([link](https://about.amundi.com/files/nuxeo/dl/4c73d033-5b89-439b-b702-e4851bd8eec4?inline=))
* Development Bank of Singapore ([link](https://www.dbs.com/content/article/pdf/AIO/082025/250821_insights_digital_asset.pdf))
* Visa ([link](https://images.globalclient.visa.com/Web/InovantElqVisaCheckout/%7B04401ddf-3e84-464f-a5db-709a01e29cb4%7D_stablecoins-and-the-future-of-onchain-finance-2025-Visa-white-paper.pdf?utm_source=eloqua\&utm_medium=email))
* State Street Global Advisors ([link](https://www.ssga.com/library-content/assets/pdf/global/digital-assets/2024/asset-tokenization-in-capital-markets.pdf))
* Rothschild & Co ([link](https://am.eu.rothschildandco.com/stock/lib/The%20blockchain%20%26%20sustainable%20development_Digital%20V3.pdf))
* Sumitomo Mitsui Financial Group ([link](https://www.jri.co.jp/file/report/researchfocus/pdf/15611.pdf))
* Samsung Securities ([link](https://www.samsungpop.com/common.do?cmd=down\&contentType=application/pdf\&inlineYn=Y\&saveKey=research.pdf\&fileName=2020/2025032407571639K_02_05.pdf))
* AllianceBernstein ([link](http://www.alliancebernstein.com/content/dam/global/insights/insights-whitepapers/the-case-for-tokens.pdf))
* Janus Henderson ([link](https://www.janushenderson.com/corporate/press-releases/janus-henderson-to-partner-with-anemoy-and-centrifuge-on-its-first-tokenized-fund/))
* WisdomTree ([link](https://www.wisdomtree.eu/api/sitecore/pdf/getblogpdf?id=1e015737-eaea-4035-8309-d7b2372161f8)), ([link](https://www.wisdomtree.eu/api/sitecore/pdf/getblogpdf?id=08fb9a0a-c537-4fe2-ade2-b161ab90894d))
* ARK Invest ([link](https://www.nikkoam.com.hk/files/sp/ark/pdf/2502_ark_big_ideas.pdf)), ([link](https://assets.arkinvest.com/media-8e522a83-1b23-4d58-a202-792712f8d2d3/1d8b476b-12ee-437c-ae9d-52031c4e96e9/ARKInvest%20BigIdeas2026.pdf))
* Fasanara Capital ([link](https://www.fasanara.com/insights/posts/tokenisation-capturing-digital-yield-124))
* Keyrock ([link](https://documents.keyrock.com/hubfs/The-Great-Tokenization-Shift.pdf))
**Consulting & Professional Services:**
* S\&P Global ([link](https://www.spglobal.com/content/dam/spglobal/global-assets/en/special-reports/Corp_1022_TokenizedPrivateCredit.pdf)), ([link](https://www.spglobal.com/_assets/documents/ratings/research/101578824.pdf))
* Moody's ([link](https://www.moodys.com/web/en/us/hosted-assets/digital-asset-monitor-methodology.pdf)) ([link](https://www.linkedin.com/posts/moodys-ratings_finance-tokenization-privatecredit-activity-7217611224316850177-MrFu/))
* McKinsey & Company ([link](https://www.mckinsey.com/~/media/mckinsey/industries/financial%20services/our%20insights/from%20ripples%20to%20waves%20the%20transformational%20power%20of%20tokenizing%20assets/from-ripples-to-waves-the-transformational-power-of-tokenizing-assets.pdf?shouldIndex=false))
* Boston Consulting Group ([link](https://web-assets.bcg.com/81/71/6ff0849641a58706581b5a77113f/tokenized-funds-the-third-revolution-in-asset-management-decoded.pdf)), ([link](https://media-publications.bcg.com/Stablecoins-five-killer-tests-to-gauge-their-potential.pdf))
* PwC ([link](https://www.pwchk.com/en/events/apfstax-oct2024/breakout-tokenisation-and-retailisation.pdf)), ([link](https://www.pwc.co.uk/financial-services/assets/pdf/reasserting-uk-leadership-in-financial-and-related-professional-services.pdf))
* Deloitte ([link](https://www2.deloitte.com/content/dam/Deloitte/fr/Documents/services-financiers/publications/deloitte_dlt-capital-markets-24.pdf))
* Ernst & Young ([link](https://www.ey.com/content/dam/ey-unified-site/ey-com/en-in/industries/financial-services/documents/ey-crypto-insights-may.pdf))
* PitchBook ([link](https://pitchbook.com/news/reports/q4-2025-pitchbook-analyst-note-stablecoins-are-imperfect-but-inevitable))
* Fenwick & West LLP ([link](https://www.fenwick.com/insights/publications/tokenized-real-world-assets-pathways-to-sec-registration))
* Accenture x ChainLink ([link](https://pages.chain.link/hubfs/e/liquidity_without_borders.pdf))
* Quinlan & Associates ([link](https://www.quinlanandassociates.com/wp-content/uploads/2024/11/Quinlan-Associates_From-Digital-Currency-to-Legal-Tender.pdf))
**Crypto & Digital Asset Companies:**
* Binance ([link](https://public.bnbstatic.com/static/files/research/rwas-a-safe-haven-for-onchain-yields.pdf))
* a16zcrypto ([link](https://a16zcrypto.com/posts/article/state-of-crypto-report-2025/))
* Coinbase ([link](https://cdn.jsdelivr.net/gh/abncharts/abncharts.public.1/abnasia.org/1734961557120_compressed_www.abnasia.org.pdf)), ([link](https://assets.ctfassets.net/sygt3q11s4a9/6oinXHvVekdIUw2Ch7yIQw/22d0185eba3c49322ce7cf0d287ea872/SOCQ2Report_final.pdf)), ([link](https://coinbase.bynder.com/m/18348e25ea106276/original/Coinbase_Institutional_Crypto-Market-Outlook_2025_v1.pdf))
* Grayscale ([link](https://research.grayscale.com/reports/public-blockchains-and-the-tokenization-revolution))
* VanEck ([link](https://www.vaneck.com/us/en/blogs/digital-assets/matthew-sigel-vanecks-10-crypto-predictions-for-2025/))
* Bitwise ([link](https://s3.us-east-1.amazonaws.com/static.bitwiseinvestments.com/Research/Bitwise-Crypto-Market-Review-Q1-2025.pdf)), ([link](https://s3.us-east-1.amazonaws.com/static.bitwiseinvestments.com/Research/Bitwise-The-Year-Ahead-10-Crypto-Predictions-for-2025.pdf))
* Galaxy ([link](https://assets.ctfassets.net/h62aj7eo1csj/4vkA9567QmK4pyYoPBtrQa/fb039fd97d657d8151dcf4d3e969e481/The_State_of_Crypto_Lending_-_Galaxy_Research.pdf)), ([link](https://www.galaxy.com/insights/research/big-companies-building-on-ethereum/))
* Pantera Capital ([link](https://panteracapital.com/blockchain-letter/the-year-ahead-in-crypto-2025/))
* [Crypto.com](http://Crypto.com) ([link](https://contenthub--static-crypto-com.webpkgcache.com/doc/-/s/contenthub-static.crypto.com/wp_media/2024/05/Crypto.com-Tokenisation-of-RWA-Yield-Bearing-Stablecoins.pdf))
* Stellar ([link](https://resources.stellar.org/hubfs/Policy%20Brief-Tokenization.pdf))
**Institutional Media:**
* Financial Times ([link](https://archive.is/ykLxn)) ([link](https://archive.is/Ileyu))
* Bloomberg ([link](https://archive.is/QyZ0i)) ([link](https://archive.is/7XT3D))
* Reuters ([link](https://archive.is/iLLMG))
* CNBC ([link](https://www.cnbc.com/2025/10/28/-blackrock-linked-tokenization-firm-securitize-to-go-public-via-spac-deal.html))
* Politico ([link](https://www.politico.com/newsletters/morning-money/2024/04/03/cryptos-next-frontier-00150285))
* Axios ([link](https://www.axios.com/2024/06/10/charted-tokenized-u-s-treasuries-crypto))
* Forbes ([link](https://archive.is/xFaus)) ([link](https://www.forbes.com/sites/leeorshimron/2023/03/16/tokenized-real-world-assets-are-bringing-new-yield-opportunities-to-defi/))
# Coverage & Eligibility
Source: https://docs.rwa.xyz/methodology/coverage
What gets listed, supported networks, and asset class definitions
## Inclusion criteria
To be listed on RWA.xyz, a tokenized asset must meet all of the following criteria:
1. **Blockchain as source of truth.** The blockchain must serve a core role in the asset's issuance, transfer, and settlement. Assets that only reference a blockchain for record-keeping or reconciliation are not eligible. See [Distributed vs. Represented](/frameworks/tokenization-type) for how we classify the degree of on-chain activity.
2. **Verifiable structure.** We must be able to review relevant business and legal documentation (offering documents, legal structure, regulatory filings) to understand the asset's design and confirm it represents a legitimate financial instrument.
3. **Observable on-chain activity.** The token contract must be deployed and have verifiable on-chain state (supply, transfers). We do not list announced but undeployed assets.
## Due diligence process
Before onboarding a new asset, our team:
1. Reviews the asset's legal and business documentation
2. Verifies the token contract is deployed and functional
3. Confirms the blockchain serves as a source of truth for issuance and transfers
4. Classifies the asset using our [asset class framework](/frameworks/asset-classes) and [tokenization type framework](/frameworks/tokenization-type)
5. Identifies and maps the issuer, platform, manager, and service providers
6. Establishes data feeds for pricing and NAV
Assets can be submitted for review by issuers and platforms using our [submission form](https://forms.default.com/353141) or by contacting [team@rwa.xyz](mailto:team@rwa.xyz).
## Asset class coverage
We classify assets by their underlying economic exposure. See the [Asset Classes framework](/frameworks/asset-classes) for full definitions.
| Asset Class | Description |
| -------------------------------- | -------------------------------------------------------------------- |
| Stablecoins | Tokens with NAV intended to stay 1:1 with a fiat currency |
| U.S. Treasuries | Exposure to U.S. federal government debt |
| Non-US Government Debt | Exposure to non-U.S. sovereign debt |
| Credit | Non-sovereign debt (corporate, asset-backed, specialty, diversified) |
| Stocks | Exposure to publicly listed equities |
| Private Equity & Venture Capital | Non-public equity exposure |
| Active Strategies | Discretionary or systematic managed strategies |
| Commodities | Raw materials and natural resources |
| Real Estate | Property values and rental income |
**Classification rules:**
* We work directly with issuers and platforms to determine the most accurate category
* Multi-asset instruments follow a **dominant exposure rule**: each is assigned to its largest exposure category
* When deciding between stablecoin and treasury classification, we apply two tests: (1) Is the NAV intended to remain stable at \$1? (2) Can the token be freely transferred between holders? If both are not met, we classify as a treasury rather than a stablecoin.
## Network support
We index token data from the following blockchain networks.
**Full support:** All on-chain metrics (supply, holders, transfers, transactions) are computed and refreshed daily.
Ethereum, Solana, Avalanche, ZKsync Era, Aptos, XRP Ledger, XDC, Mantra
**Limited support:** Token supply and basic metadata are tracked, but some on-chain metrics (e.g., individual holder counts, transaction-level data) may be incomplete.
Polygon, Arbitrum, Optimism, Base, Mantle, NEAR, Sui, Algorand, Stellar, Gnosis, Provenance, Noble, Binance Smart Chain, Tron, Blast, Celo, Manta Pacific, Canto
**Full vs. limited:** Full support means all on-chain metrics are computed natively for that chain. Limited support means some on-chain metrics (e.g., individual holder counts, transaction-level data) may be incomplete.
To request full support for a network, contact [team@rwa.xyz](mailto:team@rwa.xyz).
## Delisting policy
When a tokenized asset is delisted (redeemed, wound down, or removed from its issuing platform):
1. We stop updating the asset's data going forward
2. All historical data is preserved on the platform and through the API
3. The asset remains queryable but is excluded from active league tables
We do not delete historical data. A complete record of the tokenization market, including assets that no longer exist, is important for research and transparency.
# Data Quality
Source: https://docs.rwa.xyz/methodology/data-quality
Refresh cadence, validation, anomaly detection, and error handling
## Refresh cadence
| Data type | Frequency | Timing |
| ---------------------------------------------- | ----------- | ------------------------------------------- |
| On-chain metrics (supply, holders, transfers) | Daily | Midnight ET |
| Pricing data | Daily | Midnight ET |
| Issuer-reported data (NAV, fees, fund details) | As reported | Typically daily or weekly, varies by issuer |
| Qualitative data (descriptions, legal info) | As updated | Reviewed and published by our team |
## Validation pipeline
Data passes through multiple validation stages before appearing on the platform.
### On-chain data validation
* **Cross-reference verification:** On-chain metrics are cross-referenced against public block explorers (Etherscan, Solscan, etc.) to confirm accuracy
* **Supply consistency checks:** Total supply must be non-negative and consistent with mint/burn event history
* **Balance reconciliation:** The sum of all holder balances must equal the total supply
### Pricing data validation
* **Anomaly detection:** Automated systems flag prices that deviate significantly from expected ranges (e.g., >10% change from the previous day's value)
* **Cross-source verification:** When a flagged price is detected, we cross-check against the issuer, alternative exchanges, and on-chain price feeds
* **Stale price detection:** If a price feed stops updating, the asset is flagged for review rather than displaying the last known price indefinitely
### Issuer-reported data validation
* **Manual review:** All qualitative data submitted by issuers is reviewed by our team before publication
* **Document verification:** Key claims (jurisdiction, legal structure, regulatory registration) are cross-referenced against public filings and official sources
* **Change tracking:** Updates to issuer-reported data are logged, allowing us to audit changes over time
## Data gaps
When data is unavailable or unverifiable, we follow these rules:
| Scenario | Handling |
| --------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Data source goes offline | Field is left blank; team contacts the issuer/network to investigate |
| Price feed becomes stale | Field is flagged; not displayed until a fresh source is confirmed |
| On-chain data unavailable for a network | Metric is blank; the asset is marked with limited network support |
| Issuer stops reporting NAV | NAV is forward-projected from the last known value until a fresh report is received |
| Conflicting data from multiple sources | Resolved using the [source priority hierarchy](/methodology/data-sources#source-prioritization) |
We never interpolate, extrapolate, or estimate missing values. If a data point is unavailable, the field is left blank.
## Edge cases
### Rebasing tokens
Tokens whose balance changes without transfers (e.g., stETH-style rebasing) require special handling. We track both the raw supply and the rebase multiplier separately, then compute the display supply from them. See [Metric Calculations](/methodology/metrics#raw-supply-and-rebase-multiplier).
### Bridged tokens
When a token is bridged to another chain, we track the bridged supply separately from the native supply. The asset-level total supply is the sum across all chains, but token-level metrics are reported per-chain. Bridge events are classified as bridge transactions, distinct from regular transfers.
### Multi-token assets
Some assets have multiple token deployments across different chains and platforms. We aggregate metrics at the asset level (sum of all tokens) and also report per-token metrics for chain-level granularity.
## Reporting errors
If you spot a data inaccuracy:
1. Email [team@rwa.xyz](mailto:team@rwa.xyz) with a description of the issue
2. Include the asset or token name, the field in question, and what you believe the correct value should be
3. A screenshot or link to a source is helpful but not required
We investigate and correct confirmed errors as quickly as possible. All corrections are logged internally.
# Data Sources
Source: https://docs.rwa.xyz/methodology/data-sources
Where our data comes from and how we prioritize sources
We combine issuer-reported data, on-chain data, and third-party pricing feeds to build a comprehensive view of each tokenized asset. Each data type has a different source hierarchy and validation process.
## Issuer-reported data
The majority of reference data on our platform (asset details, legal structure, fees, service providers) comes directly from issuers and platforms.
**What issuers provide:**
* Asset descriptions, names, and tickers
* Legal entity information (issuer name, jurisdiction, legal structure, CIK, LEI)
* Fee structures (management fees, performance fees, subscription/redemption fees)
* Fund details (open/closed-end, lockup period, investor eligibility)
* Service provider relationships (custodians, auditors, fund administrators, transfer agents)
* NAV data (for assets where NAV is not observable on-chain)
* Transparency and audit reports
**Verification process:**
All issuer-reported data is reviewed by our team before publication. We cross-reference against public filings, offering documents, and official issuer websites. Data is not published until verified.
**Privacy handling:**
If an issuer wants to keep certain holder-related data private, we offer options to anonymize sensitive fields. Issuers can submit data with customizable privacy settings.
## On-chain data
On-chain data provides the quantitative metrics for each token: supply, holders, transfers, and transaction activity.
**What we track:**
* Token supply and balances
* Transfer events (mints, burns, peer-to-peer transfers)
* Holder addresses and activity
* Bridge events (cross-chain token movements)
On-chain data is deterministic. Given the same block, the same values are always produced. We cross-reference against public block explorers (e.g., [Etherscan](https://etherscan.io/), [Solscan](https://solscan.io/)) to validate accuracy.
**Data partners:** We work with [Dune](https://dune.com/) and [SonarX](https://sonarx.com/) for on-chain data infrastructure.
## Pricing data
Pricing data determines NAV, market value, and yield calculations. Different metrics come from different sources:
* **Exchange aggregators:** Market prices for tokens traded on exchanges, aggregated across multiple venues
* **Issuer-reported NAV:** Net asset value reported directly by the issuer or fund administrator
* **On-chain price feeds:** Prices derived from on-chain sources (e.g., oracle feeds, DEX prices)
## Third-party data
We supplement our primary sources with data from:
* **Block explorers** for cross-referencing on-chain metrics
* **Public filings** such as SEC EDGAR and regulatory registrations
* **Rating agencies** including S\&P and Bluechip where available
* **Industry databases** for asset classification and sector mapping
## Source prioritization
When multiple sources provide conflicting data, we resolve conflicts using this priority order:
| Priority | Source | Rationale |
| -------- | ----------------------------------- | ----------------------------------------------- |
| 1 | Public filings / official documents | Legally binding, audited |
| 2 | Issuer-reported data | Direct from source, verified by our team |
| 3 | On-chain data | Deterministic, independently verifiable |
| 4 | Exchange aggregators | Market-derived, subject to liquidity conditions |
| 5 | Third-party databases | Useful for enrichment, but not authoritative |
# Market cap and total value
Source: https://docs.rwa.xyz/methodology/market-cap-and-total-value
How market capitalization and total asset value differ, and when each metric applies
RWA.xyz tracks two distinct measures of an asset's size: **market capitalization** (market cap) and **total asset value**. They answer different questions, rely on different data sources, and apply to different subsets of tokenized assets.
## Market cap
Market cap is the total value of a token's supply priced at its current secondary market price.
```
Market cap = Total supply × Market price
```
Market cap only exists when a token has a **secondary market** — a venue where tokens trade freely between buyers and sellers at prices set by supply and demand. This includes decentralized exchanges, centralized exchanges, or any on-chain liquidity pool where the token can be bought or sold.
If there is no secondary market for a token, there is no market price, and therefore no market cap.
### Circulating market cap
Circulating market cap is the more commonly referenced figure. It excludes tokens that are locked, held in treasury, or otherwise not available to the market:
```
Circulating market cap = Circulating supply × Market price
```
This is the primary size metric used on the platform for assets that have secondary market trading.
### When market cap does not apply
Many tokenized assets — particularly fund structures, private credit, and institutional products — do not trade on secondary markets. Tokens are issued directly to investors and redeemed back to the issuer. In these cases:
* There is no market price to reference
* Market cap is not calculated
* Total asset value (described below) is the appropriate size metric
## Total asset value
Total asset value represents the value of a token's supply based on its **net asset value (NAV)** rather than its market price.
```
Total asset value = Total supply × NAV per token
```
NAV is issuer-reported and reflects the underlying value of the assets backing the token. See [NAV & yield](/methodology/nav-and-yield) for how NAV is sourced and standardized.
Total asset value applies to all assets that report NAV, regardless of whether a secondary market exists.
### Circulating asset value
Circulating asset value adjusts for non-circulating supply:
```
Circulating asset value = Circulating supply × NAV per token
```
## Price vs. NAV
Price and NAV are independent data points that can diverge.
| | Price | NAV |
| -------------------- | ----------------------------------- | ------------------------------------------------------------------------- |
| **Source** | Secondary market trading activity | Issuer-reported valuation |
| **Reflects** | What the market is willing to pay | Underlying asset value per token |
| **Availability** | Only when a secondary market exists | Any asset where the issuer reports NAV |
| **Update frequency** | Continuous (real-time market data) | Varies — daily for liquid products, less frequent for illiquid structures |
When both price and NAV are available for the same token, the difference between them tells you whether the token trades at a **premium** (price > NAV) or **discount** (price \< NAV) to its underlying value.
## When to use which metric
| Scenario | Metric | Reason |
| --------------------------------------- | ----------------- | -------------------------------------------------------------------- |
| Token trades on secondary markets | Market cap | Reflects actual market valuation |
| Token has no secondary market | Total asset value | Only NAV-based valuation is available |
| Both price and NAV exist | Both | Comparing market cap to total asset value reveals premium/discount |
| Aggregating across all tokenized assets | Total asset value | Provides a consistent basis since not all assets have a market price |
When the platform aggregates metrics across asset classes, total asset value is the standard measure because it provides coverage across all assets. Market cap is used as a supplementary metric where available.
# Metric Calculations
Source: https://docs.rwa.xyz/methodology/metrics
How supply, value, yield, and activity metrics are computed
This page documents how key metrics on the RWA.xyz platform are calculated. All metrics are available through the [API](/api/overview) and the [Data Catalog](https://app.rwa.xyz/catalog).
## Supply metrics
### Total supply
The total number of tokens that exist on-chain, read directly from the token contract.
### Circulating supply
Total supply minus tokens held in non-circulating addresses (e.g., treasury wallets, burn addresses, locked contracts). Circulating supply reflects tokens that are available to the market.
For most assets, circulating supply equals total supply. Where it differs, we identify non-circulating addresses through issuer disclosure or on-chain analysis.
### Bridged token supply
Supply adjusted for bridging activity. On the target chain, bridged token supply equals circulating supply. On the source chain, bridged tokens are subtracted from circulating supply to avoid double-counting tokens that have moved cross-chain.
### Raw supply and rebase multiplier
For rebasing tokens (where token balances change automatically without transfers), we track the raw (base unit) supply separately from the display supply. The display supply equals the raw supply multiplied by the rebase multiplier. Non-rebasing tokens have a rebase multiplier of 1.
## Value metrics
### Net asset value (NAV)
See [NAV & Yield](/methodology/nav-and-yield) for detailed methodology on how NAV is sourced, standardized, and displayed.
### Price
The current market price of one token in USD, sourced from exchange aggregators. Price is used to calculate market value metrics. NAV-based metrics (total asset value, circulating asset value) are calculated separately from issuer-reported NAV. Price and NAV are independent.
### Market value
Total supply multiplied by price. This represents the total value of all tokens in existence.
### Circulating market value
Circulating supply multiplied by price. This is the primary measure of an asset's market size on the platform, as it excludes locked or non-circulating tokens.
### Total asset value
For fund-style assets, the total value of all assets under management. This may differ from market value if the token trades at a premium or discount to NAV.
### Circulating asset value
Circulating supply multiplied by NAV.
## Yield metrics
See [NAV & Yield](/methodology/nav-and-yield) for detailed methodology on yield calculations, including SEC-standard formulas and how accumulating vs. distributing structures are handled.
## Activity metrics
### Holding addresses count
The number of unique addresses holding a non-zero balance of the token, counted directly from on-chain state.
The **adjusted** holding addresses count excludes known infrastructure addresses (bridges, smart contracts, treasury wallets) to approximate the number of distinct end-user holders.
### Holder concentration
The percentage of total supply held by the top 1, 5, or 10 addresses. Calculated from on-chain balance data.
### Active addresses
The number of unique addresses that sent or received the token during a given period. Daily counts cover a single calendar day (UTC). Trailing counts (7-day, 30-day, 90-day, 365-day) cover the specified rolling window.
### Transfer volume
The total USD value of peer-to-peer transfers during the period. This excludes mints and burns; only transfers between holders are counted.
### Mints and burns
* **Mints** represent new token issuance (tokens created by the issuer)
* **Burns** represent redemptions (tokens destroyed and removed from circulation)
Together, these represent primary market activity.
## Aggregation
Metrics can be aggregated across multiple entities (e.g., all assets in an asset class, all tokens on a network). When aggregating:
* **Sum** is used for additive metrics (supply, value, volume, holder counts)
* **Weighted average** is used for rate metrics (APY, yield to maturity), weighted by circulating market value
* Aggregation respects the **stock vs. flow** distinction: supply and value are point-in-time snapshots, while mints, burns, and transfers are accumulated over the period
# NAV & Yield
Source: https://docs.rwa.xyz/methodology/nav-and-yield
How NAV and yield data is sourced, standardized, and displayed across the platform
## Net asset value (NAV)
Net asset value on the platform is displayed at the **token level**. For many tokenized funds, one token represents one fund share, making token NAV and per-share NAV equivalent. Multiplying token NAV by circulating supply gives you the fund-level net asset value (or AUM).
### Data sources
All NAV data is **issuer-reported**. RWA.xyz does not internally calculate, model, or adjust NAV values. Depending on the asset, data reaches the platform through one of three channels:
| Source type | Description |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **Direct API integration** | NAV data is ingested automatically from the issuer's systems |
| **Fixed NAV** | Provided directly by the issuer for assets that maintain a stable price (e.g., distributing structures pegged at \$1.00) |
| **Pegged NAV** | Tied to an underlying reference asset, such as a gold-backed token pegged to the spot price of one Troy ounce via an oracle |
### Update frequency
The update frequency varies by asset. Tokenized treasury products are typically updated daily, while less liquid institutional fund structures may update less frequently (e.g., on a quarterly basis). You can verify the exact cadence for any asset by viewing its historical chart on the platform and downloading the time-series data.
## Yield calculation
Yield methodology follows the **SEC 7-day yield calculation**, the standard for U.S. money market funds and the benchmark the Securities and Exchange Commission requires for comparable yield reporting.
The logic takes a rolling 7-day window of performance, calculates the return over that period, and annualizes it to produce a standardized, comparable figure across every asset on the platform.
Depending on how a product is structured, this is applied in one of two ways.
### Method A: NAV-derived yield
For assets where yield accrues into the token price, the SEC-standard 7-day yield formula is applied directly. The calculation takes the NAV at the end of a 7-day window, subtracts the NAV at the beginning, divides by the starting NAV, and annualizes the result:
```
((NAV_end − NAV_start) / NAV_start) × (365 / 7) × 100
```
This works because the token's price movement captures the return. As income accrues into NAV, the appreciation over the 7-day window is the yield.
### Method B: Direct yield feed
Not all tokenized products accrue yield into NAV. Distributing structures pay daily income to holders while maintaining a stable NAV. Comparing the starting and ending NAV on these products would show effectively zero return, despite the holder earning real income every day.
For these assets, issuers provide a direct, unannualized one-day net yield figure (for example, `0.000137`, representing a 0.0137% daily return). The last 7 daily figures are summed to get the total return over the 7-day window, then annualized the same way:
```
(Sum of last 7 daily yield figures) × (365 / 7) × 100
```
Summing the actual daily returns over the 7-day window gives the same type of 7-day return input that Method A derives from NAV, allowing the same annualization logic to apply.
### Output
In both cases, the output is the same: a **7-day annualized non-compounding yield figure**, displayed **net of fees**, that allows you to compare across every asset on the platform on equal footing. The input method varies based on product structure, but the logic (a 7-day window, annualized) is consistent.
## Accumulating vs. distributing structures
The two yield methods map directly to the two main product structures in tokenized assets.
| Structure | Behavior | Yield method |
| ---------------- | ------------------------------------------------------------------------------------------- | ---------------------------- |
| **Accumulating** | Income is reinvested directly into NAV. The token price rises over time as yield builds up. | Method A (NAV-derived) |
| **Distributing** | Income is paid out to holders. NAV stays pegged and does not appreciate. | Method B (Direct yield feed) |
In both models, the yield figure captures **total return, net of fees**. NAV and yield are always displayed after fees have been deducted, based entirely on data provided by issuers.
## Standardization across asset types
The tokenized asset landscape includes treasuries, credit funds, commodity-backed tokens, active strategies, real estate, and more — each with different structures, fee models, and reporting cadences. Without a standardized methodology, comparing across products is guesswork.
RWA.xyz applies SEC-standard calculation logic to every asset, regardless of type. The underlying data cadence naturally differs from one product to the next (a daily-updating treasury fund and a quarterly-reporting credit vehicle operate on different timelines), but the methodology applied is always the same: **issuer-sourced data, processed through a single, transparent, SEC-standard methodology**.
# Overview
Source: https://docs.rwa.xyz/methodology/overview
RWA.xyz is the leading data platform for tokenized real-world assets. Institutions, regulators, and market participants depend on our data to understand and navigate the tokenization market. This section documents how we source, calculate, validate, and maintain that data.
## Principles
**Straight from the source.** Every data point comes from its primary source. Reference data (asset details, legal structure, fees, service providers) comes directly from issuers. Transfer and holder metrics are computed from on-chain transactions. Pricing comes from exchanges or the fund administrator, depending on the asset type. We don't rely on second-hand aggregations when the original source is available.
**Blockchain as source of truth.** We only track assets where the blockchain plays a core role in issuance, transfer, and settlement, not assets that merely reference a blockchain for record-keeping.
**Accuracy over speed.** When data is uncertain or unavailable, we leave fields blank rather than display potentially inaccurate information. We prioritize correctness over completeness.
**Credible neutrality.** We apply consistent inclusion criteria and classification rules across all assets, issuers, and platforms. Methodology changes go through internal review before deployment.
**Full historical preservation.** We maintain all historical data indefinitely. When an asset is delisted, we stop updating but preserve its entire history for transparency and research.
## Scope
This methodology covers:
* [**Data Sources**](/methodology/data-sources): Where our data comes from and how we prioritize sources
* [**Metric Calculations**](/methodology/metrics): How supply, value, yield, and activity metrics are computed
* [**Coverage & Eligibility**](/methodology/coverage): What gets listed, supported networks, and asset class definitions
* [**Data Quality**](/methodology/data-quality): Refresh cadence, validation, anomaly detection, and error handling
## Questions and feedback
If you spot an error or have questions about our methodology, contact us at [team@rwa.xyz](mailto:team@rwa.xyz). We welcome feedback that helps improve the data standard for the tokenization industry.
# Assets
Source: https://docs.rwa.xyz/schemas/assets
Complete field reference for asset data returned by the RWA.xyz API.
Browse this schema interactively in the [Data Catalog](https://app.rwa.xyz/catalog).
## Reference Data
### Basic Information
| Field Name | Description | Type |
| ---------------- | ---------------------------------------------------------------- | --------- |
| `id` | Unique identifier for the asset | Integer |
| `asset_id` | Asset identifier | Integer |
| `name` | Name of the asset | String |
| `description` | Description of the asset | String |
| `slug` | URL-friendly identifier | String |
| `ticker` | Ticker symbol for the asset | String |
| `isin` | International Securities Identification Number | String |
| `cusip` | Committee on Uniform Securities Identification Procedures number | String |
| `unit` | Unit of measurement for the asset | String |
| `website` | Website URL for the asset | String |
| `icon_url` | URL to the asset's icon | String |
| `color_hex` | Hexadecimal color code for the asset | String |
| `type` | Type of asset | String |
| `hidden` | Whether the asset is hidden from public view | Boolean |
| `inception_date` | Date when the asset was created | Date |
| `_updated_at` | Timestamp of last update | Timestamp |
### Classification
| Field Name | Description | Type |
| -------------------------- | --------------------------- | ---------- |
| `asset_class_id` | Asset class identifier | Integer |
| `asset_class_name` | Asset class name | String |
| `asset_class` | Asset class details | Object |
| `region_ids` | Array of region identifiers | Integer\[] |
| `region_names` | Array of region names | String\[] |
| `sector_ids` | Array of sector identifiers | Integer\[] |
| `sector_names` | Array of sector names | String\[] |
| `underlying_asset_classes` | Underlying asset classes | String\[] |
### Issuer Information
| Field Name | Description | Type |
| ------------- | ----------------- | ------ |
| `issuer_id` | Issuer identifier | String |
| `issuer_name` | Issuer name | String |
| `issuer` | Issuer details | Object |
### Transparency
| Field Name | Description | Type |
| -------------------------- | --------------------------------------- | ------ |
| `transparency_description` | Description of the asset's transparency | String |
| `transparency_type` | Type of transparency reporting | String |
| `transparency_url` | URL to transparency reports | String |
### Holder Rights
| Field Name | Description | Type |
| ---------------------------- | ---------------------------------------- | ------- |
| `holder_rights_description` | Description of holder rights | String |
| `holder_has_right_to_redeem` | Whether holders have the right to redeem | Boolean |
| `has_fork_rights` | Whether holders have fork rights | Boolean |
| `fork_rights_description` | Description of fork rights | String |
### Dispute Resolution
| Field Name | Description | Type |
| --------------------------------- | ----------------------------------------- | ------- |
| `dispute_resolution_country_id` | Country ID for dispute resolution | Integer |
| `dispute_resolution_country_name` | Country name for dispute resolution | String |
| `dispute_resolution_country` | Dispute resolution country details | Object |
| `dispute_resolution_description` | Description of dispute resolution process | String |
### Pegged Asset
| Field Name | Description | Type |
| ----------------------------- | ---------------------------------------- | ------- |
| `asset_pool_id` | Asset pool identifier | Integer |
| `pegged_asset_id` | Pegged asset identifier | Integer |
| `pegged_asset_name` | Pegged asset name | String |
| `pegged_asset` | Pegged asset details | Object |
| `asset_to_pegged_asset_ratio` | Ratio of asset to pegged asset | Float |
| `peg_maintenance_description` | Description of peg maintenance mechanism | String |
### Fees
| Field Name | Description | Type |
| --------------------------- | ------------------------------------- | ------- |
| `total_management_fee_bps` | Total management fee in basis points | Integer |
| `total_performance_fee_bps` | Total performance fee in basis points | Integer |
| `fee_structure_description` | Description of the fee structure | String |
| `other_fees_description` | Description of other fees | String |
### Regulatory & Jurisdiction
| Field Name | Description | Type |
| -------------------------------- | ---------------------------------------- | ------- |
| `regulatory_framework` | Regulatory framework governing the asset | String |
| `governing_body` | Governing body for the asset | String |
| `regulatory_registration_number` | Regulatory registration number | String |
| `jurisdiction_country_id` | Country ID of the jurisdiction | Integer |
| `jurisdiction_country_name` | Country name of the jurisdiction | String |
| `jurisdiction_country` | Jurisdiction country details | Object |
### Fund Structure
| Field Name | Description | Type |
| --------------------------- | ----------------------------------------- | ------- |
| `management_mechanism_type` | Type of management mechanism | String |
| `is_open_ended` | Whether the fund is open-ended | Boolean |
| `lockup_period_months` | Lockup period in months | Integer |
| `lockup_description` | Description of lockup terms | String |
| `term_length_years` | Term length in years for closed-end funds | Integer |
| `term_description` | Description of fund term | String |
| `master_fund_id` | Master fund identifier for feeder funds | Integer |
### Investment Details
| Field Name | Description | Type |
| ---------------------------------- | ----------------------------------------- | ------- |
| `annual_return_target_description` | Description of annual return target | String |
| `distributes_income` | Whether the fund distributes income | Boolean |
| `distribution_frequency_type` | Frequency of distributions | String |
| `nav_reflects_income_only` | Whether NAV reflects income only | Boolean |
| `is_investable` | Whether the asset is currently investable | Boolean |
| `max_capacity_amount` | Maximum capacity amount | Integer |
| `max_capacity_asset_id` | Asset ID for max capacity measurement | Integer |
### Accounting
| Field Name | Description | Type |
| ------------------------------ | ----------------------------------------- | ------- |
| `accounting_basis` | Accounting basis used | String |
| `accounting_basis_description` | Description of accounting basis | String |
| `accounting_frequency_type_id` | Accounting frequency type identifier | Integer |
| `accounting_frequency_type` | Accounting frequency type | String |
| `fair_value_input_level` | Fair value input level (Level 1, 2, or 3) | String |
### Primary Market
| Field Name | Description | Type |
| ------------------------------------------ | -------------------------------------------- | --------- |
| `primary_market__is_kyc_required` | Whether KYC is required for primary market | Boolean |
| `primary_market__base_asset_ticker` | Base asset ticker for primary market | String |
| `primary_market__minimum_subscription_amt` | Minimum subscription amount | Integer |
| `primary_market__subscription_description` | Description of subscription process | String |
| `primary_market__subscription_fee_bps` | Subscription fee in basis points | Integer |
| `primary_market__redemption_description` | Description of redemption process | String |
| `primary_market__redemption_fee_bps` | Redemption fee in basis points | Integer |
| `primary_market__investor_types` | Eligible investor types | String\[] |
| `primary_market__subscription_frequency` | Frequency of subscription windows | String |
| `primary_market__redemption_frequency` | Frequency of redemption windows | String |
| `primary_market__kyc_provider_id` | KYC provider identifier | Integer |
| `primary_market` | Primary market details | Object |
| `primary_markets` | Array of primary markets | Object |
| `primary_market_non_pegged_asset` | Primary market details for non-pegged assets | Object |
| `primary_market_pegged_asset` | Primary market details for pegged assets | Object |
### Service Providers
| Field Name | Description | Type |
| -------------------------- | -------------------------------- | ------- |
| `manager_id` | Manager/advisor identifier | Integer |
| `manager` | Manager details | Object |
| `sub_advisor_id` | Sub-advisor identifier | Integer |
| `sub_advisor` | Sub-advisor details | Object |
| `sponsor_id` | Sponsor identifier | Integer |
| `traditional_broker_id` | Traditional broker identifier | Integer |
| `traditional_broker` | Traditional broker details | Object |
| `traditional_custodian_id` | Traditional custodian identifier | Integer |
| `traditional_custodian` | Traditional custodian details | Object |
| `crypto_custodian_id` | Crypto custodian identifier | Integer |
| `crypto_custodian` | Crypto custodian details | Object |
| `crypto_broker_id` | Crypto broker identifier | Integer |
| `crypto_broker` | Crypto broker details | Object |
| `auditor_id` | Auditor identifier | Integer |
| `auditor` | Auditor details | Object |
| `fund_administrator_id` | Fund administrator identifier | Integer |
| `fund_administrator` | Fund administrator details | Object |
| `exchange_agent_id` | Exchange agent identifier | Integer |
| `transfer_agent_id` | Transfer agent identifier | Integer |
| `transfer_agent` | Transfer agent details | Object |
| `paying_agent_id` | Paying agent identifier | Integer |
| `paying_agent` | Paying agent details | Object |
### Custody & Security
| Field Name | Description | Type |
| ---------------------------------------- | -------------------------------------- | ------- |
| `holdings_are_all_secured` | Whether all holdings are secured | Boolean |
| `holdings_security_description` | Description of holdings security | String |
| `custody_description` | Description of custody arrangement | String |
| `are_accounts_segregated` | Whether accounts are segregated | Boolean |
| `accounts_segregated_description` | Description of account segregation | String |
| `are_holdings_bankruptcy_remote` | Whether holdings are bankruptcy remote | Boolean |
| `holdings_bankruptcy_remote_description` | Description of bankruptcy remoteness | String |
| `has_deposit_insurance` | Whether deposit insurance is available | Boolean |
| `deposit_insurance_description` | Description of deposit insurance | String |
### Blockchain & Tokens
| Field Name | Description | Type |
| ---------------------- | ------------------------------------------------ | ---------- |
| `protocol_ids` | Array of platform identifiers | Integer\[] |
| `base_protocol_ids` | Array of base platform identifiers | Integer\[] |
| `network_ids` | Array of network identifiers | Integer\[] |
| `network_names` | Array of network names | String\[] |
| `token_count` | Number of tokens | Integer |
| `native_token_count` | Number of natively issued tokens | Integer |
| `bridge_token_count` | Number of bridged tokens | Integer |
| `has_native_tokens` | Whether the asset has any natively issued tokens | Boolean |
| `has_bridge_tokens` | Whether the asset has any bridged tokens | Boolean |
| `tokens` | Token details | Object |
| `deployed_contract_id` | Deployed contract identifier | Integer |
### Ratings
| Field Name | Description | Type |
| ----------------- | -------------------- | ------ |
| `ratings` | Array of ratings | Object |
| `sp_rating` | S\&P rating | String |
| `bluechip_rating` | Rating from Bluechip | String |
### Real Estate
| Field Name | Description | Type |
| ---------------------- | ---------------------------- | ------ |
| `real_estate_property` | Real estate property details | Object |
## Metrics
### Yield & Pricing Metrics
| Field Name | Description | Type |
| --------------------------------- | ---------------------------------- | ------- |
| `is_yield_bearing` | Whether the asset is yield bearing | Boolean |
| `yield_to_maturity_percent` | Yield to maturity percentage | Object |
| `net_asset_value_dollar` | Net asset value in dollars | Object |
| `net_asset_value_token` | Net asset value in tokens | Object |
| `weighted_average_maturity_years` | Weighted average maturity in years | Object |
| `price_dollar` | Price in dollars | Object |
| `market_cap_dollar` | Market capitalization in dollars | Object |
| `market_value_dollar` | Market value in dollars | Object |
| `m2_money_stock_dollar` | M2 money stock in dollars | Object |
| `apy_7_day` | 7-day APY | Object |
| `apy_30_day` | 30-day APY | Object |
### Supply & Circulation Metrics
| Field Name | Description | Type |
| --------------------------------- | ------------------------------------- | ------ |
| `total_supply_token` | Total supply in tokens | Object |
| `circulating_supply_token` | Circulating supply in tokens | Object |
| `raw_supply` | Raw supply data | Object |
| `rebase_multiplier` | Rebase multiplier for rebasing tokens | Object |
| `bridged_token_supply_token` | Bridged token supply | Object |
| `bridged_token_market_cap_dollar` | Bridged token market cap in dollars | Object |
| `bridged_token_value_dollar` | Bridged token value in dollars | Object |
### Asset Value Metrics
| Field Name | Description | Type |
| -------------------------------- | ---------------------------------- | ------ |
| `total_asset_value_dollar` | Total asset value in dollars | Object |
| `total_asset_value_token` | Total asset value in tokens | Object |
| `circulating_asset_value_dollar` | Circulating asset value in dollars | Object |
### Capacity Metrics
| Field Name | Description | Type |
| --------------------------- | ----------------------------- | ------ |
| `maximum_capacity_dollar` | Maximum capacity in dollars | Object |
| `available_capacity_dollar` | Available capacity in dollars | Object |
| `available_capacity_token` | Available capacity in tokens | Object |
| `idle_capital_token` | Idle capital in tokens | Object |
| `idle_capital_dollar` | Idle capital in dollars | Object |
| `cash_drag_percent` | Cash drag percentage | Object |
### Minting & Burning
| Field Name | Description | Type |
| --------------------------------- | ----------------------------------- | ------ |
| `daily_mints_token` | Daily mints in tokens | Object |
| `daily_mints_dollar` | Daily mints in dollars | Object |
| `daily_burns_token` | Daily burns in tokens | Object |
| `daily_burns_dollar` | Daily burns in dollars | Object |
| `cumulative_issued_amount_token` | Cumulative issued amount in tokens | Object |
| `cumulative_issued_amount_dollar` | Cumulative issued amount in dollars | Object |
### Token Flow Metrics
| Field Name | Description | Type |
| --------------------- | ------------------- | ------ |
| `total_token_inflow` | Total token inflow | Object |
| `total_token_outflow` | Total token outflow | Object |
### Holder & Address Metrics
| Field Name | Description | Type |
| ----------------------------------------- | --------------------------------------- | ------ |
| `holding_addresses_count` | Number of holding addresses | Object |
| `adjusted_holding_addresses_count` | Adjusted number of holding addresses | Object |
| `top_holder_concentration` | Top holder concentration | Object |
| `top_5_holder_concentration` | Top 5 holder concentration | Object |
| `top_10_holder_concentration` | Top 10 holder concentration | Object |
| `daily_active_addresses_count` | Daily active addresses count | Object |
| `weekly_active_addresses_count` | Weekly active addresses count | Object |
| `monthly_active_addresses_count` | Monthly active addresses count | Object |
| `quarterly_active_addresses_count` | Quarterly active addresses count | Object |
| `annually_active_addresses_count` | Annually active addresses count | Object |
| `trailing_7_day_active_addresses_count` | Trailing 7-day active addresses count | Object |
| `trailing_30_day_active_addresses_count` | Trailing 30-day active addresses count | Object |
| `trailing_90_day_active_addresses_count` | Trailing 90-day active addresses count | Object |
| `trailing_365_day_active_addresses_count` | Trailing 365-day active addresses count | Object |
### Transaction Metrics
| Field Name | Description | Type |
| ------------------------------------ | ---------------------------- | ------ |
| `number_of_daily_transactions_count` | Number of daily transactions | Object |
### Transfer Metrics
| Field Name | Description | Type |
| --------------------------------- | -------------------------------- | ------ |
| `daily_transfer_volume_token` | Daily transfer volume in tokens | Object |
| `daily_transfer_volume_dollar` | Daily transfer volume in dollars | Object |
| `weekly_transfer_count` | Weekly transfer count | Object |
| `weekly_transfer_volume` | Weekly transfer volume | Object |
| `monthly_transfer_count` | Monthly transfer count | Object |
| `monthly_transfer_volume` | Monthly transfer volume | Object |
| `trailing_7_day_transfer_count` | Trailing 7-day transfer count | Object |
| `trailing_7_day_transfer_volume` | Trailing 7-day transfer volume | Object |
| `trailing_30_day_transfer_count` | Trailing 30-day transfer count | Object |
| `trailing_30_day_transfer_volume` | Trailing 30-day transfer volume | Object |
### Bridge Metrics
| Field Name | Description | Type |
| --------------------------------------- | ------------------------------------- | ------ |
| `daily_bridge_volume` | Daily bridge volume | Object |
| `daily_bridge_inflow_volume` | Daily bridge inflow volume | Object |
| `daily_bridge_outflow_volume` | Daily bridge outflow volume | Object |
| `weekly_bridge_volume` | Weekly bridge volume | Object |
| `weekly_bridge_inflow_volume` | Weekly bridge inflow volume | Object |
| `weekly_bridge_outflow_volume` | Weekly bridge outflow volume | Object |
| `monthly_bridge_volume` | Monthly bridge volume | Object |
| `monthly_bridge_inflow_volume` | Monthly bridge inflow volume | Object |
| `monthly_bridge_outflow_volume` | Monthly bridge outflow volume | Object |
| `trailing_7_day_bridge_volume` | Trailing 7-day bridge volume | Object |
| `trailing_7_day_bridge_inflow_volume` | Trailing 7-day bridge inflow volume | Object |
| `trailing_7_day_bridge_outflow_volume` | Trailing 7-day bridge outflow volume | Object |
| `trailing_30_day_bridge_volume` | Trailing 30-day bridge volume | Object |
| `trailing_30_day_bridge_inflow_volume` | Trailing 30-day bridge inflow volume | Object |
| `trailing_30_day_bridge_outflow_volume` | Trailing 30-day bridge outflow volume | Object |
### Loan & Credit Metrics
| Field Name | Description | Type |
| ------------------------------------ | -------------------------------------- | ------ |
| `outstanding_principal_token` | Outstanding principal in tokens | Object |
| `outstanding_principal_dollar` | Outstanding principal in dollars | Object |
| `outstanding_capital_dollar` | Outstanding capital in dollars | Object |
| `number_of_loans_funded` | Number of loans funded | Object |
| `number_of_active_loans` | Number of active loans | Object |
| `number_of_defaulted_loans` | Number of defaulted loans | Object |
| `defaulted_loans_amount_dollar` | Defaulted loans amount in dollars | Object |
| `defaulted_loans_amount_percent` | Defaulted loans amount as percentage | Object |
| `funded_assets_dollar` | Funded assets in dollars | Object |
| `funded_assets_token` | Funded assets in tokens | Object |
| `drawndown_assets_dollar` | Drawndown assets in dollars | Object |
| `drawndown_assets_token` | Drawndown assets in tokens | Object |
| `recovered_assets_token` | Recovered assets in tokens | Object |
| `recovered_assets_dollar` | Recovered assets in dollars | Object |
| `cumulative_repaid_principal_dollar` | Cumulative repaid principal in dollars | Object |
| `cumulative_repaid_principal_token` | Cumulative repaid principal in tokens | Object |
| `written_off_principal_dollar` | Written off principal in dollars | Object |
| `written_off_principal_token` | Written off principal in tokens | Object |
| `principal_paid_token` | Principal paid in tokens | Object |
| `principal_paid_dollar` | Principal paid in dollars | Object |
| `interest_paid_token` | Interest paid in tokens | Object |
| `interest_paid_dollar` | Interest paid in dollars | Object |
| `cumulative_interest_earned_dollar` | Cumulative interest earned in dollars | Object |
| `cumulative_interest_earned_token` | Cumulative interest earned in tokens | Object |
### Repo Metrics
| Field Name | Description | Type |
| ----------------------------------- | --------------------------------- | ------ |
| `cumulative_repo_trade_count` | Cumulative repo trade count | Object |
| `cumulative_repo_issuance_volume` | Cumulative repo issuance volume | Object |
| `cumulative_repo_collateral_volume` | Cumulative repo collateral volume | Object |
| `repo_loan_to_value_ratio` | Repo loan-to-value ratio | Object |
### Collateralization
| Field Name | Description | Type |
| ---------------------------- | -------------------------- | ------ |
| `total_collateralized_funds` | Total collateralized funds | Object |
| `total_issued_funds` | Total issued funds | Object |
### Contract Metrics
| Field Name | Description | Type |
| ----------------- | ------------------------- | ------ |
| `total_contracts` | Total number of contracts | Object |
# Data Model
Source: https://docs.rwa.xyz/schemas/data-model
Understand the core data model used by RWA.xyz.
The RWA.xyz data model captures the full lifecycle of tokenized real-world assets — from the legal entity that issues a product, to the on-chain tokens that represent it, to every mint, burn, and transfer.
## How It Fits Together
Consider BlackRock's BUIDL fund. In the data model:
* **BUIDL** is an [Asset](#asset) — the tokenized financial product itself
* **BlackRock USD Institutional Digital Liquidity Fund** is the [Issuer](#issuer) — the legal vehicle (an SPV/trust)
* **BlackRock Fund Advisors** is the [Manager](#manager) — the entity managing the portfolio
* **Securitize** is the [Platform](#platform) — the entity that deploys tokens on-chain
* **Ethereum BUIDL** and **Polygon BUIDL** are [Tokens](#token) — separate on-chain deployments of the same asset
* **Ethereum** and **Polygon** are [Networks](#network) — the blockchains those tokens live on
* **Anchorage Digital** is a [Service Provider](#service-provider) — the crypto custodian for the fund
* Every mint and redemption is a [Transaction](#transaction)
## Core Entities
### Asset
A tokenized financial product. One asset can have multiple tokens across different blockchains and platforms.
**Examples:** USDC, BUIDL, USYC
**API endpoint:** [`GET /v4/assets`](/api/endpoints/assets) | **Schema:** [Asset fields](/schemas/assets)
```json theme={null}
{
"id": 51,
"name": "Circle USYC",
"slug": "circle-usyc",
"ticker": "USYC",
"asset_class_name": "US Treasury Debt",
"issuer_name": "Circle",
"is_yield_bearing": true,
"token_count": 3,
"network_names": ["Ethereum", "Solana", "Polygon"],
"market_cap_dollar": {
"val": 1200000000,
"val_7d": 1150000000,
"chg_7d_pct": 4.35
},
"yield_to_maturity_percent": {
"val": 4.32
}
}
```
### Token
A specific on-chain deployment of an asset on a particular network and platform. This is where blockchain-native data lives — contract addresses, token standards, transfer restrictions.
**Examples:** Ethereum USDC, Polygon BUIDL, Solana USYC
**API endpoint:** [`GET /v4/tokens`](/api/endpoints/tokens) | **Schema:** [Token fields](/schemas/tokens)
```json theme={null}
{
"id": 20,
"name": "Circle USYC (Ethereum)",
"asset_id": 51,
"address": "0x136471a34f6ef19fe68e26ea0c4b5b3db652565f",
"decimals": 6,
"standards": ["ERC-20"],
"network_name": "Ethereum",
"protocol_name": "Securitize",
"transferability_type": "Transferable within whitelist",
"market_value_dollar": {
"val": 950000000,
"val_7d": 920000000,
"chg_7d_pct": 3.26
},
"holding_addresses_count": {
"val": 142
}
}
```
### Issuer
The entity that legally issues the asset. For a fund, this is the investment vehicle (trust, SPV, etc.), not the sponsor or manager.
**Examples:** Circle, BlackRock USD Institutional Digital Liquidity Fund, Superstate Trust
**API endpoint:** [`GET /v4/issuers`](/api/endpoints/issuers)
```json theme={null}
{
"id": 1,
"name": "BlackRock",
"slug": "blackrock",
"legal_name": "BlackRock, Inc.",
"website": "https://www.blackrock.com",
"legal_structure_type": "Corporation",
"legal_structure_country_name": "United States",
"asset_count": 3,
"token_count": 8,
"bridged_token_value_dollar": {
"val": 2500000000,
"val_7d": 2400000000,
"chg_7d_pct": 4.17
}
}
```
### Platform
The entity that deploys tokens on a network. Sometimes the platform is the same as the issuer (e.g., Circle deploys USDC itself). Other times it's a separate entity (e.g., Securitize deploys BUIDL on behalf of BlackRock).
**Examples:** Circle, Securitize, Centrifuge
**API endpoint:** [`GET /v4/platforms`](/api/endpoints/platforms)
In the API, platforms are referenced as `protocol` in field names (e.g., `protocol_id`, `protocol_slug`) for historical reasons. The terms are interchangeable.
```json theme={null}
{
"id": 16,
"name": "Securitize",
"slug": "securitize",
"asset_count": 12,
"circulating_asset_value_dollar": {
"val": 2500000000,
"val_7d": 2400000000,
"chg_7d_pct": 4.17
}
}
```
### Network
The blockchain network that a token is deployed on. Networks can have parent-child relationships (e.g., Arbitrum is an L2 on Ethereum).
**Examples:** Ethereum, Polygon, Solana, Arbitrum
**API endpoint:** [`GET /v4/networks`](/api/endpoints/networks)
```json theme={null}
{
"id": 1,
"name": "Ethereum",
"slug": "ethereum",
"parent_network_id": null,
"token_count": 245,
"asset_count": 180,
"bridged_token_market_cap_dollar": {
"val": 1350000000,
"val_7d": 1320000000,
"chg_7d_pct": 2.27
},
"holding_addresses_count": {
"val": 52341
}
}
```
### Manager
The entity responsible for managing an RWA fund or portfolio. Not all assets have a manager — stablecoins like USDC typically do not.
**Examples:** BlackRock Fund Advisors, Reental America, Fasanara Capital
**API endpoint:** [`GET /v4/managers`](/api/endpoints/managers)
```json theme={null}
{
"id": 74,
"name": "Reental America",
"slug": "reental-america",
"asset_count": 20,
"website": "https://www.reental.co/en",
"bridged_token_value_dollar": {
"val": 29034335.51,
"val_7d": 29050231.26,
"chg_7d_pct": -0.05
}
}
```
### Service Provider
Entities involved in RWA operations. These include custodians, auditors, fund administrators, transfer agents, and other roles in the asset servicing chain.
**Examples:** Anchorage Digital, BitGo, PwC
**API endpoint:** [`GET /v4/service-providers`](/api/endpoints/service-providers)
```json theme={null}
{
"id": 1,
"name": "Anchorage Digital",
"slug": "anchorage-digital",
"description": "Anchorage Digital is a federally chartered digital asset bank.",
"network_ids": [1, 5, 12]
}
```
### Transaction
An on-chain event involving an RWA token. Each transaction is classified as a **mint** (new tokens created), **burn** (tokens destroyed), or **transfer** (tokens moved between addresses).
**API endpoint:** [`GET /v4/transactions`](/api/endpoints/transactions)
```json theme={null}
{
"id": "1-0x9d60a645b0a92c98...-42",
"date": "2026-03-17T00:00:00.000Z",
"timestamp": "2026-03-17T11:02:59.000Z",
"transaction_hash": "0x9d60a645b0a92c98...",
"amount": 22331806.95,
"usd_amount": 24995829.91,
"from_address": "0xfd78ee919681417d...",
"to_address": "0x0000000000000000...",
"transaction_type": {
"id": 2,
"slug": "token-burn",
"name": "Token Burn"
},
"token": {
"id": "20",
"asset_id": "51",
"network_name": "Ethereum"
},
"asset": {
"id": "51",
"name": "Circle USYC",
"asset_class_name": "US Treasury Debt"
}
}
```
## Relationships
| From | To | Cardinality | Description |
| ------------------------------------------ | ---------------------------------------------------- | ------------ | -------------------------------------------------------------------------- |
| [Token](/schemas/tokens) | [Asset](/schemas/assets) | Many-to-one | One asset can have multiple tokens across different networks and platforms |
| [Token](/schemas/tokens) | [Platform](/api/endpoints/platforms) | Many-to-one | Each token is deployed by one platform |
| [Token](/schemas/tokens) | [Network](/api/endpoints/networks) | Many-to-one | Each token lives on one network |
| [Asset](/schemas/assets) | [Issuer](/api/endpoints/issuers) | Many-to-one | Each asset has one issuer; an issuer can have multiple assets |
| [Asset](/schemas/assets) | [Manager](/api/endpoints/managers) | Many-to-one | Each asset may have one manager (optional) |
| [Asset](/schemas/assets) | [Service Provider](/api/endpoints/service-providers) | Many-to-many | Assets can have multiple service providers in different roles |
| [Transaction](/api/endpoints/transactions) | [Token](/schemas/tokens) | Many-to-one | Each transaction involves one specific token |
## Data Catalog
Browse all entities, fields, and measures interactively in the [Data Catalog](https://app.rwa.xyz/catalog).
# Tokens
Source: https://docs.rwa.xyz/schemas/tokens
Complete field reference for token data returned by the RWA.xyz API.
Browse this schema interactively in the [Data Catalog](https://app.rwa.xyz/catalog).
## Reference Data
### Basic Information
| Field Name | Description | Type |
| ---------- | --------------------------- | ------- |
| `id` | Unique identifier for token | Integer |
| `token_id` | Token identifier | Integer |
| `asset_id` | Associated asset identifier | Integer |
| `name` | Name of the token | String |
| `address` | Token contract address | String |
| `decimals` | Number of decimal places | Integer |
| `hidden` | Whether token is hidden | Boolean |
### Token Standards & Transferability
| Field Name | Description | Type |
| ----------------------------- | ----------------------------------- | --------- |
| `standards` | Token standards (e.g., ERC-20) | String\[] |
| `transferability_type` | Type of transferability | String |
| `transferability_description` | Description of transfer constraints | String |
### Platform Information
In the API, platforms are referenced as `protocol` in field names for historical reasons. The `protocol_*` and `platform_*` fields below refer to the same entity type.
| Field Name | Description | Type |
| -------------------- | --------------------------------------------------------------------------- | ------- |
| `protocol_id` | Platform identifier | Integer |
| `protocol_name` | Platform name | String |
| `protocol` | Platform details | Object |
| `base_protocol_id` | Base platform identifier | Integer |
| `base_protocol_name` | Base platform name | String |
| `base_protocol` | Base platform details | Object |
| `platform_id` | Platform identifier | Integer |
| `platform_name` | Platform name | String |
| `platform` | Platform details | Object |
| `issuance_type` | Whether the token is natively issued or bridged. Values: `NATIVE`, `BRIDGE` | String |
### Network Information
| Field Name | Description | Type |
| -------------- | ------------------ | ------- |
| `network_id` | Network identifier | Integer |
| `network_name` | Network name | String |
| `network` | Network details | Object |
## Metrics
### Yield & Pricing Metrics
| Field Name | Description | Type |
| --------------------------- | -------------------------- | ------ |
| `yield_to_maturity` | Yield to maturity | Object |
| `net_asset_value_dollar` | Net asset value in dollars | Object |
| `net_asset_value_token` | Net asset value in tokens | Object |
| `weighted_average_maturity` | Weighted average maturity | Object |
| `price_dollar` | Price in dollars | Object |
| `m2_money_stock` | M2 money stock | Object |
| `apy_7_day` | 7-day APY | Object |
| `apy_30_day` | 30-day APY | Object |
### Supply & Circulation Metrics
| Field Name | Description | Type |
| ---------------------------- | ------------------------------------- | ------ |
| `total_supply_token` | Total supply in tokens | Object |
| `circulating_supply_token` | Circulating supply in tokens | Object |
| `raw_supply` | Raw supply data | Object |
| `rebase_multiplier` | Rebase multiplier for rebasing tokens | Object |
| `bridged_token_supply_token` | Bridged token supply | Object |
### Asset Value Metrics
| Field Name | Description | Type |
| --------------------------------- | ----------------------------------- | ------ |
| `total_asset_value_dollar` | Total asset value in dollars | Object |
| `circulating_asset_value_dollar` | Circulating asset value in dollars | Object |
| `bridged_token_value_token` | Bridged asset value in tokens | Object |
| `market_value_dollar` | Market value in dollars | Object |
| `circulating_market_value_dollar` | Circulating market value in dollars | Object |
| `bridged_token_market_cap_dollar` | Bridged token market cap in dollars | Object |
### Minting & Burning
| Field Name | Description | Type |
| --------------------------------- | ----------------------------------- | ------ |
| `daily_mints_token` | Daily mints in tokens | Object |
| `daily_mints_dollar` | Daily mints in dollars | Object |
| `daily_burns_token` | Daily burns in tokens | Object |
| `daily_burns_dollar` | Daily burns in dollars | Object |
| `cumulative_issued_amount_token` | Cumulative issued amount in tokens | Object |
| `cumulative_issued_amount_dollar` | Cumulative issued amount in dollars | Object |
### Holder & Address Metrics
| Field Name | Description | Type |
| ----------------------------------------- | --------------------------------------- | ------ |
| `holding_addresses_count` | Number of holding addresses | Object |
| `adjusted_holding_addresses_count` | Adjusted number of holding addresses | Object |
| `top_holder_concentration` | Top holder concentration | Object |
| `top_5_holder_concentration` | Top 5 holder concentration | Object |
| `top_10_holder_concentration` | Top 10 holder concentration | Object |
| `daily_active_addresses_count` | Daily active addresses count | Object |
| `weekly_active_addresses_count` | Weekly active addresses count | Object |
| `monthly_active_addresses_count` | Monthly active addresses count | Object |
| `quarterly_active_addresses_count` | Quarterly active addresses count | Object |
| `annually_active_addresses_count` | Annually active addresses count | Object |
| `trailing_7_day_active_addresses_count` | Trailing 7-day active addresses count | Object |
| `trailing_30_day_active_addresses_count` | Trailing 30-day active addresses count | Object |
| `trailing_90_day_active_addresses_count` | Trailing 90-day active addresses count | Object |
| `trailing_365_day_active_addresses_count` | Trailing 365-day active addresses count | Object |
### Transaction Metrics
| Field Name | Description | Type |
| ------------------------------------ | ---------------------------- | ------ |
| `number_of_daily_transactions_count` | Number of daily transactions | Object |
### Transfer Metrics
| Field Name | Description | Type |
| --------------------------------- | -------------------------------- | ------ |
| `daily_transfer_volume_token` | Daily transfer volume in tokens | Object |
| `daily_transfer_volume_dollar` | Daily transfer volume in dollars | Object |
| `weekly_transfer_count` | Weekly transfer count | Object |
| `weekly_transfer_volume` | Weekly transfer volume | Object |
| `monthly_transfer_count` | Monthly transfer count | Object |
| `monthly_transfer_volume` | Monthly transfer volume | Object |
| `trailing_7_day_transfer_count` | Trailing 7-day transfer count | Object |
| `trailing_7_day_transfer_volume` | Trailing 7-day transfer volume | Object |
| `trailing_30_day_transfer_count` | Trailing 30-day transfer count | Object |
| `trailing_30_day_transfer_volume` | Trailing 30-day transfer volume | Object |