Audio
Video posts and scheduled reels reference their soundtrack by id, never by URL —
videoSettings.audioId on generate /
import, and
postSettings.audioId when scheduling.
These endpoints are how you resolve that id, and how you clean up files you no longer need.
Uploading is done in the PostNitro app. The API lists and deletes audio; it does not upload it. Add tracks in the video maker, then read their ids here.
List audio
GET https://embed-api.postnitro.ai/audio
Returns the audio files in the workspace attached to your API key, newest first.
Headers
embed-api-key: your-api-key-here(required)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default 1) |
limit | number | No | Results per page (default 10, max 100) |
Example Request
curl --location 'https://embed-api.postnitro.ai/audio' \
--header 'embed-api-key: pn-your-api-key'Response
{
"success": true,
"data": {
"audios": [
{
"id": "cmskuke0u0001v0pl4zwi5pc4",
"name": "kontraa-water-afro-pop-music",
"url": "https://<storage-host>/media/audio/f23bd7ad-...-kontraa-water-afro-pop-music.mp3",
"duration": 69.87,
"artistName": "User Upload",
"source": "upload",
"createdAt": "2026-08-08T20:49:38.814Z"
}
]
}
}| Field | Type | Description |
|---|---|---|
id | string | The value to pass as videoSettings.audioId / postSettings.audioId |
name | string | Track title, falling back to the original filename |
url | string | Public URL of the file. Useful for previewing — the API still wants the id |
duration | number | null | Track length in seconds; null when the uploader didn’t record one |
artistName | string | null | Artist, when the source provided one |
source | string | Where the file came from, e.g. "upload" |
createdAt | string | ISO-8601 upload time |
An empty library returns 200 with "audios": [] — it isn’t an error.
A track’s
durationis independent ofvideoSettings.videoDuration: the video is rendered to the duration you ask for, and a longer track is simply cut off at that point.
Delete audio
DELETE https://embed-api.postnitro.ai/audio/{id}
Permanently deletes the audio record and the stored file. This cannot be undone.
Headers
embed-api-key: your-api-key-here(required)
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The audio id (from List audio) |
Example Request
curl --location --request DELETE 'https://embed-api.postnitro.ai/audio/cmskuke0u0001v0pl4zwi5pc4' \
--header 'embed-api-key: pn-your-api-key'Response
{
"success": true,
"message": "Audio deleted successfully"
}Errors
| Status | Message | When |
|---|---|---|
404 | Audio not found | No such id in your workspace, or the id points at an image or other non-audio file |
400 | Audio is used in scheduled posts and cannot be deleted. Remove it from those posts first. | A scheduled post’s postSettings.audioId still references it |
500 | Error deleting audio file | The stored file could not be removed; nothing was deleted, so the call can be retried |
Why a scheduled post blocks deletion: a reel resolves its audio when it publishes, so
deleting the track first would leave that post silently without a soundtrack. Videos already
rendered to MP4 are unaffected — their audio is baked into the file, so deleting the source
track never changes an existing render.