# Aradia Data API Read-only NFT data for Astar Network. Authenticate with a bearer API key created in the Developer Portal at https://portal.aradia.app/. Base URL: https://api.aradia.app OpenAPI contract: https://docs.aradia.app/openapi.yaml Complete agent context: https://docs.aradia.app/llms-full.txt ## Guides and use cases - [Authentication](https://docs.aradia.app/guides/authentication.md): How to authenticate with the Aradia Data API - [Errors](https://docs.aradia.app/guides/errors.md): Error codes and retry guidance - [Introduction](https://docs.aradia.app/guides/introduction.md): Getting started with the Aradia Data API - [Pagination](https://docs.aradia.app/guides/pagination.md): How cursor pagination works in the Aradia Data API - [Rate Limits](https://docs.aradia.app/guides/rate-limits.md): Request limits for the Aradia Data API - [Vibe code an NFT app with an AI coding agent](https://docs.aradia.app/use-cases/ai-agent-integration.md): Give an AI coding agent Aradia's llms.txt, OpenAPI contract, demo token, and reliable NFT media rules for Astar development. - [Build an Astar NFT collection gallery](https://docs.aradia.app/use-cases/collection-gallery.md): Page through an Astar NFT collection, preserve token ID precision, and prefer locally stored NFT media. - [Build an enriched NFT profile feed](https://docs.aradia.app/use-cases/enriched-profile-feed.md): Combine wallet holdings, collection context, transfer history, and reliable media into an Astar NFT profile. - [Check Astar NFT data freshness and coverage](https://docs.aradia.app/use-cases/indexer-health.md): Use Aradia indexer status and response coverage before presenting NFT ownership or activity as complete. - [Build a live Astar NFT activity feed](https://docs.aradia.app/use-cases/live-activity-feed.md): Poll canonical NFT mint, transfer, and burn activity on Astar without duplicating events in your interface. - [Build an NFT provenance timeline on Astar](https://docs.aradia.app/use-cases/nft-provenance.md): Combine current NFT metadata with canonical transfer history to explain where an Astar NFT came from. - [Add NFT token gating on Astar](https://docs.aradia.app/use-cases/token-gating.md): Check whether an Astar wallet owns an NFT from a required collection with the Aradia Data API. - [Build a wallet NFT gallery on Astar](https://docs.aradia.app/use-cases/wallet-nft-gallery.md): Fetch every NFT owned by an Astar wallet and render reliable artwork with Aradia's local media fallback. ## Endpoints ### Demo token #### POST /v1/demo-token Issue a short-lived read-only demo token Authorization scopes: bearer API key Reference: https://docs.aradia.app/reference/demo-token/#post-v1-demo-token ##### Example request ```bash curl -sS -X POST \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/demo-token" ``` ##### Successful response (200) ```json { "data": { "token": "ara_demo_AAAAAAAAAAAAAAAA_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "expires_at": "2026-08-18T12:15:00Z", "scopes": [ "read:collections", "read:nfts", "read:owners", "read:transfers", "read:activity", "read:status" ], "limits": { "requests_per_second": 1, "requests_per_minute": 30, "concurrent": 2 } } } ``` ### Collections #### GET /v1/collections List Astar NFT collections Authorization scopes: read:collections Reference: https://docs.aradia.app/reference/collections/#get-v1-collections ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/collections" ``` ##### Successful response (200) ```json { "data": [ { "contract_address": "0x0000000000000000000000000000000000000001", "network": "astar", "name": "Example Collection", "symbol": "EXCOL", "image_url": "https://wsrv.nl/?url=https%3A%2F%2Fipfs.io%2Fipfs%2FQmExample%2F1.png", "contract_type": "ERC721", "total_supply": "10000", "unique_holders": "2799", "total_transfers": "11163", "creator_address": "0x00000000000000000000000000000000000000c7", "deploy_tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000abc", "created_at": "2026-08-01T00:00:00Z" } ], "pagination": { "limit": 20, "has_more": true, "next_page_params": { "before_timestamp": 1780245600123456, "before_id": 26228 } }, "coverage": { "status": "unknown" } } ``` #### HEAD /v1/collections Inspect collection-list availability without a response body Authorization scopes: read:collections Reference: https://docs.aradia.app/reference/collections/#head-v1-collections ##### Example request ```bash curl -sS -X HEAD \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/collections" ``` ##### Successful response (200) No response body. #### GET /v1/collections/{address} Get one collection Authorization scopes: read:collections Reference: https://docs.aradia.app/reference/collections/#get-v1-collections-address ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/collections/0x0000000000000000000000000000000000000001" ``` ##### Successful response (200) ```json { "data": { "contract_address": "0x0000000000000000000000000000000000000001", "network": "astar", "name": "Example Collection", "image_url": "https://wsrv.nl/?url=https%3A%2F%2Fipfs.io%2Fipfs%2FQmExample%2F1.png", "contract_type": "ERC721", "total_supply": "10000", "unique_holders": "2799", "total_transfers": "11163", "creator_address": "0x00000000000000000000000000000000000000c7", "deploy_tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000abc", "created_at": "2026-08-01T00:00:00Z" } } ``` ### NFTs #### GET /v1/collections/{address}/nfts List NFTs in a collection Authorization scopes: read:nfts Reference: https://docs.aradia.app/reference/nfts/#get-v1-collections-address-nfts ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/collections/0x0000000000000000000000000000000000000001/nfts" ``` ##### Successful response (200) ```json { "data": [ { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "1", "network": "astar", "current_owner": "0x0000000000000000000000000000000000000002", "is_burned": false, "transfer_count": 3, "metadata_uri": "ipfs://bafkreiexampleexampleexampleexample/1.json", "image_url": "ipfs://bafkreiexampleexampleexampleexample/1.png", "media_url": "https://api.aradia.app/v1/media?url=ipfs%3A%2F%2Fbafkreiexampleexampleexampleexample%2F1.png", "collection_name": "Example Collection", "collection_symbol": "EXCOL" } ], "pagination": { "limit": 20, "has_more": true, "next_page_params": { "after_token_id": "1", "after_id": 91422 } }, "coverage": { "status": "unknown" } } ``` #### GET /v1/nfts/{address}/{tokenId} Get one NFT Authorization scopes: read:nfts Reference: https://docs.aradia.app/reference/nfts/#get-v1-nfts-address-tokenid ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/nfts/0x0000000000000000000000000000000000000001/1" ``` ##### Successful response (200) ```json { "data": { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "1", "network": "astar", "current_owner": "0x0000000000000000000000000000000000000002", "is_burned": false, "transfer_count": 1, "collection_name": "Example Collection", "collection_symbol": "EXCOL" } } ``` #### GET /v1/owners/{address}/nfts List NFTs currently owned by an address Authorization scopes: read:owners Reference: https://docs.aradia.app/reference/nfts/#get-v1-owners-address-nfts ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/owners/0x0000000000000000000000000000000000000001/nfts" ``` ##### Successful response (200) ```json { "data": [ { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "1", "network": "astar", "current_owner": "0x0000000000000000000000000000000000000002", "is_burned": false, "transfer_count": 3, "metadata_uri": "ipfs://bafkreiexampleexampleexampleexample/1.json", "image_url": "ipfs://bafkreiexampleexampleexampleexample/1.png", "media_url": "https://api.aradia.app/v1/media?url=ipfs%3A%2F%2Fbafkreiexampleexampleexampleexample%2F1.png", "collection_name": "Example Collection", "collection_symbol": "EXCOL" } ], "pagination": { "limit": 20, "has_more": true, "next_page_params": { "after_token_id": "1", "after_id": 91422 } }, "coverage": { "status": "unknown" } } ``` ### Transfers #### GET /v1/collections/{address}/transfers List canonical-aware collection transfers Authorization scopes: read:transfers Reference: https://docs.aradia.app/reference/transfers/#get-v1-collections-address-transfers ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/collections/0x0000000000000000000000000000000000000001/transfers" ``` ##### Successful response (200) ```json { "data": [ { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "1", "network": "astar", "from_address": "0x0000000000000000000000000000000000000000", "to_address": "0x0000000000000000000000000000000000000002", "event_type": "mint", "block_number": "7654321", "log_index": 4, "transaction_hash": "0x1111111111111111111111111111111111111111111111111111111111111111", "block_timestamp": "2026-08-01T12:00:00Z", "confirmations": 1284 }, { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "2", "network": "astar", "from_address": "0x0000000000000000000000000000000000000002", "to_address": "0x0000000000000000000000000000000000000003", "event_type": "transfer", "block_number": "0", "log_index": 0, "transaction_hash": "0x2222222222222222222222222222222222222222222222222222222222222222", "block_timestamp": "2026-03-30T09:15:00Z", "confirmations": null } ], "pagination": { "limit": 20, "has_more": true, "next_page_params": { "before_timestamp": 1780245600123456, "before_id": 2017853 } }, "coverage": { "status": "partial", "start_block": "7000000" } } ``` #### GET /v1/nfts/{address}/{tokenId}/transfers List canonical-aware transfers for one NFT Authorization scopes: read:transfers Reference: https://docs.aradia.app/reference/transfers/#get-v1-nfts-address-tokenid-transfers ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/nfts/0x0000000000000000000000000000000000000001/1/transfers" ``` ##### Successful response (200) ```json { "data": [ { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "1", "network": "astar", "from_address": "0x0000000000000000000000000000000000000000", "to_address": "0x0000000000000000000000000000000000000002", "event_type": "mint", "block_number": "7654321", "log_index": 4, "transaction_hash": "0x1111111111111111111111111111111111111111111111111111111111111111", "block_timestamp": "2026-08-01T12:00:00Z", "confirmations": 1284 }, { "collection_address": "0x0000000000000000000000000000000000000001", "token_id": "2", "network": "astar", "from_address": "0x0000000000000000000000000000000000000002", "to_address": "0x0000000000000000000000000000000000000003", "event_type": "transfer", "block_number": "0", "log_index": 0, "transaction_hash": "0x2222222222222222222222222222222222222222222222222222222222222222", "block_timestamp": "2026-03-30T09:15:00Z", "confirmations": null } ], "pagination": { "limit": 20, "has_more": true, "next_page_params": { "before_timestamp": 1780245600123456, "before_id": 2017853 } }, "coverage": { "status": "partial", "start_block": "7000000" } } ``` ### Activity #### GET /v1/activity List global transfer activity Authorization scopes: read:activity Reference: https://docs.aradia.app/reference/activity/#get-v1-activity ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/activity" ``` ##### Successful response (200) ```json { "data": [ { "collection_address": "0x0000000000000000000000000000000000000001", "collection_name": "Example Collection", "token_id": "1", "network": "astar", "from_address": "0x0000000000000000000000000000000000000000", "to_address": "0x0000000000000000000000000000000000000002", "event_type": "mint", "block_number": "7654321", "log_index": 4, "transaction_hash": "0x1111111111111111111111111111111111111111111111111111111111111111", "block_timestamp": "2026-08-01T12:00:00Z", "confirmations": 1284 } ], "pagination": { "limit": 20, "has_more": true, "next_page_params": { "before_timestamp": 1780245600123456, "before_id": 2017853 } }, "coverage": { "status": "unknown" } } ``` ### Status #### GET /v1/indexer/status Get sanitized indexer coverage status Authorization scopes: read:status Reference: https://docs.aradia.app/reference/status/#get-v1-indexer-status ##### Example request ```bash curl -sS -X GET \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/indexer/status" ``` ##### Successful response (200) ```json { "data": { "network": "astar", "coverage_status": "unknown", "last_confirmed_block": "123", "last_seen_block": "135", "updated_at": "2026-08-01T00:00:00Z" } } ```