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

# Native token bundlers

> Observed native launch bundler candidates joined to the native owner bank, excluding known pools. Maximum 1000 rows, partial classification. Missing owner bank returns unavailable and an empty rows list, not a measured zero. Previous balances are unknown. Risk score: 50 points for >=20% observed supply, 50 for >=10 candidates; inferred, not a safety verdict.



## OpenAPI

````yaml https://www.oceanx.trade/api/v1/openapi.json get /api/v1/tokens/{chain}/{address}/bundlers
openapi: 3.1.0
info:
  title: OceanX Developer API
  version: 1.0.0
  description: >-
    Public API for the OceanX trading platform. Currently in beta and free to
    use while in beta.


    This spec covers the **spot quote** domain. The wallet **tracker** and
    **perps** domains are documented at https://docs.oceanx.trade/api/overview
    and are not yet described here.
  contact:
    url: https://docs.oceanx.trade
  termsOfService: https://www.oceanx.trade/legal/terms
  license:
    name: Proprietary
    url: https://www.oceanx.trade/legal/terms
servers:
  - url: https://www.oceanx.trade
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Router
    description: >-
      Read-only Raptor route quotes and public Solana transaction status. Build
      and execution remain separately gated.
  - name: Market Data
    description: Read-only OceanX market context sourced and cached by VM producers.
  - name: Spot
    description: >-
      Executable Solana swap quotes off OceanX's own router, and the exit
      checker that reports whether a whole position can be sold.
  - name: Callouts
    description: >-
      Public token callouts — user-posted token calls with live click/volume
      attribution stats. Read-only.
  - name: Copy Trading
    description: Key-owner follow, fill and PnL reads; no execution authority.
  - name: Price Alerts
    description: Key-owner alert management through the existing evaluator; no webhooks.
paths:
  /api/v1/tokens/{chain}/{address}/bundlers:
    get:
      tags:
        - Tokens
      summary: Native token bundlers
      description: >-
        Observed native launch bundler candidates joined to the native owner
        bank, excluding known pools. Maximum 1000 rows, partial classification.
        Missing owner bank returns unavailable and an empty rows list, not a
        measured zero. Previous balances are unknown. Risk score: 50 points for
        >=20% observed supply, 50 for >=10 candidates; inferred, not a safety
        verdict.
      operationId: getTokenBundlers
      parameters:
        - name: chain
          in: path
          required: true
          schema:
            type: string
            enum:
              - solana
        - name: address
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Owned observation. Coverage and nulls must be respected.
          content:
            application/json:
              schema:
                type: object
                required:
                  - source
                  - generated_at_ms
                  - data
                properties:
                  source:
                    const: local
                  generated_at_ms:
                    type: integer
                  data:
                    type: object
                    properties:
                      mint:
                        type: string
                      status:
                        enum:
                          - partial
                          - unavailable
                      complete:
                        const: false
                      asOf:
                        type:
                          - integer
                          - 'null'
                        minimum: 0
                      rows:
                        type: array
                        maxItems: 1000
                        items:
                          type: object
                          properties:
                            wallet:
                              type: string
                            balanceRaw:
                              type: string
                            balance:
                              type: string
                            percentage:
                              type:
                                - string
                                - 'null'
                              description: >-
                                Exact decimal; null means unobserved or
                                incomplete.
                            previousAmount:
                              type: 'null'
                            previousPercentage:
                              type: 'null'
                      risk:
                        type: object
                        properties:
                          asOf:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          expiresAt:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          source:
                            type: string
                          complete:
                            const: false
                          bundlerCount:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          bundlerPercentage:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Exact decimal; null means unobserved or
                              incomplete.
                          sniperCount:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          sniperPercentage:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Exact decimal; null means unobserved or
                              incomplete.
                          insiderCount:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          insiderPercentage:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Exact decimal; null means unobserved or
                              incomplete.
                          bundlerRisk:
                            type: object
                            properties:
                              score:
                                type:
                                  - integer
                                  - 'null'
                                minimum: 0
                              rule:
                                type: string
                              inferred:
                                const: true
                      reason:
                        type: string
        '400':
          description: Invalid or duplicate query parameter.
        '401':
          description: API key required.
        '403':
          description: md.read scope required.
        '409':
          description: Cursor expired or changed; restart pagination.
        '422':
          description: Unsupported chain or filter.
        '429':
          description: Rate or concurrency limit exceeded.
        '503':
          description: Native source unavailable or response budget exceeded.
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An OceanX API key, created in the app under Settings → Developer API.
        Send it as `Authorization: Bearer ox_live_…`. Required scopes are
        operation-specific: market reads use md.read, tracker uses tracker.read,
        copy reads use copy.read, and alert operations use alerts.read or
        alerts.write. New scopes require explicit selection and grant no trading
        authority. Existing perps operations retain their documented scopes.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.