Skip to main content

Clips Basics

Clips Basics

Discover Clips Through Collections

Collections are thematic groupings of music clips that are developed and maintained by Feed's Curation team and available for end users to browse through via the Clips API. This is the primary way for users to discover music within your app. You can browse through all of the available Collections in Clips Studio, and choose which ones to include in your app by id when you fetch Collections.

The /collections and /collection endpoints return a list of all clipIds and trackIds in given Collections. These ids are used to make a request for a clip (via /music-fetch) or full track (via /track-fetch). Learn more about the Collections endpoints here.

Response Format

All API responses follow a consistent structure:

  • Success responses return { "success": true, "data": ... } where data contains the requested information.
  • Error responses return { "success": false, "failureCode": "...", "message": "...", "errorData": { ... } }.

For list endpoints (like /music-fetch and /collections), the list itself is wrapped in a success envelope, and each item in the list is also individually wrapped. This allows for partial failures where some items succeed and others fail.

For detailed information about error handling, failure codes, and error messages, see Error Handling.

Clip Types

Feed Clips offers two types of clips:

  • Curated Clips: These are pre-made, ready-to-use clips. Our curation team selected the best, most representative portion of each song, making these curated clips ideal for quick and easy integration. Consider using these by default.
  • Custom Clips: For a more interactive experience, you can allow users to create their own clips from full-length tracks. The maximum length for a custom clip is 60 seconds.

Audio Formats

We provide audio in the following formats:

TypeFormatDescription
Full-Length Track320k MP4Original source file, used for custom clipping.
Full-Length Track128k AACTranscoded for general use.
Full-Length Track128k MP3Transcoded for general use.
Curated Clip128k AACPre-made clips.
Custom Clip128k AACClips generated on-demand by users.

Fetching a Music Clip

To get a music clip, you send a request with one or more clipIds. Our API will return the metadata and a signed URL for each requested clip.

You can access a song's clipId from the response body of a /collections or /collection request.

POST /music-fetch

Request Body:

{
"clientId": "YOUR_CLIENT_ID",
“clipIds": [1, 2],
"format": "aac:128",
}

Response:

{
"success": true,
"data": [
{
"success": true,
"data": {
"clipId": 2,
"preSignedUrl": "...",
"artworkPreSignedUrl": "...",
"expiresAt": "2025-11-22T23:56:38.030Z",
"title": "Test Track",
"artist": "Test Artist",
"release": "Test Release",
"bitrate": 128,
"encoding": "mp3",
"isrc": "TEST123",
"feedAudioFileId": 1,
"explicitness": "explicit"
}
},
{
"success": false,
"message": "clip 2 not found or no transcode available",
"failureCode": "CLIP_NOT_FOUND"
}
]
}

Note: If a clip cannot be retrieved, its corresponding entry in the response array will be success: false.

Format Options:

  • "aac:128" - AAC format at 128kbps
  • "mp4:320" - MP4 format at 320kbps
  • "mp3:128" - MP3 format at 128kbps (default)

Fetching a Full Track

To get a full track for creating custom clips, use the track-fetch endpoint with the relevant trackId in the request. If the track already has a curated clip provided by Feed, it will be included in the track.curatedClip property. Otherwise, track.curatedClip will be null. When provided, this object contains the start and stop offsets in milliseconds (ms), so you can default the custom clipping interface in your app to begin with the curated clip start/end points. See our How-To: Starting With the Curated Clip for more information.

POST /track-fetch

Request Body:

{
"clientId": "YOUR_CLIENT_ID",
“trackId": 1,
"format": "aac:128",
}

Response:

  "success": true,
"data": {
"trackUrl": "https://...",
"expiresAt": "2025-11-23T00:03:24.903Z",
"title": "Test Track",
"artist": "Test Artist",
"release": "Test Release",
"artworkUrl": "https://...",
"isrc": "TEST123",
"feedAudioFileId": 1,
"explicitness": "explicit",
"curatedClip": {
"startMs": "36253",
"stopMs": "66253",
"id": "1"
}
}
}

Creating a Custom Clip

To create a custom clip, you need the trackId and the desired start and end times in seconds.

POST /clip

Request Body:

{  
"clientId": "YOUR_CLIENT_ID",
"trackId": 789,
"start": 30.5,
"end": 90.5
}

Response:

{  
"success": true,
"data": {
"message": "Clip created successfully.",
"clipId": "13"
}
}

You can then use the clipId from the response to make a subsequent /music-fetch request for the custom clip's URL.

Checking Music Playability

Before playing a clip, especially one that has been synced to video, you must check if it's still available for playback. For more information about how and when to use this endpoint, see Clearing Clips for Playback.

POST /music-check

Request Body:

{  
"clipIds": "[1, 2, 3, 4]"
}

Response:

An array of clipIds without rights to be played.

{
"success": true,
"data": {
"clipIds": "[1, 2, 3, 4]"
}
}