Audius tips API

Tip related operations

OpenAPI Specification

audius-tips-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Audius challenges tips 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: tips
  description: Tip related operations
paths:
  /tips:
    get:
      tags:
      - tips
      description: Gets the most recent tips on the network
      operationId: Get Tips
      security:
      - {}
      - OAuth2:
        - read
      parameters:
      - name: offset
        in: query
        description: The number of items to skip. Useful for pagination (page number * limit)
        schema:
          type: integer
      - name: limit
        in: query
        description: The number of items to fetch
        schema:
          type: integer
      - name: user_id
        in: query
        description: The user ID of the user making the request
        schema:
          type: string
      - name: receiver_min_followers
        in: query
        description: Only include tips to recipients that have this many followers
        schema:
          type: integer
          default: 0
      - name: receiver_is_verified
        in: query
        description: Only include tips to recipients that are verified
        schema:
          type: boolean
          default: false
      - name: current_user_follows
        in: query
        description: Only include tips involving the user's followers in the given capacity. Requires user_id to be set.
        schema:
          type: string
          enum:
          - sender
          - receiver
          - sender_or_receiver
      - name: unique_by
        in: query
        description: "Only include the most recent tip for a user was involved in the given capacity.\n\nEg. 'sender' will ensure that each tip returned has a unique sender, using the most recent tip sent by a user if that user has sent multiple tips.\n    "
        schema:
          type: string
          enum:
          - sender
          - receiver
      - name: min_slot
        in: query
        description: The minimum Solana slot to pull tips from
        schema:
          type: integer
          default: 0
      - name: max_slot
        in: query
        description: The maximum Solana slot to pull tips from
        schema:
          type: integer
          default: 0
      - name: tx_signatures
        in: query
        description: A list of transaction signatures of tips to fetch
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_tips_response'
components:
  schemas:
    playlist_library:
      type: object
      properties:
        contents:
          type: array
          items:
            type: object
            properties: {}
    profile_picture:
      type: object
      properties:
        150x150:
          type: string
        480x480:
          type: string
        1000x1000:
          type: string
        mirrors:
          type: array
          items:
            type: string
    user:
      required:
      - album_count
      - allow_ai_attribution
      - artist_coin_badge
      - associated_sol_wallets_balance
      - associated_wallets_balance
      - balance
      - blocknumber
      - created_at
      - current_user_followee_follow_count
      - does_current_user_follow
      - does_current_user_subscribe
      - does_follow_current_user
      - erc_wallet
      - followee_count
      - follower_count
      - handle
      - handle_lc
      - has_collectibles
      - id
      - is_available
      - is_deactivated
      - is_storage_v2
      - is_verified
      - name
      - playlist_count
      - repost_count
      - spl_wallet
      - spl_usdc_wallet
      - supporter_count
      - supporting_count
      - total_audio_balance
      - total_balance
      - track_count
      - updated_at
      - verified_with_instagram
      - verified_with_tiktok
      - verified_with_twitter
      - wallet
      - waudio_balance
      type: object
      properties:
        album_count:
          type: integer
        artist_pick_track_id:
          type: string
        artist_coin_badge:
          type: object
          properties:
            mint:
              type: string
            logo_uri:
              type: string
            banner_image_url:
              type: string
            ticker:
              type: string
              description: The coin symbol/ticker
        coin_flair_mint:
          type: string
        bio:
          type: string
        cover_photo:
          $ref: '#/components/schemas/cover_photo'
        followee_count:
          type: integer
        follower_count:
          type: integer
        handle:
          type: string
        id:
          type: string
        is_verified:
          type: boolean
        twitter_handle:
          type: string
        instagram_handle:
          type: string
        tiktok_handle:
          type: string
        verified_with_twitter:
          type: boolean
        verified_with_instagram:
          type: boolean
        verified_with_tiktok:
          type: boolean
        website:
          type: string
        donation:
          type: string
        location:
          type: string
        name:
          type: string
        playlist_count:
          type: integer
        profile_picture:
          $ref: '#/components/schemas/profile_picture'
        repost_count:
          type: integer
        track_count:
          type: integer
        is_deactivated:
          type: boolean
        is_available:
          type: boolean
        erc_wallet:
          type: string
        spl_wallet:
          type: string
        spl_usdc_wallet:
          type: string
        spl_usdc_payout_wallet:
          type: string
        supporter_count:
          type: integer
        supporting_count:
          type: integer
        total_audio_balance:
          type: integer
        wallet:
          type: string
          description: The user's Ethereum wallet address for their account
        balance:
          type: string
        associated_wallets_balance:
          type: string
        total_balance:
          type: string
        waudio_balance:
          type: string
        associated_sol_wallets_balance:
          type: string
        blocknumber:
          type: integer
        created_at:
          type: string
        is_storage_v2:
          type: boolean
        creator_node_endpoint:
          type: string
        current_user_followee_follow_count:
          type: integer
        does_current_user_follow:
          type: boolean
        does_current_user_subscribe:
          type: boolean
        does_follow_current_user:
          type: boolean
        handle_lc:
          type: string
        updated_at:
          type: string
        cover_photo_sizes:
          type: string
        cover_photo_cids:
          $ref: '#/components/schemas/cover_photo'
        cover_photo_legacy:
          type: string
        profile_picture_sizes:
          type: string
        profile_picture_cids:
          $ref: '#/components/schemas/profile_picture'
        profile_picture_legacy:
          type: string
        has_collectibles:
          type: boolean
        playlist_library:
          $ref: '#/components/schemas/playlist_library'
        allow_ai_attribution:
          type: boolean
        profile_type:
          type: string
    supporter_reference:
      required:
      - user_id
      type: object
      properties:
        user_id:
          type: string
    version_metadata:
      required:
      - service
      - version
      type: object
      properties:
        service:
          type: string
        version:
          type: string
    tip:
      required:
      - amount
      - created_at
      - followee_supporters
      - receiver
      - sender
      - slot
      - tx_signature
      type: object
      properties:
        amount:
          type: string
        sender:
          $ref: '#/components/schemas/user'
        receiver:
          $ref: '#/components/schemas/user'
        created_at:
          type: string
        slot:
          type: integer
        followee_supporters:
          type: array
          items:
            $ref: '#/components/schemas/supporter_reference'
        tx_signature:
          type: string
    get_tips_response:
      required:
      - latest_chain_block
      - latest_chain_slot_plays
      - latest_indexed_block
      - latest_indexed_slot_plays
      - signature
      - timestamp
      - version
      type: object
      properties:
        latest_chain_block:
          type: integer
        latest_indexed_block:
          type: integer
        latest_chain_slot_plays:
          type: integer
        latest_indexed_slot_plays:
          type: integer
        signature:
          type: string
        timestamp:
          type: string
        version:
          $ref: '#/components/schemas/version_metadata'
        data:
          type: array
          items:
            $ref: '#/components/schemas/tip'
    cover_photo:
      type: object
      properties:
        640x:
          type: string
        2000x:
          type: string
        mirrors:
          type: array
          items:
            type: string
  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'