Audius comments API

Comment related operations

Operations 11

GET /comments/unclaimed_id #
POST /comments #
GET /comments/{comment_id} #
PUT /comments/{comment_id} #
DELETE /comments/{comment_id} #
POST /comments/{comment_id}/react #
DELETE /comments/{comment_id}/react #
POST /comments/{comment_id}/pin #
DELETE /comments/{comment_id}/pin #
POST /comments/{comment_id}/report #
GET /comments/{comment_id}/replies #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/audius-comments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

audius-comments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Audius challenges Comments 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: comments
  description: Comment related operations
paths:
  /comments/unclaimed_id:
    get:
      tags:
      - comments
      description: Gets an unclaimed blockchain comment ID
      operationId: Get unclaimed comment ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unclaimed_id_response'
        '500':
          description: Server error
          content: {}
  /comments:
    post:
      tags:
      - comments
      description: Creates a new comment
      operationId: Create Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      requestBody:
        x-codegen-request-body-name: metadata
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_comment_request_body'
      responses:
        '201':
          description: Comment created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_comment_response'
        '400':
          description: Bad request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '500':
          description: Server error
          content: {}
  /comments/{comment_id}:
    get:
      tags:
      - comments
      description: Gets a comment by ID
      operationId: Get Comment
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/comment_response'
        '500':
          description: Server error
          content: {}
    put:
      tags:
      - comments
      description: Updates a comment
      operationId: Update Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      requestBody:
        x-codegen-request-body-name: metadata
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_comment_request_body'
      responses:
        '200':
          description: Comment updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
    delete:
      tags:
      - comments
      description: Deletes a comment
      operationId: Delete Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Comment deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
  /comments/{comment_id}/react:
    post:
      tags:
      - comments
      description: React to a comment
      operationId: React to Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/react_comment_request_body'
        required: true
        x-codegen-request-body-name: metadata
      responses:
        '200':
          description: Comment reacted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
    delete:
      tags:
      - comments
      description: Unreact to a comment
      operationId: Unreact to Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/react_comment_request_body'
        required: true
        x-codegen-request-body-name: metadata
      responses:
        '200':
          description: Comment unreacted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
  /comments/{comment_id}/pin:
    post:
      tags:
      - comments
      description: Pin a comment
      operationId: Pin Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pin_comment_request_body'
        required: true
        x-codegen-request-body-name: metadata
      responses:
        '200':
          description: Comment pinned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
    delete:
      tags:
      - comments
      description: Unpin a comment
      operationId: Unpin Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pin_comment_request_body'
        required: true
        x-codegen-request-body-name: metadata
      responses:
        '200':
          description: Comment unpinned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
  /comments/{comment_id}/report:
    post:
      tags:
      - comments
      description: Report a comment
      operationId: Report Comment
      security:
      - BearerAuth: []
      - BasicAuth: []
      - OAuth2:
        - write
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user making the request
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Comment reported successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/write_response'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Comment not found
          content: {}
        '500':
          description: Server error
          content: {}
  /comments/{comment_id}/replies:
    get:
      tags:
      - comments
      description: Gets replies to a parent comment
      operationId: Get Comment Replies
      security:
      - {}
      - OAuth2:
        - read
      parameters:
      - name: comment_id
        in: path
        description: A Comment ID
        required: true
        schema:
          type: string
      - 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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/comment_replies_response'
        '400':
          description: Bad request
          content: {}
        '500':
          description: Server error
          content: {}
