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

# Dapatkan Saldo Token Historis

> Dapatkan saldo token tertentu atau SOL native milik dompet pada stempel waktu, tanggal dan waktu, atau slot sebelumnya.

Setiap permintaan dikenai biaya **100 kredit**.

## Parameter Permintaan

<ParamField body="wallet" type="string" required default="GQUtvPx89ZNCwmvQqFmH59bJcU8fW8siETpaxod7Aydz">
  Alamat dompet Solana (dikodekan dengan base58)
</ParamField>

<ParamField body="mint" type="string" required default="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v">
  Alamat mint token. Untuk SOL native, gunakan `So11111111111111111111111111111111111111111`.
</ParamField>

<ParamField body="time" type="number" default="1750000000">
  Stempel waktu Unix dalam **detik**. Mengembalikan saldo pada waktu ini. Berikan tepat salah satu dari `time`, `datetime`, atau `slot`.
</ParamField>

<ParamField body="datetime" type="string">
  String tanggal dan waktu. Format yang diterima: `2025-01-10` (tengah malam UTC), `2025-01-10 19:20:00`,
  `2025-01-10T19:20:00` (detik bersifat opsional), atau dengan zona waktu eksplisit
  (`2025-01-10T19:20:00Z`, `...+02:00`). **Ditafsirkan sebagai UTC kecuali jika zona waktu
  eksplisit disertakan.** Berikan tepat salah satu dari `time`, `datetime`, atau `slot`.
</ParamField>

<ParamField body="slot" type="number">
  Nomor slot. Mengembalikan saldo pada slot ini. Tepat dan deterministik. Berikan tepat salah satu dari `time`, `datetime`, atau `slot`.
</ParamField>


## OpenAPI

````yaml id/openapi/wallet-api/openapi.yaml GET /v1/wallet/{wallet}/balance-at
openapi: 3.0.3
info:
  title: Wallet API
  description: >
    REST API berkinerja tinggi untuk mengkueri data dompet Solana, termasuk
    saldo, riwayat transaksi, transfer, dan informasi identitas.


    ## Autentikasi


    Semua permintaan memerlukan kunci API yang diteruskan sebagai:

    - Parameter kueri: `?api-key=YOUR_API_KEY`

    - Header: `X-Api-Key: YOUR_API_KEY`
  version: 1.0.0
  contact:
    name: Dukungan API
    url: https://helius.dev
servers:
  - url: https://api.helius.xyz
    description: Server produksi
security:
  - ApiKeyQuery: []
  - ApiKeyHeader: []
tags:
  - name: Identitas
    description: Cari identitas dompet dan alamat yang dikenal
  - name: Saldo
    description: Kueri saldo token dan NFT
  - name: Riwayat
    description: Riwayat transaksi dan perubahan saldo
  - name: Transfer
    description: Aktivitas transfer token
  - name: Pendanaan
    description: Informasi pendanaan dompet
paths:
  /v1/wallet/{wallet}/balance-at:
    get:
      tags:
        - Saldo
      summary: Dapatkan saldo historis
      description: >
        Ambil saldo dompet untuk token tertentu (atau SOL native) pada suatu
        titik di masa lalu,

        yang ditentukan sebagai stempel waktu Unix, string tanggal dan waktu,
        atau nomor slot.


        Saldo dibaca dari transaksi terakhir dompet yang melibatkan token
        tersebut **pada atau

        sebelum** titik waktu yang diminta — yaitu saldo setelah transaksi, yang
        secara definisi

        berlaku hingga transaksi dompet berikutnya. Nilai ini bersifat tepat,
        bukan perkiraan.


        **Tepat satu** dari `time`, `datetime`, atau `slot` harus diberikan.
        Nilai `datetime`

        tanpa zona waktu eksplisit ditafsirkan sebagai **UTC**. Untuk hasil yang
        tepat dan deterministik,

        gunakan `slot` — waktu blok yang dilaporkan validator dapat bergeser
        beberapa detik.


        Untuk SOL native, berikan pseudo-mint
        `So11111111111111111111111111111111111111111` sebagai `mint`.


        Dompet tanpa aktivitas yang cocok pada atau sebelum titik yang diminta
        **bukan** merupakan kesalahan —

        endpoint mengembalikan `200` dengan `balance: "0"` dan `asOf: null`.


        `balance` dan `balanceRaw` dikembalikan sebagai **string** untuk
        menghindari hilangnya presisi pada nilai besar.
      operationId: getWalletBalanceAt
      parameters:
        - $ref: '#/components/parameters/WalletAddress'
        - name: mint
          in: query
          required: true
          description: >-
            Alamat mint token. Untuk SOL native, gunakan
            `So11111111111111111111111111111111111111111`.
          schema:
            type: string
            default: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
          example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
        - name: time
          in: query
          description: >-
            Stempel waktu Unix dalam **detik**. Mengembalikan saldo pada waktu
            ini. Berikan tepat satu dari `time`, `datetime`, atau `slot`.
          schema:
            type: integer
            default: 1750000000
            minimum: 0
          example: 1736536800
        - name: datetime
          in: query
          description: >
            String tanggal dan waktu. Format yang diterima: `2025-01-10` (tengah
            malam UTC), `2025-01-10 19:20:00`,

            `2025-01-10T19:20:00` (detik opsional), atau dengan zona waktu
            eksplisit

            (`2025-01-10T19:20:00Z`, `...+02:00`). **Ditafsirkan sebagai UTC
            kecuali zona waktu

            eksplisit disertakan.** Berikan tepat satu dari `time`, `datetime`,
            atau `slot`.
          schema:
            type: string
          example: '2025-01-10 19:20:00'
        - name: slot
          in: query
          description: >-
            Nomor slot. Mengembalikan saldo pada slot ini. Tepat dan
            deterministik. Berikan tepat satu dari `time`, `datetime`, atau
            `slot`.
          schema:
            type: integer
            minimum: 0
          example: 313000000
      responses:
        '200':
          description: Saldo historis berhasil diambil
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceAtResponse'
        '400':
          description: >-
            `mint` tidak ada; mint tidak valid; tidak ada atau lebih dari satu
            `time`/`datetime`/`slot`; `time`/`slot` bukan bilangan bulat; atau
            `datetime` tidak dapat diuraikan
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Tepat satu dari time, datetime, atau slot harus diberikan
                code: 400
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Alamat dompet tidak valid di jalur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          description: >-
            Kesalahan atau batas waktu RPC upstream. Dapat dicoba ulang dengan
            backoff eksponensial.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: UPSTREAM_ERROR
                code: 502
                details: Permintaan RPC upstream gagal. Silakan coba lagi.
