> ## Documentation Index
> Fetch the complete documentation index at: https://data.birdeye.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet Identity - Multiple

> Resolve up to 100 addresses to their identities in one request. Returns a map keyed by address; each value has the same shape as the single endpoint. Addresses with no identity are omitted.


<Tabs>
  <Tab title="Usage Note">
    <p><strong>Resolve up to 100 addresses to their identities in one request.</strong></p>
    <p>POST a list of addresses and get a map keyed by address: <code>\{ "\<address>": \<identity>, … }</code>. Each identity is the same compact object returned by the single endpoint — <code>type</code> (wallet / exchange / protocol / token / …), an optional named <code>entity</code>, a display <code>label</code>, a <code>category</code>, <code>tags</code>, and, for wallets, up to 20 <code>.sol</code> <code>domains</code> plus <code>domains\_total</code>. Addresses with no identity (<code>type: unknown</code>) are simply <strong>omitted</strong> from the map.</p>
    <p>For a wallet identified only by a <code>.sol</code> domain, <code>label</code> is set to its first domain (<code>domains\[0]</code>). The per-address <code>domains</code> array is a <strong>preview capped at 20</strong>, ordered <strong>shortest-first then alphabetical</strong> — use <code>domains\_total</code> for the true count and the <strong><code>domains</code></strong> endpoint for the full list. Non-wallet identities never return domains (a CEX "owning" a <code>.sol</code> domain is SNS spam).</p>
  </Tab>

  <Tab title="Accessibility">
    <ul>
      <li>Premium</li>
      <li>Business</li>
      <li>Enterprise</li>
    </ul>
  </Tab>

  <Tab title="Chain Supported">
    <p><strong>Solana</strong></p>
  </Tab>
</Tabs>