components:
  schemas:
    access:
      required:
      - download
      - stream
      type: object
      properties:
        stream:
          type: boolean
        download:
          type: boolean
    access_gate:
      oneOf:
      - $ref: '#/components/schemas/tip_gate'
      - $ref: '#/components/schemas/follow_gate'
      - $ref: '#/components/schemas/purchase_gate'
      - $ref: '#/components/schemas/token_gate'
    remix:
      required:
      - has_remix_author_reposted
      - has_remix_author_saved
      - parent_track_id
      - user
      type: object
      properties:
        parent_track_id:
          type: string
        user:
          $ref: '#/components/schemas/user'
        has_remix_author_reposted:
          type: boolean
        has_remix_author_saved:
          type: boolean
    comment_response:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/comment'
    track:
      required:
      - access
      - artwork
      - blocknumber
      - comment_count
      - cover_art_sizes
      - created_at
      - download
      - duration
      - favorite_count
      - field_visibility
      - followee_favorites
      - followee_reposts
      - genre
      - has_current_user_reposted
      - has_current_user_saved
      - id
      - is_available
      - is_delete
      - is_download_gated
      - is_downloadable
      - is_original_available
      - is_owned_by_user
      - is_scheduled_release
      - is_stream_gated
      - is_unlisted
      - permalink
      - play_count
      - preview
      - remix_of
      - repost_count
      - route_id
      - stream
      - title
      - track_segments
      - updated_at
      - user
      - user_id
      type: object
      properties:
        artwork:
          $ref: '#/components/schemas/track_artwork'
        description:
          type: string
        genre:
          type: string
        id:
          type: string
        track_cid:
          type: string
        preview_cid:
          type: string
        orig_file_cid:
          type: string
        orig_filename:
          type: string
        is_original_available:
          type: boolean
        mood:
          type: string
        release_date:
          type: string
          format: date
        remix_of:
          $ref: '#/components/schemas/remix_parent'
        repost_count:
          type: integer
        favorite_count:
          type: integer
        comment_count:
          type: integer
        tags:
          type: string
        title:
          type: string
        user:
          $ref: '#/components/schemas/user'
        duration:
          type: integer
        is_downloadable:
          type: boolean
        play_count:
          type: integer
        permalink:
          type: string
        is_streamable:
          type: boolean
        ddex_app:
          type: string
        playlists_containing_track:
          type: array
          items:
            type: integer
        pinned_comment_id:
          type: integer
        album_backlink:
          $ref: '#/components/schemas/album_backlink'
        access:
          type: object
          description: Describes what access the given user has
          allOf:
          - $ref: '#/components/schemas/access'
        blocknumber:
          type: integer
          description: The blocknumber this track was last updated
        create_date:
          type: string
        cover_art_sizes:
          type: string
        cover_art_cids:
          $ref: '#/components/schemas/cover_art'
        created_at:
          type: string
        credits_splits:
          type: string
        isrc:
          type: string
        license:
          type: string
        iswc:
          type: string
        field_visibility:
          $ref: '#/components/schemas/field_visibility'
        followee_reposts:
          type: array
          items:
            $ref: '#/components/schemas/repost'
        has_current_user_reposted:
          type: boolean
        is_scheduled_release:
          type: boolean
        is_unlisted:
          type: boolean
        has_current_user_saved:
          type: boolean
        followee_favorites:
          type: array
          items:
            $ref: '#/components/schemas/favorite'
        route_id:
          type: string
        stem_of:
          $ref: '#/components/schemas/stem_parent'
        track_segments:
          type: array
          items:
            $ref: '#/components/schemas/track_segment'
        updated_at:
          type: string
        user_id:
          type: string
        is_delete:
          type: boolean
        cover_art:
          type: string
        is_available:
          type: boolean
        ai_attribution_user_id:
          type: integer
        allowed_api_keys:
          type: array
          items:
            type: string
        audio_upload_id:
          type: string
        preview_start_seconds:
          type: number
        bpm:
          type: number
        is_custom_bpm:
          type: boolean
        musical_key:
          type: string
        is_custom_musical_key:
          type: boolean
        audio_analysis_error_count:
          type: integer
        comments_disabled:
          type: boolean
        ddex_release_ids:
          type: object
          properties: {}
        artists:
          type: array
          items:
            type: object
            properties: {}
        resource_contributors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ddex_resource_contributor'
        indirect_resource_contributors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ddex_resource_contributor'
        rights_controller:
          $ref: '#/components/schemas/ddex_rights_controller'
        copyright_line:
          allOf:
          - $ref: '#/components/schemas/ddex_copyright'
        producer_copyright_line:
          allOf:
          - $ref: '#/components/schemas/ddex_copyright'
        parental_warning_type:
          type:
          - string
          - 'null'
        is_stream_gated:
          type: boolean
          description: Whether or not the owner has restricted streaming behind an access gate
        access_authorities:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Wallet addresses that can sign to authorize stream access (programmable distribution). When empty or omitted, the track is public and validator/creator nodes can serve it.
        stream_conditions:
          type: object
          description: How to unlock stream access to the track
          allOf:
          - $ref: '#/components/schemas/access_gate'
        is_download_gated:
          type: boolean
          description: Whether or not the owner has restricted downloading behind an access gate
        download_conditions:
          type: object
          description: How to unlock the track download
          allOf:
          - $ref: '#/components/schemas/access_gate'
        cover_original_song_title:
          type: string
        cover_original_artist:
          type: string
        is_owned_by_user:
          type: boolean
          description: Indicates whether the track is owned by the user for MRI sake
        stream:
          $ref: '#/components/schemas/url_with_mirrors'
        download:
          $ref: '#/components/schemas/url_with_mirrors'
        preview:
          $ref: '#/components/schemas/url_with_mirrors'
    comment_entity_type:
      type: string
      description: Type of entity that can be commented on
      enum:
      - Track
    payment_split:
      required:
      - user_id
      - percentage
      type: object
      properties:
        user_id:
          type: integer
          example: 1234
        percentage:
          type: number
    field_visibility:
      required:
      - genre
      - mood
      - play_count
      - remixes
      - share
      - tags
      type: object
      properties:
        mood:
          type: boolean
        tags:
          type: boolean
        genre:
          type: boolean
        share:
          type: boolean
        play_count:
          type: boolean
        remixes:
          type: boolean
    reply_comment:
      required:
      - created_at
      - entity_id
      - entity_type
      - id
      - is_edited
      - message
      - react_count
      - user_id
      type: object
      properties:
        id:
          type: string
        entity_id:
          type: string
        entity_type:
          $ref: '#/components/schemas/comment_entity_type'
        user_id:
          type: string
        message:
          type: string
        mentions:
          type: array
          items:
            $ref: '#/components/schemas/comment_mention'
        track_timestamp_s:
          type: integer
        react_count:
          type: integer
        is_edited:
          type: boolean
        is_current_user_reacted:
          type: boolean
        is_artist_reacted:
          type: boolean
        created_at:
          type: string
        updated_at:
          type: string
        parent_comment_id:
          type: integer
    extended_token_gate:
      required:
      - token_mint
      - token_amount
      type: object
      properties:
        token_mint:
          type: string
          description: The mint of the token needed to unlock
        token_amount:
          type: integer
          description: The amount of the token needed to unlock
    ddex_resource_contributor:
      type: object
      required:
      - name
      - roles
      properties:
        name:
          type: string
          minLength: 1
          description: Contributor name
        roles:
          type: array
          minItems: 1
          items:
            type: string
            minLength: 1
          description: Contributor roles
        sequence_number:
          type: integer
          minimum: 0
          description: Sequence number for ordering
    usdc_gate:
      required:
      - price
      - splits
      type: object
      properties:
        price:
          type: integer
          description: The price in USDC needed to unlock
        splits:
          type: array
          items:
            $ref: '#/components/schemas/payment_split'
    unclaimed_id_response:
      type: object
      properties:
        data:
          type: string
    playlist_library:
      type: object
      properties:
        contents:
          type: array
          items:
            type: object
            properties: {}
    playlist_artwork:
      type: object
      properties:
        150x150:
          type: string
        480x480:
          type: string
        1000x1000:
          type: string
        mirrors:
          type: array
          items:
            type: string
    version_metadata:
      required:
      - service
      - version
      type: object
      properties:
        service:
          type: string
        version:
          type: string
    cover_photo:
      type: object
      properties:
        640x:
          type: string
        2000x:
          type: string
        mirrors:
          type: array
          items:
            type: string
    follow_gate:
      required:
      - follow_user_id
      type: object
      properties:
        follow_user_id:
          type: integer
          description: Must follow the given user ID to unlock
    purchase_gate:
      required:
      - usdc_purchase
      type: object
      properties:
        usdc_purchase:
          type: object
          description: Must pay the total price and split to the given addresses to unlock
          allOf:
          - $ref: '#/components/schemas/usdc_gate'
    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
    ddex_copyright:
      type: object
      required:
      - year
      - text
      properties:
        year:
          type: string
          minLength: 4
          maxLength: 4
          description: Copyright year (4 characters)
        text:
          type: string
          minLength: 1
          description: Copyright text
    album_backlink:
      required:
      - permalink
      - playlist_id
      - playlist_name
      type: object
      properties:
        playlist_id:
          type: integer
        playlist_name:
          type: string
        permalink:
          type: string
    tip_gate:
      required:
      - tip_user_id
      type: object
      properties:
        tip_user_id:
          type: integer
          description: Must tip the given user ID to unlock
    comment_mention:
      required:
      - handle
      - user_id
      type: object
      properties:
        user_id:
          type: integer
        handle:
          type: string
    create_comment_response:
      type: object
      properties:
        transaction_hash:
          type: string
          description: The blockchain transaction hash
        block_hash:
          type: string
          description: The blockchain block hash
        block_number:
          type: integer
          format: int64
          description: The blockchain block number/height
        comment_id:
          type: string
          description: The ID of the created comment
    playlist_added_timestamp:
      required:
      - timestamp
      - track_id
      type: object
      properties:
        metadata_timestamp:
          type: integer
          description: Optional. Metadata timestamp for when the track was added to the playlist.
        timestamp:
          type: integer
        track_id:
          type: string
    repost:
      required:
      - repost_item_id
      - repost_type
      - user_id
      type: object
      properties:
        repost_item_id:
          type: string
        repost_type:
          type: string
        user_id:
          type: string
    write_response:
      type: object
      properties:
        transaction_hash:
          type: string
          description: The blockchain transaction hash
        block_hash:
          type: string
          description: The blockchain block hash
        block_number:
          type: integer
          format: int64
          description: The blockchain block number/height
    playlist:
      required:
      - access
      - added_timestamps
      - blocknumber
      - created_at
      - favorite_count
      - followee_favorites
      - followee_reposts
      - has_current_user_reposted
      - has_current_user_saved
      - id
      - is_album
      - is_delete
      - is_image_autogenerated
      - is_private
      - is_scheduled_release
      - is_stream_gated
      - permalink
      - playlist_contents
      - playlist_name
      - repost_count
      - total_play_count
      - track_count
      - updated_at
      - user
      - user_id
      type: object
      properties:
        artwork:
          $ref: '#/components/schemas/playlist_artwork'
        description:
          type: string
        permalink:
          type: string
        id:
          type: string
        is_album:
          type: boolean
        is_image_autogenerated:
          type: boolean
        playlist_name:
          type: string

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/audius/refs/heads/main/openapi/audius-comments-api-openapi.yml