components:
  parameters:
    WalletAddress:
      name: wallet
      in: path
      required: true
      description: Alamat dompet Solana (dikodekan dengan base58)
      schema:
        type: string
        pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
        default: GQUtvPx89ZNCwmvQqFmH59bJcU8fW8siETpaxod7Aydz
      example: GQUtvPx89ZNCwmvQqFmH59bJcU8fW8siETpaxod7Aydz
  schemas:
    BalanceAtResponse:
      type: object
      properties:
        wallet:
          type: string
          description: Salinan alamat dompet yang dikueri
          example: 5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9
        mint:
          type: string
          description: Salinan mint yang dikueri (pseudo-mint SOL jika native)
          example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
        isNative:
          type: boolean
          description: Apakah hasilnya merupakan SOL native
          example: false
        balance:
          type: string
          description: >-
            Jumlah yang mudah dibaca sebagai **string** desimal (bukan angka,
            sehingga saldo besar tidak kehilangan presisi). Angka nol di
            belakang dihapus.
          example: '284961463.392936'
        balanceRaw:
          type: string
          description: Jumlah tepat dalam unit terkecil (lamport untuk SOL), sebagai string
          example: '284961463392936'
        decimals:
          type: integer
          description: Jumlah desimal token (9 untuk SOL)
          example: 6
        requested:
          type: object
          description: >-
            Salinan kueri. Ketika `datetime` digunakan, `time` juga diisi dengan
            detik epoch yang telah diresolusi agar penafsiran UTC terlihat.
          properties:
            time:
              type: integer
              nullable: true
              description: >-
                Waktu yang diminta dalam detik epoch (juga ditetapkan ketika
                `datetime` digunakan)
              example: 1736536800
            slot:
              type: integer
              nullable: true
              description: Slot yang diminta, ketika `slot` digunakan
              example: null
            datetime:
              type: string
              nullable: true
              description: String tanggal dan waktu asli, ketika `datetime` digunakan
              example: null
          required:
            - time
            - slot
            - datetime
        asOf:
          type: object
          nullable: true
          description: >-
            Transaksi tempat saldo dibaca. **`null` ketika dompet tidak memiliki
            transaksi yang cocok pada atau sebelum titik yang diminta** —
            artinya saldo memang `0` (dompet belum memiliki token tersebut saat
            itu), bukan kesalahan.
          properties:
            slot:
              type: integer
              description: Slot transaksi
              example: 313000000
            blockTime:
              type: integer
              nullable: true
              description: Waktu blok transaksi dalam detik Unix (mungkin null)
              example: 1736536794
            signature:
              type: string
              description: Tanda tangan transaksi
              example: 5Cyy7Mh9nVgFq3T8wJp2sKxR4dE6bA1uZoNcLrXmYqUpon
          required:
            - slot
            - signature
      required:
        - wallet
        - mint
        - isNative
        - balance
        - balanceRaw
        - decimals
        - requested
        - asOf
    Error:
      type: object
      properties:
        error:
          type: string
          description: Pesan kesalahan
          example: Alamat dompet tidak valid
        code:
          type: integer
          description: Kode status HTTP
          example: 400
        details:
          type: string
          description: Detail kesalahan tambahan
          example: '''invalid-address'' bukan alamat Solana yang valid'
      required:
        - error
        - code
  responses:
    Unauthorized:
      description: Kunci API tidak ada atau tidak valid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: >-
              Kunci API diperlukan. Teruskan melalui ?api-key=xxx atau header
              X-Api-Key
            code: 401
    RateLimited:
      description: Batas laju terlampaui.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: RATE_LIMIT_EXCEEDED
            code: 429
            details: Terlalu banyak permintaan. Coba lagi setelah 2 detik.
    InternalError:
      description: >-
        Kesalahan server sementara. Dapat dicoba ulang dengan backoff
        eksponensial.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: INTERNAL_ERROR
            code: 500
            details: Terjadi kesalahan yang tidak terduga. Silakan coba lagi.
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: Kunci API yang diteruskan sebagai parameter kueri
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Kunci API yang diteruskan dalam header permintaan

````