audiopod-ai Music API

AI music generation and editing

Operations 58

POST /api/v1/music/text2music Create Text2Music #
POST /api/v1/music/prompt2instrumental Create Prompt2Instrumental #
POST /api/v1/music/lyric2vocals Create Lyric2Vocals #
POST /api/v1/music/text2rap Create Text2Rap #
POST /api/v1/music/text2samples Create Text2Samples #
POST /api/v1/music/cover Create Cover #
POST /api/v1/music/simple Create Simple Generate #
POST /api/v1/music/reference Create With Reference Audio #
POST /api/v1/music/analyze Analyze Audio #
POST /api/v1/music/extract-stem Extract Stem #
POST /api/v1/music/{job_id}/lrc Generate Lrc #
GET /api/v1/music/jobs/counts Get Music Job Counts #
POST /api/v1/music/retake Create Retake #
POST /api/v1/music/repaint Create Repaint #
POST /api/v1/music/extend Create Extend #
POST /api/v1/music/edit Create Edit #
GET /api/v1/music/jobs/{job_id}/status Get Job Status #
GET /api/v1/music/jobs List Jobs #
GET /api/v1/music/liked Get Liked Tracks #
GET /api/v1/music/filters/stats Get Filter Statistics #
DELETE /api/v1/music/jobs/{job_id} Delete Job #
PATCH /api/v1/music/jobs/{job_id} Update Job Metadata #
GET /api/v1/music/sample-data Get Sample Data #
GET /api/v1/music/presets Get Presets #
GET /api/v1/music/model/status Get Model Status #
POST /api/v1/music/jobs/{job_id}/like Like Music Track #
DELETE /api/v1/music/jobs/{job_id}/like Unlike Music Track #
POST /api/v1/music/jobs/{job_id}/dislike Dislike Music Track #
DELETE /api/v1/music/jobs/{job_id}/dislike Undislike Music Track #
POST /api/v1/music/jobs/{job_id}/share Share Music Track #
GET /api/v1/music/jobs/{job_id}/stats Get Music Track Stats #
GET /api/v1/music/jobs/{job_id}/interaction-status Get User Interaction Status #
GET /api/v1/music/share/{share_token} Get Shared Music Track #
GET /api/v1/music/share/{share_token}/stats Get Shared Music Track Stats #
GET /api/v1/music/shared/{share_token} Get Shared Track #
GET /api/v1/music/shared/{share_token}/download Get Shared Track Download #
POST /api/v1/music/shared/{share_token}/like Like Shared Track #
POST /api/v1/music/shared/{share_token}/dislike Dislike Shared Track #
POST /api/v1/music/shared/{share_token}/comments Add Comment To Shared Track #
GET /api/v1/music/shared/{share_token}/comments Get Shared Track Comments #
POST /api/v1/music/jobs/{job_id}/comments Add Comment To Track #
GET /api/v1/music/jobs/{job_id}/comments Get Track Comments #
POST /api/v1/music/jobs/{job_id}/retry Retry Music Job #
GET /api/v1/music/public/limits Get Public Music Limits #
POST /api/v1/music/public/generate Process Public Music Generation #
POST /api/v1/music/public/generate-shareable Process Public Music Generation Shareable #
POST /api/v1/music/radio/generate Radio Generate #
GET /api/v1/music/jobs/{job_id}/stream Stream Music Job Status #
GET /api/v1/music/v3/availability V3 Availability #
POST /api/v1/music/v3/generate V3 Generate #
POST /api/v1/music/v3/plan V3 Plan #
POST /api/v1/music/v3/edit V3 Edit #
POST /api/v1/music/v3/revise V3 Revise #
GET /api/v1/music/v3/jobs V3 Jobs #
GET /api/v1/music/v3/jobs/{job_id} V3 Job #
GET /api/v1/music/v3/jobs/{job_id}/score V3 Job Score #

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/audiopod-ai:audiopod-ai-music-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

