Audius wallet API

The wallet API from Audius — 1 operation(s) for wallet.

OpenAPI Specification

audius-wallet-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Audius challenges wallet API
  description: '## Overview


    The Audius API provides REST access to the world''s largest open music catalog, built on the [Open Audio Protocol](https://openaudio.org). Use it to query and stream tracks, users, playlists, and more—perfect for building music players, discovery apps, and audio-native products.


    ## Key Capabilities


    - **Users** — Profiles, followers, following, search

    - **Tracks** — Search, trending, stream, favorites, reposts

    - **Playlists** — Create, update, browse, curate

    - **Resolve** — Look up content by Audius canonical URLs (e.g. `audius.co/artist/...`)

    - **Explore** — Trending content, charts, discovery

    - **Comments, Tips, Rewards** — Social features and engagement


    ## Authentication


    - **Read-only** — Most endpoints work without credentials. Use an API key for higher rate limits.

    - **Writes** — Upload, favorite, repost, and other mutations require an API key and secret. Get keys at [api.audius.co/plans](https://api.audius.co/plans) or [audius.co/settings](https://audius.co/settings).


    ## Resources


    - [API Docs](https://docs.audius.co/api) — Full reference and guides

    - [API Plans](https://api.audius.co/plans) — Get API keys (free tier available)

    - [Log in with Audius](https://docs.audius.co/developers/guides/log-in-with-audius) — OAuth for user actions

    - [JavaScript SDK](https://www.npmjs.com/package/@audius/sdk) — `@audius/sdk` for Node and browser

    '
  version: '1.0'
  contact:
    name: Audius
    url: https://audius.co
  x-logo:
    url: https://audius.co/favicons/favicon.ico
servers:
- url: https://api.audius.co/v1
  description: Production
tags:
- name: wallet
paths:
  /wallet/{walletId}/coins:
    get:
      tags:
      - wallet
      description: Gets a list of the coins held by a wallet address and their balances
      parameters:
      - name: walletId
        in: path
        description: A Solana wallet address
        required: true
        schema:
          type: string
          example: Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z
      - name: offset
        in: query
        description: The number of items to skip. Useful for pagination (page number * limit)
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: limit
        in: query
        description: The number of items to fetch
        schema:
          type: integer
          default: 50
          minimum: 1
          maximum: 100
      operationId: Get Wallet Coins
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user_coins_response'
components:
  schemas:
    user_coin:
      required:
      - mint
      - ticker
      - decimals
      - owner_id
      - balance
      - has_discord
      - balance_usd
      type: object
      properties:
        mint:
          type: string
          description: The coin mint address
          example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM
        ticker:
          type: string
          description: The coin symbol
          example: $AUDIO
        decimals:
          type: integer
          description: The number of decimals for the coin
          example: 8
        owner_id:
          type: string
          description: The ID of the user associated with the coin
          example: 7eP5n
        logo_uri:
          type: string
          nullable: true
          description: URL to the coin's logo image
          example: https://example.com/logo.png
        banner_image_url:
          type: string
          nullable: true
          description: URL to the coin's banner image
          example: https://example.com/banner.png
        has_discord:
          type: boolean
          description: Whether the coin has a Discord server
          example: true
        balance:
          type: integer
          description: The balance of the coin in the user's account (in wei)
          example: 1000000000
        balance_usd:
          type: number
          description: The balance of the coin in the user's account in USD
          example: 1.23
    user_coins_response:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/user_coin'
  securitySchemes:
    OAuth2:
      type: oauth2
      description: 'OAuth 2.0 Authorization Code flow with PKCE for third-party applications.


        Allows apps to authenticate users and obtain access tokens scoped to read or read+write permissions on behalf of the user.


        **Scopes:**

        - `read` — Read-only access to the user''s public and private data.

        - `write` — Read and write access, allowing mutations on behalf of the user.


        **PKCE Required:**

        All authorization code requests must include `code_challenge` and `code_challenge_method=S256` parameters.

        '
      flows:
        authorizationCode:
          authorizationUrl: /v1/oauth/authorize
          tokenUrl: /v1/oauth/token
          scopes:
            read: Read-only access to user data
            write: Read and write access on behalf of the user
    BasicAuth:
      type: http
      scheme: basic
      description: 'HTTP Basic Authentication with Ethereum private key for write operations.


        **Authentication**


        Use HTTP Basic Authentication where the password field contains your Ethereum private key:

        ```

        Authorization: Basic <base64(username:privatekey)>

        ```


        The username can be any value. The password must be your Ethereum private key in hex format (with or without 0x prefix).


        Example:

        ```

        Authorization: Basic dXNlcm5hbWU6MHgxMjM0NTY3ODkwYWJjZGVmLi4u

        ```


        **How it works:**

        1. The API decodes the Basic Auth credentials

        2. Extracts the private key from the password field

        3. Derives the Ethereum address from the private key

        4. Uses this address for authorization checks


        **Authorization**


        The derived wallet address must be either:

        - The wallet of the user being acted upon (direct ownership)

        - A wallet with an approved, non-revoked grant for the user (manager mode)

        '
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'The API bearer token or OAuth JWT token for the user.

        '
x-original-swagger-version: '2.0'