<Accordion title="Identity Field Definitions 🏷️" icon="fa-tags">
  <ul>
    <li><strong>type</strong> — the identity class: <code>wallet</code>, <code>exchange</code>, <code>protocol</code>, <code>token</code>, <code>program</code>, or <code>unknown</code>. Drives how a client should render the address.</li>
    <li><strong>entity</strong> — the named owner when known (e.g. <code>Binance</code>, <code>Jupiter</code>, <code>Astralane</code>). Absent for anonymous wallets.</li>
    <li><strong>label</strong> — the human-readable display name. For a domain-only wallet this is the first (shortest) <code>.sol</code> domain, until the owner's favourite domain is available.</li>
    <li><strong>category</strong> — the broad grouping behind the type (e.g. <code>Wallet</code>, <code>Exchange</code>, <code>Protocol</code>, <code>Token</code>).</li>
    <li><strong>tags</strong> — extra descriptors attached to the identity (e.g. a KOL's name, <code>deposit</code>). Empty array when none apply.</li>
    <li><strong>domains / domains\_total</strong> — the <code>.sol</code> domains a wallet owns. <code>domains</code> is capped at 20 and sorted shortest-first then alphabetical; <code>domains\_total</code> is the true count.</li>
  </ul>
</Accordion>

<Accordion title="Use Cases 💡" icon="fa-lightbulb">
  <ul>
    <li>Label every address in an activity feed, leaderboard, or CSV export in a single round-trip.</li>
    <li>Annotate a batch of counterparties from a set of transactions with names, types, and tags.</li>
    <li>Back a UI that renders many addresses at once (holder lists, transfer tables) with identities.</li>
  </ul>
</Accordion>

<Accordion title="How to Use 🛠️" icon="fa-book-open">
  <ul>
    <li>Body: <strong><code>\{ "addresses": \["\<addr1>", "\<addr2>", … ] }</code></strong> — 1 to 100 addresses. Duplicates are de-duplicated.</li>
    <li>Returns <code>\{ "\<address>": \<identity>, … }</code>; addresses with no label are omitted (not returned as <code>null</code>).</li>
  </ul>
</Accordion>

<Accordion title="Best Practices ✅" icon="fa-check-circle">
  <ul>
    <li>De-duplicate and cap input at 100 per call; page your own list across multiple requests.</li>
    <li>Prefer this over many single calls when labelling more than a couple of addresses.</li>
    <li>Trust each identity's <code>domains\_total</code>, not <code>domains.length</code> — the array is a 20-item preview; use the <code>domains</code> endpoint for a wallet's full list.</li>
  </ul>
</Accordion>

<Accordion title="Limitations ⚠️" icon="fa-exclamation-triangle">
  <ul>
    <li>At most <strong>100 addresses</strong> per request.</li>
    <li>Unlabelled addresses (<code>type: unknown</code>) are omitted from the response map.</li>
    <li>Each identity returns at most <strong>20 domains</strong> (a preview) — use the <code>domains</code> endpoint for the full set.</li>
    <li>Domains are returned only for <code>type: wallet</code>; non-wallet identities suppress them (SNS-spam guard).</li>
    <li>Solana only.</li>
  </ul>
</Accordion>

<br />


## OpenAPI

````yaml openapi/data/openapi_docs.json POST /identity/v1/multiple
openapi: 3.1.0
info:
  version: 1.1.0
  title: Birdeye Data API
  description: >-
    Birdeye Data API is a full-spectrum blockchain and DEX data platform for
    teams that need production-grade crypto market intelligence across tokens,
    pairs, wallets, traders, protocols, and chains.


    From real-time prices, OHLCV, liquidity, and transaction flow to holder
    analytics, token and pair overviews, wallet portfolio and PnL, smart money,
    discovery, security, and blockchain-level utilities, Birdeye gives you a
    unified data layer for building serious crypto products at scale.


    Use it to power exchange interfaces, trading terminals, bots, market-making
    systems, quant research, alpha screeners, portfolio apps, wallet
    intelligence tools, alerting systems, analytics dashboards, and back-office
    data pipelines. Whether your users are retail traders, pro desks, analysts,
    or infrastructure teams, Birdeye helps you ship faster with broad market
    coverage and API surfaces that support both lightweight integrations and
    data-heavy workflows.


    To start, create an account at [bds.birdeye.so](https://bds.birdeye.so),
    generate an API key from the `Security` tab, and send it in the `X-API-KEY`
    header on every request.
servers:
  - url: https://public-api.birdeye.so
security:
  - apiKeyAuth: []
tags:
  - name: Price & OHLCV
  - name: Stats
  - name: Token/Market List
  - name: Transactions
  - name: Wallet, Networth & PnL
  - name: Balance & Transfer
  - name: Holder
  - name: Alltime & History
  - name: Blockchain
  - name: Account
  - name: Token
  - name: Transaction
  - name: Creation & Trending
  - name: Meme
  - name: Security
  - name: Search & Utils
  - name: Smart Money
  - name: Global Fees Paid
  - name: DEX & Protocol
  - name: Wallet Identity
paths:
  /identity/v1/multiple:
    post:
      tags:
        - Wallet Identity
      summary: Wallet Identity - Multiple
      description: >
        Resolve up to 100 addresses to their identities in one request. Returns
        a map keyed by address; each value has the same shape as the single
        endpoint. Addresses with no identity are omitted.
      operationId: post-identity-v1-multiple
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - addresses
              properties:
                addresses:
                  type: array
                  minItems: 1
                  maxItems: 100
                  description: >-
                    Wallet addresses (or .sol domains) to resolve. Maximum 100;
                    duplicates are de-duplicated.
                  items:
                    type: string
            example:
              addresses:
                - DaP44wF8mKmYki1M5zguvXYAW5XF6sLQEzvdmvcizRqD
                - 5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9
      responses:
        '200':
          $ref: '#/components/responses/identityMultipleResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
components:
  responses:
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: Bad request
    '401':
      description: Unauthorized. API key is missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: Unauthorized
    '403':
      description: Forbidden. Request is blacklisted or not whitelisted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: Access Denied
    '429':
      description: Too Many Requests. Rate limit reached
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: Too many requests
    '500':
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: Internal Server Error
    identityMultipleResponse:
      description: Successful response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/IdentityMultipleResponse'
          examples:
            Example:
              value:
                success: true
                data:
                  DaP44wF8mKmYki1M5zguvXYAW5XF6sLQEzvdmvcizRqD:
                    address: DaP44wF8mKmYki1M5zguvXYAW5XF6sLQEzvdmvcizRqD
                    type: wallet
                    label: dap4.sol
                    category: Wallet
                    tags: []
                    domains:
                      - dap4.sol
                      - uapx.sol
                      - ufox.sol
                      - blxme.sol
                      - bruca.sol
                    domains_total: 2192
                  5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9:
                    address: 5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9
                    type: exchange
                    entity: Binance
                    label: Binance
                    category: Exchange
                    tags:
                      - Binance
  schemas:
    IdentityMultipleResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
        data:
          type: object
          additionalProperties:
            type: object
            properties:
              address:
                type: string
                description: The resolved wallet address.
              input_domain:
                type: string
                description: >-
                  Present only when a .sol domain was passed as the input; the
                  domain that resolved to this address.
              type:
                type: string
                enum:
                  - wallet
                  - exchange
                  - protocol
                  - token
                  - program
                  - unknown
                description: >-
                  Identity class of the address. Drives how a client should
                  render it. `unknown` means no identity is known.
              entity:
                type: string
                description: >-
                  The named owner when known (e.g. Binance, Jupiter, Astralane).
                  Absent for anonymous wallets.
              label:
                type: string
                description: >-
                  Human-readable display name. For a wallet identified only by a
                  .sol domain, this is its first (shortest) domain.
              category:
                type: string
                description: >-
                  Broad grouping behind the type (e.g. Wallet, Exchange,
                  Protocol, Token).
              tags:
                type: array
                items:
                  type: string
                description: >-
                  Extra descriptors attached to the identity (e.g. a KOL's name,
                  deposit). Empty array when none apply.
              domains:
                type: array
                items:
                  type: string
                description: >-
                  The .sol domains a wallet owns — a preview capped at 20,
                  ordered shortest-first then alphabetical. Returned only for
                  type=wallet; use the domains endpoint for the full list.
              domains_total:
                type: integer
                description: >-
                  True number of .sol domains the wallet owns (the domains array
                  above is a capped preview).
          description: >-
            Map keyed by address → identity. Addresses with no identity
            (type=unknown) are omitted.
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API key for authentication

````