audiopod-ai-music-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AudioPod AI Music API
  description: '# AudioPod AI APIs


    ## Overview


    The AudioPod AI API provides advanced audio processing, AI-powered music generation, voice cloning, transcription, and audio publishing services over a versioned REST interface, with API-key authentication, typed error responses, and published rate limits. ## Base URL

    ```

    https://api.audiopod.ai/api/v1

    ```


    ## Authentication


    ### API Key Authentication (Recommended)

    Most API endpoints use API key authentication. Include your key in the header:

    ```

    X-API-Key: ap_your_api_key

    ```


    ### JWT Token Authentication

    For session-based access (web applications), obtain a token via `/auth/token`:

    ```

    Authorization: Bearer

    ```


    ### Public Endpoints

    Some endpoints like newsletter subscription, health checks, and shared content don''t require authentication. ## Versioning & Deprecation Policy


    The API is versioned **in the URL path**. The current version is `v1`, served at

    `https://api.audiopod.ai/api/v1`. Integrate against an explicit version — never

    against an unversioned path. - **Additive changes ship in place.** New endpoints, new optional request

    fields, and new response fields can appear in `v1` at any time. Clients must

    ignore unknown response fields rather than failing on them. - **Breaking changes ship as a new path version** (`/api/v2`). A breaking change

    is: removing or renaming a field or endpoint, changing a field''s type, adding a

    required request field, or changing the meaning of an existing value. - **Retirement is announced on the wire.** When an endpoint or version is

    scheduled for removal, its responses carry:

    - `Deprecation: true` — the endpoint is deprecated as of now. - `Sunset: ` — the date after which it stops responding

    (RFC 8594). - `Link: ; rel="successor-version"` — where to migrate to. - **Minimum notice: 6 months** between the first `Sunset` header and removal, for

    any endpoint outside a `dev`/preview tag. - Deprecated operations are also marked `"deprecated": true` in this

    specification, so a generated client can surface the warning at build time. ## Rate Limiting


    Limits are applied per API key (falling back to client IP for unauthenticated

    requests) and **scale with subscription tier** — higher tiers get proportionally

    more headroom on the same routes. Indicative baselines for the free tier:


    - **Standard**: 100 requests/minute

    - **Auth endpoints**: 10 requests/minute

    - **Upload endpoints**: 20 requests/minute

    - **Music generation**: `50/minute`

    - **Music retake**: `10/minute`

    - **Music repaint / extend / edit**: `3/minute`


    Do not hard-code these numbers. **Read the quota off the response headers**,

    which are returned on every rate-limited route (routes with no explicit limit

    send no quota headers — absence means "not throttled here", not "quota

    exhausted"):


    | Header | Meaning |

    |---|---|

    | `RateLimit-Limit` | Requests allowed in the current window |

    | `RateLimit-Remaining` | Requests still available in the current window |

    | `RateLimit-Reset` | Seconds until the window resets |

    | `RateLimit-Policy` | The quota policy, e.g. `100;w=60` |

    | `Retry-After` | On a `429` only: seconds to wait before retrying |


    The legacy `X-RateLimit-Limit` / `-Remaining` / `-Reset` names are still sent

    alongside the standard ones for older clients. On a `429`, back off for at least `Retry-After` seconds. Retries with

    exponential backoff and jitter are expected; tight retry loops are not. ## Errors


    Every `4xx` and `5xx` response uses one typed envelope:


    ```json

    {

    "error": "NOT_FOUND",

    "message": "The requested resource was not found.",

    "status": 404,

    "detail": "..."

    }

    ```


    - `error` — a **stable, machine-readable code**. Branch on this. - `message` — human-readable prose. Do not parse; wording can change. - `status` — the HTTP status, repeated for convenience. - `detail` — the legacy payload, retained for backward compatibility. For a

    `422` it is the array of failing fields. The full shape is published as the `ErrorResponse` schema, and each operation

    below documents the statuses it can return.'
  version: 2.0.0
servers:
- url: https://api.audiopod.ai
  description: Production
security:
- apiKeyAuth: []
- bearerAuth: []
tags:


# --- truncated at 32 KB (266 KB total) ---
# Full source: https://artifacts.apis.io/audiopod-ai/openapi/audiopod-ai-music-api-openapi.yml