> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trypost.it/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Instagram audio

> Reads one Instagram audio asset with fresh `cover_url` and `preview_url` links, which Instagram expires (the `id` does not). Needs an account connected through Facebook (`instagram-facebook`). The answer is kept for an hour per account and track; an uncached read counts against the workspace's 30 audio lookups per minute. This endpoint also counts against a limit of 60 requests per minute per user, shared with the other Pinterest, Discord, TikTok and Instagram lookup endpoints and with the same user's channel lookups in the TryPost app.



## OpenAPI

````yaml /openapi.json get /social-accounts/{account}/instagram-audio/{audioId}
openapi: 3.1.0
info:
  title: TryPost API
  version: 2.0.0
  description: >-
    REST API for TryPost. Authenticate with a workspace API key as a Bearer
    token.
servers:
  - url: https://app.trypost.it/api
    description: TryPost Cloud
security:
  - bearerAuth: []
tags:
  - name: Posts
    description: Create, read, update, delete and preview posts.
  - name: Post notes
    description: Internal notes on a post, visible to workspace members.
  - name: Approvals
    description: Approve or reject posts waiting for approval.
  - name: Recurrence
    description: Make a post repeat on a schedule.
  - name: Media and uploads
    description: Upload files and attach media to posts.
  - name: Social accounts
    description: Connected social accounts and their network-specific options.
  - name: Channels
    description: A channel's posting schedule and queue.
  - name: Ideas
    description: Ideas on the Create board.
  - name: Idea stages
    description: The groups (columns) of the ideas board.
  - name: Analytics
    description: Workspace and channel insights.
  - name: Labels
    description: Labels to organize posts and ideas.
  - name: Signatures
    description: Reusable text to append to posts.
  - name: Workspace
    description: The workspace the API key belongs to.
  - name: API keys
    description: Personal API keys for this workspace.
  - name: Webhooks
    description: Outgoing webhooks and their delivery logs.
  - name: Repurposes
    description: Automations that republish videos posted outside TryPost.
  - name: Platform
    description: Platform capabilities and content types.
paths:
  /social-accounts/{account}/instagram-audio/{audioId}:
    parameters:
      - $ref: '#/components/parameters/AccountId'
      - name: audioId
        in: path
        required: true
        schema:
          type: string
          pattern: ^[0-9]+$
        description: >-
          Instagram audio asset id, for example a post's `meta.audio.id`.
          Anything but digits answers `404`.
    get:
      tags:
        - Social accounts
      summary: Get Instagram audio
      description: >-
        Reads one Instagram audio asset with fresh `cover_url` and `preview_url`
        links, which Instagram expires (the `id` does not). Needs an account
        connected through Facebook (`instagram-facebook`). The answer is kept
        for an hour per account and track; an uncached read counts against the
        workspace's 30 audio lookups per minute. This endpoint also counts
        against a limit of 60 requests per minute per user, shared with the
        other Pinterest, Discord, TikTok and Instagram lookup endpoints and with
        the same user's channel lookups in the TryPost app.
      operationId: getInstagramAudio
      responses:
        '200':
          description: The track.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstagramAudio'
              example:
                id: '1234567890123456'
                type: music
                title: Grudge
                artist: Olivia Rodrigo
                cover_url: https://lookaside.fbsbx.com/cover.jpg
                duration_ms: 185000
                preview_url: https://lookaside.fbsbx.com/preview.m4a
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: >-
            The account is not an Instagram account (`Instagram audio is only
            available for Instagram accounts.`), or it is connected with
            Instagram's own login (`instagram`) instead of through Facebook
            (`instagram-facebook`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                message: Music needs an Instagram account connected through Facebook.
        '429':
          description: >-
            Our rate limit was exceeded, or the workspace already made 30
            uncached audio lookups this minute (searches and track reads
            together, across the app, the API and MCP). `Retry-After` says when
            to try again.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/RateLimitErrorBody'
                  - $ref: '#/components/schemas/ErrorBody'
              example:
                message: Too many music searches. Wait a minute and try again.
        '502':
          description: >-
            Instagram did not answer, answered with an error, or the track is no
            longer available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                message: Couldn't load music from Instagram. Try again.
components:
  parameters:
    AccountId:
      name: account
      in: path
      required: true
      description: >-
        Social account (channel) id. An account of another workspace returns
        `404`.
      schema:
        type: string
        format: uuid
      example: 9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54
  schemas:
    InstagramAudio:
      type: object
      description: >-
        One Instagram audio asset: licensed music or an original sound. Send its
        `id` as `meta.audio.id` on an `instagram_reel`.
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: Instagram audio asset id. Send it as `meta.audio.id`.
        type:
          type:
            - string
            - 'null'
          enum:
            - music
            - original_sound
            - null
          description: '`music` (licensed catalog) or `original_sound`.'
        title:
          type: string
        artist:
          type:
            - string
            - 'null'
          description: >-
            The artist, or for an original sound the creator's Instagram
            username.
        cover_url:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            Cover art, or for an original sound the creator's profile picture.
            Instagram expires these links; read the track again with [Get
            Instagram audio](/api-reference/social-accounts/get-instagram-audio)
            for a fresh one.
        duration_ms:
          type:
            - integer
            - 'null'
          description: Length of the track in milliseconds.
        preview_url:
          type:
            - string
            - 'null'
          format: uri
          description: A playable preview. Expires like `cover_url`.
    ErrorBody:
      type: object
      properties:
        message:
          type: string
    RateLimitErrorBody:
      type: object
      properties:
        name:
          type: string
          const: rate_limit_exceeded
        message:
          type: string
          examples:
            - Rate limit exceeded. Please retry after 30 seconds.
  responses:
    Unauthorized:
      description: >-
        Missing, invalid, revoked or expired API key. Bodies: `Unauthenticated.`
        (no key, or a key that is invalid or revoked), `Token expired.` (past
        its `expires_at`), `Token not found.` and `No workspace selected.` (the
        key is no longer bound to a workspace).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            message: Unauthenticated.
    PaymentRequired:
      description: >-
        TryPost Cloud only: the workspace's account has no active subscription
        or trial. Body: `{"message": "Active subscription required."}`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            message: Active subscription required.
    Forbidden:
      description: >-
        The request is not allowed. API keys work only for workspace admins (the
        account owner or a member marked as admin): otherwise every request
        returns `Insufficient workspace permissions.`. Other bodies: `Workspace
        access denied.` (the key's user left the workspace) and `Personal access
        token required.` (an MCP OAuth token was sent) and `This action is
        unauthorized.` (the note belongs to another member).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    NotFound:
      description: The resource does not exist in this workspace.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Workspace API key from Settings → API Keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.