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": ... }wheredatacontains 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:
| Type | Format | Description |
|---|---|---|
| Full-Length Track | 320k MP4 | Original source file, used for custom clipping. |
| Full-Length Track | 128k AAC | Transcoded for general use. |
| Full-Length Track | 128k MP3 | Transcoded for general use. |
| Curated Clip | 128k AAC | Pre-made clips. |
| Custom Clip | 128k AAC | Clips 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]"
}
}