Helius Identity API

Lookup wallet identities and known addresses

OpenAPI Specification

helius-identity-api-openapi.yml Raw ↑
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