Helius Identity API
Lookup wallet identities and known addresses
Lookup wallet identities and known addresses
openapi: 3.1.0
info:
title: Helius API Catalog Addresses Identity API
version: 1.0.0
summary: Machine-readable discovery document for every Helius API surface on Solana.
description: 'This document is a discovery catalog — not an operational spec. It exists so
AI agents, codegen tools, and SDK generators can locate the canonical
OpenAPI document for every Helius API in one request instead of crawling
the docs site.
Start with the `x-apis` array: each entry links a Helius API surface to its
canonical OpenAPI spec (`specUrl`) and human-readable docs (`docsUrl`).
Follow `externalDocs` for the full developer documentation site.
## A note on JSON-RPC APIs
Several Helius APIs (Solana RPC, DAS, Sender, Mint, Priority Fee,
ZK Compression) follow the JSON-RPC 2.0 convention where every method POSTs
to `/` with a `method` field in the request body. For each such API the
repository ships both per-method fragment YAMLs (used to render the
Mintlify reference pages) and an auto-generated `_combined.yaml` that
merges every method into a single OpenAPI document. In the combined
documents, colliding paths are disambiguated with a URL-fragment suffix
(e.g. `/#getAccountInfo`) and each operation carries an `x-actual-path`
extension that records the real request path (`/`). The fragment syntax is
schema-only — real calls still go to the `url` in `servers`.
All `specUrl` values below point to raw GitHub files on the `main` branch
of `helius-labs/docs`. They are stable URLs suitable for downstream tools
to pin or fetch.
'
contact:
name: Helius Support
url: https://www.helius.dev/contact
email: support@helius.dev
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://mainnet.helius-rpc.com
description: Solana mainnet RPC endpoint (Solana RPC, DAS, Priority Fee, ZK Compression)
- url: https://devnet.helius-rpc.com
description: Solana devnet RPC endpoint
- url: https://sender.helius-rpc.com
description: Helius Sender — global transaction submission
- url: https://api.helius.xyz
description: Helius REST APIs (Wallet API, Enhanced API, Webhooks)
- url: https://admin-api.helius.xyz
description: Helius Admin API — project usage and billing
- url: https://api-mainnet.helius-rpc.com
description: Mainnet RPC endpoint
- url: https://api-devnet.helius-rpc.com
description: Devnet RPC endpoint
- url: http://slc-sender.helius-rpc.com
description: Salt Lake City
- url: http://ewr-sender.helius-rpc.com
description: Newark
- url: http://lon-sender.helius-rpc.com
description: London
- url: http://fra-sender.helius-rpc.com
description: Frankfurt
- url: http://ams-sender.helius-rpc.com
description: Amsterdam
- url: http://sg-sender.helius-rpc.com
description: Singapore
- url: http://tyo-sender.helius-rpc.com
description: Tokyo
tags:
- name: Identity
description: Lookup wallet identities and known addresses
paths:
/v1/wallet/{wallet}/identity:
get:
tags:
- Identity
summary: Get wallet identity
description: 'Retrieve identity information for a known wallet (exchanges, protocols, etc.). Accepts
either a Solana wallet address or an SNS (`.sol`) / ANS custom TLD domain name
(e.g. `toly.sol`, `miester.bonk`). Domain resolution is mainnet-only.
The response is the standard identity object for the **resolved address**. No domain
marker (`inputDomain`) is attached on this endpoint — use `POST /v1/wallet/batch-identity`
if you need to correlate inputs with outputs.
Returns `404` if the wallet has no identity entry, or if a domain input cannot be resolved.
Returns `400` if the input is neither a valid address nor a valid domain name, or if a
domain input is sent on a non-mainnet deployment.
'
operationId: walletApi_getWalletIdentity
parameters:
- $ref: '#/components/parameters/WalletApi_WalletOrDomain'
responses:
'200':
description: Identity information found
content:
application/json:
schema:
$ref: '#/components/schemas/WalletApi_Identity'
'400':
$ref: '#/components/responses/WalletApi_BadRequest'
'401':
$ref: '#/components/responses/WalletApi_Unauthorized'
'404':
description: No identity information available, or domain could not be resolved
content:
application/json:
schema:
$ref: '#/components/schemas/WalletApi_Error'
'429':
$ref: '#/components/responses/WalletApi_RateLimited'
'500':
$ref: '#/components/responses/WalletApi_InternalError'
servers:
- url: https://api.helius.xyz
description: Production server
/v1/wallet/batch-identity:
post:
tags:
- Identity
summary: Batch identity lookup
description: 'Retrieve identity information for multiple entries in a single request. Each entry may be
either a Solana wallet address or an SNS (`.sol`) / ANS custom TLD domain name. Domain
resolution is mainnet-only.
Unresolvable domain entries do not fail the batch — they come back as
`{ "address": null, "type": "unknown", "inputDomain": "...", "unresolved": true }`
in request order. Resolved domain entries carry an `inputDomain` field so callers can
correlate responses with the original input.
'
operationId: walletApi_batchIdentityLookup
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- addresses
properties:
addresses:
type: array
items:
type: string
minItems: 1
maxItems: 100
description: Array of Solana wallet addresses and/or SNS/ANS domain names to look up (up to 100 per request).
example:
- HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664
- toly.sol
- miester.bonk
responses:
'200':
description: Identity information for requested entries, in request order
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WalletApi_BatchIdentityEntry'
'400':
$ref: '#/components/responses/WalletApi_BadRequest'
'401':
$ref: '#/components/responses/WalletApi_Unauthorized'
'429':
$ref: '#/components/responses/WalletApi_RateLimited'
'500':
$ref: '#/components/responses/WalletApi_InternalError'
servers:
- url: https://api.helius.xyz
description: Production server
components:
schemas:
WalletApi_BatchResolvedIdentity:
description: 'A resolved entry in a batch identity response. Extends `Identity` with an optional
`inputDomain` field that is present when the original batch input for this entry was a
domain name. Returned only from `POST /v1/wallet/batch-identity`.
'
allOf:
- $ref: '#/components/schemas/WalletApi_Identity'
- type: object
properties:
inputDomain:
type: string
description: The domain name the caller queried. Present only when a domain (not an address) was provided as input for this batch entry.
example: toly.sol
WalletApi_BatchIdentityEntry:
description: 'One element of the array returned by `POST /v1/wallet/batch-identity`. Resolved entries
match `BatchResolvedIdentity` (possibly with `inputDomain`); unresolvable domain entries
match `UnresolvedDomainEntry`. Distinguish at runtime by checking `unresolved === true`
or `address === null`.
'
oneOf:
- $ref: '#/components/schemas/WalletApi_BatchResolvedIdentity'
- $ref: '#/components/schemas/WalletApi_UnresolvedDomainEntry'
WalletApi_Error:
type: object
properties:
error:
type: string
description: Error message
example: Invalid wallet address
code:
type: integer
description: HTTP status code
example: 400
details:
type: string
description: Additional error details
example: '''invalid-address'' is not a valid Solana address'
required:
- error
- code
WalletApi_UnresolvedDomainEntry:
description: 'A batch entry returned when a domain name could not be resolved. Only appears as an
element of the array returned by `POST /v1/wallet/batch-identity` — the single-endpoint
returns `404` instead of this shape.
'
type: object
properties:
address:
type: string
nullable: true
enum:
- null
description: Always `null` for unresolved entries.
type:
type: string
enum:
- unknown
description: Always the literal string `"unknown"` for unresolved entries.
inputDomain:
type: string
description: The domain name the caller queried that could not be resolved.
example: nonexistent-xyz.sol
unresolved:
type: boolean
enum:
- true
description: Always `true` for unresolved entries.
required:
- address
- type
- inputDomain
- unresolved
WalletApi_Identity:
type: object
properties:
address:
type: string
description: Solana wallet address
example: HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664
type:
type: string
description: Type of entity
example: exchange
name:
type: string
description: Display name
example: Binance 1
category:
type: string
description: Category classification
example: Centralized Exchange
tags:
type: array
items:
type: string
description: Additional classification tags
example:
- Centralized Exchange
domainNames:
type: array
items:
type: string
description: All on-chain domain names owned by this address, including SNS (.sol) and ANS custom TLDs (.bonk, .wen, etc.). The favorite .sol domain is first if set; remaining domains are sorted alphabetically. Omitted if the wallet owns no domains.
example:
- toly.sol
- kash.superteam
required:
- address
- type
- name
- category
- tags
responses:
WalletApi_BadRequest:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/WalletApi_Error'
example:
error: Invalid wallet address
code: 400
details: '''invalid-address'' is not a valid Solana address'
WalletApi_RateLimited:
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/WalletApi_Error'
example:
error: RATE_LIMIT_EXCEEDED
code: 429
details: Too many requests. Retry after 2 seconds.
WalletApi_InternalError:
description: Transient server error. Retryable with exponential backoff.
content:
application/json:
schema:
$ref: '#/components/schemas/WalletApi_Error'
example:
error: INTERNAL_ERROR
code: 500
details: An unexpected error occurred. Please retry.
WalletApi_Unauthorized:
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/WalletApi_Error'
example:
error: API key required. Pass via ?api-key=xxx or X-Api-Key header
code: 401
parameters:
WalletApi_WalletOrDomain:
name: wallet
in: path
required: true
description: 'Solana wallet address (base58 encoded) or SNS/ANS domain name (e.g. `toly.sol`,
`miester.bonk`). Domain resolution is mainnet-only. Any non-`.sol` domain is treated
as an ANS custom TLD — there is no fixed TLD whitelist.
'
schema:
type: string
examples:
address:
summary: Solana address
value: GQUtvPx89ZNCwmvQqFmH59bJcU8fW8siETpaxod7Aydz
snsDomain:
summary: SNS (.sol) domain
value: toly.sol
ansDomain:
summary: ANS custom TLD
value: miester.bonk
securitySchemes:
ApiKeyQuery:
type: apiKey
in: query
name: api-key
description: Your Helius API key. You can get one for free in the [dashboard](https://dashboard.helius.dev/api-keys).
ApiKeyHeader:
type: apiKey
in: header
name: X-Api-Key
description: API key passed in request header
externalDocs:
description: Helius Documentation (canonical)
url: https://www.helius.dev/docs
x-apis:
- id: rpc-http
name: Solana RPC (HTTP)
description: JSON-RPC 2.0 methods for Solana mainnet and devnet, plus Helius extensions such as `getTransactionsForAddress` with server-side filtering and token account helpers (`getTokenAccountsByOwnerV2`, `getProgramAccountsV2`).
specUrl: https://www.helius.dev/openapi/rpc-http.json
docsUrl: https://www.helius.dev/docs/rpc/overview
tags:
- rpc
- json-rpc
- solana
- accounts
- transactions
status: stable
x-specFragments: https://github.com/helius-labs/docs/tree/main/openapi/rpc-http
- id: das-api
name: Digital Asset Standard (DAS) API
description: Unified NFT and token queries for Solana — regular NFTs, compressed NFTs, and fungible tokens — indexed for fast lookups by owner, creator, authority, collection, or search.
specUrl: https://www.helius.dev/openapi/das-api.json
docsUrl: https://www.helius.dev/docs/das-api
tags:
- nft
- tokens
- compressed-nft
- digital-assets
- json-rpc
status: stable
x-specFragments: https://github.com/helius-labs/docs/tree/main/openapi/das-api
- id: sender-api
name: Helius Sender
description: Ultra-low-latency transaction submission with dual routing to validators and Jito infrastructure. Regional endpoints for Salt Lake City, Newark, London, Frankfurt, Amsterdam, Singapore, and Tokyo.
specUrl: https://www.helius.dev/openapi/sender-api.json
docsUrl: https://www.helius.dev/docs/sending-transactions/sender
tags:
- transactions
- sender
- low-latency
- jito
status: stable
x-specFragments: https://github.com/helius-labs/docs/tree/main/openapi/sender-api
- id: wallet-api
name: Wallet API
description: High-performance REST API for Solana wallet data — identity, balances, transaction history, transfers, and funding lineage. Returns pre-indexed results suitable for wallet and portfolio UIs.
specUrl: https://www.helius.dev/openapi/wallet-api.json
docsUrl: https://www.helius.dev/docs/wallet-api/overview
tags:
- wallet
- portfolio
- history
- rest
status: beta
- id: priority-fee-api
name: Priority Fee API
description: Real-time priority fee recommendations across multiple priority levels, derived from recent network activity. Accepts either account keys or a serialized transaction.
specUrl: https://www.helius.dev/openapi/priority-fee-api.json
docsUrl: https://www.helius.dev/docs/priority-fee-api
tags:
- priority-fee
- transactions
- fees
- json-rpc
status: stable
x-specFragments: https://github.com/helius-labs/docs/tree/main/openapi/priority-fee-api
- id: zk-compression
name: ZK Compression Indexer
description: Indexer API for Solana state compression — compressed accounts, compressed token balances, Merkle proofs, and validity proofs. Enables up to 1000x lower storage costs relative to regular accounts.
specUrl: https://www.helius.dev/openapi/zk-compression.json
docsUrl: https://www.helius.dev/docs/zk-compression/introduction
tags:
- zk-compression
- state-compression
- accounts
- proofs
- json-rpc
status: stable
x-specFragments: https://github.com/helius-labs/docs/tree/main/openapi/zk-compression
- id: admin-api
name: Admin API
description: Programmatic access to Helius project usage and billing data — credits consumed, credits remaining, prepaid balances, and subscription details for the current billing cycle.
specUrl: https://www.helius.dev/openapi/admin-api.json
docsUrl: https://www.helius.dev/docs/api-reference/admin
tags:
- admin
- billing
- usage
- rest
status: stable
x-specFragments: https://github.com/helius-labs/docs/tree/main/openapi/admin-api
- id: enhanced-api
name: Enhanced API
description: Decoded, human-readable transaction history, NFT events, and address activity on Solana. Returns typed, parsed data instead of raw instruction bytes.
specUrl: https://www.helius.dev/openapi/enhanced-api.json
docsUrl: https://www.helius.dev/docs/enhanced-transactions/overview
tags:
- enhanced
- parsed-transactions
- nft-events
- history
- rest
status: stable
- id: webhooks
name: Helius Webhooks
description: Real-time HTTP notifications for Solana on-chain events — configure account, transaction, or NFT event subscriptions and receive parsed payloads via HTTPS POST.
specUrl: https://www.helius.dev/openapi/webhooks.json
docsUrl: https://www.helius.dev/docs/webhooks
tags:
- webhooks
- events
- notifications
- rest
status: stable