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

# Look up funding events for one or many wallets

> Returns the first observed inbound SOL funding event for each wallet
in the request. Wallets that have no observed funding return `null`
and are queued for an asynchronous RPC backfill walk — the next
request for the same wallet will return the resolved event (or a
terminal `rpc_unresolved` row if the walk found nothing).

Pass a single address as `?wallets=ONE_ADDR` for single-wallet
usage; the response shape is identical to a multi-wallet request.

**Sources** of a row:
- `observed`        — captured live by the streaming pipeline
- `rpc_backfilled`  — resolved by walking RPC history on demand
- `rpc_unresolved`  — backfill walked but found no usable funding event




## OpenAPI

````yaml openapi-spec/history.yaml get /api/sol/funding/lookup
openapi: 3.0.3
info:
  title: Raze Database API
  description: >
    Paid subscription API for Solana transaction data and history.


    Also hosts write utilities (`/utils/sol/*`): token launch, transfer, burn,

    consolidate, fees claim/config, and agent initialize — previously on

    `router.raze.bot`. Mixer/distribute removed 2026-07-25.


    ## Batch Requests

    All endpoints with path parameters (mint, signer, address, tokenMint,
    ownerAddress) support batch queries

    via comma-separated values. For example:
    `/api/sol/trades/mint/mint1,mint2,mint3?limit=50`


    - Maximum 10 values per batch request

    - Each value must be a valid address (>= 32 characters)

    - Single values behave identically to non-batch requests

    - Batch response format: `{ "success": true, "results": { "value1": {...},
    "value2": {...} }, "count": N, "timestamp": "..." }`

    - Each key in `results` contains the full single-entity response

    - Queries run in parallel for maximum performance
  version: 1.0.0
servers:
  - url: https://api.raze.bot
    description: >-
      Raze global History API — GeoDNS routes to the nearest region
      automatically
security:
  - ApiKeyAuth: []
paths:
  /api/sol/funding/lookup:
    get:
      summary: Look up funding events for one or many wallets
      description: |
        Returns the first observed inbound SOL funding event for each wallet
        in the request. Wallets that have no observed funding return `null`
        and are queued for an asynchronous RPC backfill walk — the next
        request for the same wallet will return the resolved event (or a
        terminal `rpc_unresolved` row if the walk found nothing).

        Pass a single address as `?wallets=ONE_ADDR` for single-wallet
        usage; the response shape is identical to a multi-wallet request.

        **Sources** of a row:
        - `observed`        — captured live by the streaming pipeline
        - `rpc_backfilled`  — resolved by walking RPC history on demand
        - `rpc_unresolved`  — backfill walked but found no usable funding event
      operationId: fundingLookup
      parameters:
        - name: wallets
          in: query
          required: true
          schema:
            type: string
          description: >-
            One or more wallet addresses (comma-separated, max 150). Duplicates
            collapsed.
          example: 9KCxGKj2MVWkJcbtDzq1yMr7Z4w32341LE7Py3cwnG8z
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundingLookupResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Database error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    FundingLookupResponse:
      type: object
      properties:
        success:
          type: boolean
        fundings:
          type: object
          description: >-
            Map keyed by input wallet address; value is FundingInfo or null when
            no record exists yet.
          additionalProperties:
            allOf:
              - $ref: '#/components/schemas/FundingInfo'
            nullable: true
        missing:
          type: array
          items:
            type: string
          description: Wallets with no observed funding row.
        enrichmentEnqueued:
          type: array
          items:
            type: string
          description: >-
            Wallets the server queued for asynchronous RPC backfill (capped at
            100 per request).
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
        success:
          type: boolean
      example:
        error: Unauthorized
        message: Invalid API key
        code: INVALID_KEY
        success: false
    FundingInfo:
      type: object
      description: >-
        One observed wallet-funding event. `source` distinguishes live
        observations from RPC-backfilled entries.
      properties:
        fundedBy:
          type: string
          description: Address that sent the funding SOL.
          example: 35zpjoW4nLDiZcFnLvsK9bNpkTsWXwVdm8cCt33N6TEQ
        fundedAt:
          type: string
          format: date-time
          example: '2026-04-25T13:43:48.000Z'
        signature:
          type: string
          example: >-
            3qxUsAu11bDKkGuXzpBxBjrCNjD6RC6iPuzgu6qmBy2RUxeJk9LtAtAsed6B1hsmcTCyHu9ZJardBGsKLn4gZuS5
        slot:
          type: integer
          format: int64
          example: 415576383
        lamports:
          type: string
          description: Funding amount in lamports (string to preserve UInt64 precision).
          example: '3320000000'
        solAmount:
          type: number
          format: double
          example: 3.32
        source:
          type: string
          enum:
            - observed
            - rpc_backfilled
            - rpc_unresolved
            - ch_backfilled
            - car_backfilled
          description: >
            - `observed`: captured live by the streaming pipeline

            - `rpc_backfilled`: resolved by walking RPC history on demand

            - `rpc_unresolved`: backfill walked but found no usable funding
            event (terminal)

            - `ch_backfilled`: resolved from the ClickHouse backfill

            - `car_backfilled`: resolved from the Old-Faithful (CAR) historical
            backfill
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: apiKey

````