OpenAPI Specification
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'