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 ``` 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'