Videos
A video is an individual video recording—an official music video, a performance capture, a lyric video, and so on. Videos are catalog assets in their own right: they carry their own metadata, credits, and rights, and they are distributed by assigning them to a release, exactly like tracks.
Video Type & Tags
videoType classifies the recording and is required:
| Value | Description |
|---|---|
officialVideo | The official music video released alongside the recording. |
performance | A performance capture—live, session, or studio. |
other | Anything else, such as lyric videos, visualizers, and remix videos. |
tags further describes the video and accepts any combination of officialMusicVideo, remix, lyric, live,
nonStandard, soundtrack, vertical, visualizer, and closedCaptioned.
When videoType is officialVideo, the tags array must include officialMusicVideo. For performance and other,
tags are optional.
Recording Versions
The recordingVersions array holds the video itself. Unlike tracks, a video has only one version type—standard—so the
array should contain at most one entry, whose files array holds a single video file.
The fileId is the uploadId returned by the Files API, and format must be mp4 or mov.
Technical properties (duration, bitDepth, sampleRate, bitrate, size, channels) are extracted from the file
during processing and should not be supplied by the caller.
A video file belongs to exactly one video. Referencing a file that another video already uses fails with “One or more
video file IDs are already assigned to a different video.”, and referencing a fileId that was never uploaded fails
with “One or more video files were not found.” Detaching a file—by updating the video without it—releases it for use
elsewhere.
The isrc for a version can be left null to have one generated automatically during distribution. You should never
generate a new ISRC for a video that already has one.
Video File Requirements
Uploads are validated when you call POST /files/v1/uploads/complete, not when the
session is created—so a file that fails these checks is rejected only after its bytes have been transferred.
| Requirement | Rule |
|---|---|
| Container | MP4 or MOV. Upload with content type video/mp4, video/quicktime, or video/mov. |
| Video codec | MP4 must carry H.264 or HEVC. MOV must carry ProRes. |
| Minimum resolution | 1280 × 720 (HD). |
| Minimum audio bitrate | 256,000 bps, when the file has an audio stream. |
| Minimum sample rate | 48,000 Hz, when the file has an audio stream. |
| Maximum file size | 30 GB. |
A file that violates one of these returns a 400 from Complete Upload.Files without an audio stream skip the audio
checks entirely.
Once a video file is accepted, it is transcoded asynchronously into a streamable MP4 rendition, regardless of the source
container. Renditions appear in the video’s encodedVideos array, and GET /catalog/v1/video-files/{videoFileId}/encoded-versions returns them for a source file directly.
Transcoding is tied to the file, not the video, and may still be in progress when you first retrieve the video. If
encodedVideos is empty, the encoding process may not have finished yet. Poll the video or the encoded-versions
endpoint when you need to wait for a rendition to become available.
Poster Images
A video carries two independent poster slots, both optional and both holding a fileId uploaded with the PosterImage
purpose:
framePosterImageId— a still lifted from the video itself. Required for distribution.customPosterImageId— artwork designed separately for the video. Optional.
The two are not interchangeable. framePosterImageId is the required distribution thumbnail, while
customPosterImageId is optional and may be supported differently by destinations.
Neither poster is generated for you. Poster images must be JPEG or PNG (PNG is converted to JPEG on upload, so the
stored file becomes image/jpeg with a .jpg extension), no larger than 10 MB, at least 1280 × 720, and within 2% of a
16:9 aspect ratio. A square image is rejected with “Poster image resolution 1400x1400 does not match the required 16:9
aspect ratio. Please upload a 16:9 image.”
Captions
Captions are uploaded with the VideoCaption purpose and attached through the captions array. Each entry requires a
fileId, the original fileName, and a languageId.
Supported formats are SCC (text/scc) and TTML (application/ttml+xml), both UTF-8 encoded only, up to 5 MB
per file. Apple Music expects SCC at 29.97 fps with a timecode format matching the source video.
Linked Audio Track
linkedTrackId links the video to an existing audio asset, associating streaming and royalty data across the two
formats so the same recording can be reconciled wherever it appears.
It is optional at the catalog level. Some destinations may require the link for distribution; for example, Spotify requires it for official music videos. See Validations. For managing the audio side, see Tracks.
Parental Advisory & Age Restriction
Two independent required fields describe advisory status. parentalAdvisory describes the content itself:
| Value | Meaning |
|---|---|
notExplicit | No explicit content, and not an edited version of an explicit original. |
clean | An edited version of an explicit original, with explicit language or visuals removed. The explicit version must exist and be linked. |
explicit | Contains explicit lyrics, language, or visuals. |
isAgeRestricted is a separate boolean marking the video as 18+. Set it to true when the video prominently features
any of the following in a prolonged or intense manner:
- Graphic, shocking, or violent content
- Sexual content or nudity
- Substance use, misuse, or abuse
- Suicide or self-harm, including disordered eating
- Repeated or prolonged visual profanity
The two fields are independent: a video can be notExplicit and still be age restricted, or explicit without being.
Ensure these are accurately identified. Misidentifying explicit content can result in your distribution being disabled.
Video Locking
A video inherits the most restrictive lockLevel across the releases it appears on:
fullyLockedif any of its releases is fully locked.- Otherwise,
partiallyLockedif any of its releases is partially locked. - Otherwise,
unlocked.
See the Lock Levels section on the Releases page for what makes a release partially or fully locked.
Distributing a Video
A video is distributed by assigning it to a release. Add its assetId (not its videoId) to the release’s assets
array with assetType set to video:
{
"assets": [{ "assetId": 4419901, "assetType": "video" }]
}
Videos and tracks can be mixed within the same assets array, and the array order determines the running order
delivered to DSPs. See Create Release for the full release payload.
To check this video on its own—before it joins a release, or while you are still working on it—call GET /supply-chain/v1/videos/{videoId}/validate. It checks the video’s own metadata without release context. To validate the video as part of a release, including requirements that depend on the release or its asset relationships, use GET /supply-chain/v1/releases/{releaseId}/deliver/validate. See Validations.
Archiving Videos
A video can be archived only when it is not associated with any active (unarchived) release.
Before archiving a video, all associated releases must therefore be either:
- Unlinked from the video, or
- Taken down from all stores and archived.
Data Deletion Warning: Six months after a video is archived, its video files are permanently deleted. You will receive an email notification two weeks before deletion.
Deleted video files cannot be restored, and the track cannot be unarchived after deletion. Archived tracks cannot be edited.
Create Video
/catalog/v1/videos Creates a new video asset.
Request Body *
object enterpriseId integer name * string version instead. version string phoneticName string phoneticVersion string languageAndScriptCode string phoneticName/phoneticVersion), not the main title (e.g., ja-Latn). Available values can be retrieved from GET /common/lookup/languageAndScriptCodes on the V1.0 API. Each code is paired with a specific language in that lookup—supply a code that matches the audioLanguageId you set on the video. framePosterImageId string PosterImage purpose. Required for distribution—this is the thumbnail DSPs receive. See the Poster Images section above for the resolution and aspect ratio rules. customPosterImageId string PosterImage purpose. Optional—it is delivered, but not every DSP accepts it, so it does not substitute for framePosterImageId. See the Poster Images section above for the resolution and aspect ratio rules. previewStartSeconds integer videoType * VideoTypes officialVideo, performance, other recordingType * RecordingTypes original, cover, publicDomain, undeclared parentalAdvisory * ParentalAdvisories notExplicit, clean, explicit isAgeRestricted * boolean parentalAdvisory. recordingProperties * TrackPropertyType[] none when no property applies. See Track Origin & Track Properties for details.none, remix, sampleStock, mixCompilation, altVersion, specialGenre, nonMusic, ai, noise, undeclared artistId * integer primaryMusicStyleId integer secondaryMusicStyleId integer catalog string copyrightP string [Year] [Rights Holder] (e.g., "2026 Acme Inc."). copyrightC string [Year] [Rights Holder] (e.g., "2026 Acme Inc."). metadataLanguageId * integer audioLanguageId integer linkedTrackId integer locals VideoLocalRequest[] languageId * integer name * string version string phoneticName string phoneticVersion string languageAndScriptCode string recordingVersions VideoRecordingItemModel[] isrc string null to have one generated automatically during distribution. recordingVersionType * VideoRecordingVersionTypes standard files VideoFileModel[] fileId * string format * VideoFileFormats mp4, mov filename string duration integer bitDepth integer sampleRate integer bitrate integer resolution string frameRate number size integer channels integer tags VideoTags[] officialMusicVideo when videoType is officialVideo; otherwise optional.officialMusicVideo, remix, lyric, live, nonStandard, soundtrack, vertical, visualizer, closedCaptioned captions VideoCaptionRequest[] videoCaptionId integer languageId * integer fileId * string VideoCaption purpose. fileName * string captions.scc). contributors ContributorItemModel[] artistId * integer roleId * integer composers ComposerItemModel[] composerId integer roleId * integer rightsId * integer 1 (copyright control / self-published), 2 (published, managed by a publisher), or 3 (public domain).1, 2, 3 publisherId integer rightsId is 2. share number compositions CompositionItemModel[] iswc string T followed by 10 digits (e.g., T1234567890). ISWCs are issued by your national or regional ISWC agency, usually through your local copyright or performing rights organisation—once a work is registered there you receive an ISWC for each composition.Responses
object videoId integer assetId integer name string | null version string | null phoneticName string | null phoneticVersion string | null languageAndScriptCode string | null framePosterImageId string | null customPosterImageId string | null previewStartSeconds integer | null videoType VideoTypes officialVideo, performance, other recordingType RecordingTypes original, cover, publicDomain, undeclared parentalAdvisory ParentalAdvisories notExplicit, clean, explicit catalog string | null copyrightP string | null copyrightC string | null metadataLanguageId integer | null audioLanguageId integer | null artistId integer | null primaryMusicStyleId integer | null secondaryMusicStyleId integer | null linkedTrackId integer | null null if the video is not linked to a track. tenantId integer enterpriseId integer creationDate string (date-time) | null lastUpdateDate string (date-time) | null archivedAt string (date-time) | null null if the video is active. locals VideoLocalItemModel[] | null languageId integer name string | null version string | null phoneticName string | null phoneticVersion string | null languageAndScriptCode string | null creationDate string (date-time) | null createdBy string | null recordingVersions VideoRecordingItemModel[] | null isrc string | null recordingVersionType VideoRecordingVersionTypes standard files VideoFileModel[] fileId string format VideoFileFormats mp4, mov filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p), extracted from the file during processing. frameRate number size integer | null channels integer | null tags VideoTags[] | null isAgeRestricted boolean recordingProperties TrackPropertyType[] | null captions VideoCaptionItemModel[] | null videoCaptionId integer languageId integer fileId string fileName string | null creationDate string (date-time) | null createdBy string | null encodedVideos VideoFileModel[] | null fileId string format VideoFileFormats mp4, regardless of the source container. filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p). frameRate number size integer | null channels integer | null contributors ContributorItemModel[] | null artistId * integer roleId * integer composers ComposerItemModel[] | null composerId integer roleId integer rightsId integer 1 (copyright control / self-published), 2 (published, managed by a publisher), or 3 (public domain).1, 2, 3 publisherId integer | null rightsId is 2; null otherwise. share number | null null. compositions CompositionItemModel[] | null iswc string | null acrCloud AcrCloudModel null if no scan has run yet. fileId string acrId string | null null until the scan completes. status AcrCloudScanStatus inProcessing, complete, error creationDate string (date-time) timestampUtc string (date-time) | null null until the scan completes. musicDetected integer | null duration integer | null error string | null null on success. isrc string | null null if the scan produced no match. scans object[] | null coverSongs object[] | null derivativeWorks object[] | null speechDetection object[] | null aiDetection object[] | null lockLevel AssetLockLevels unlocked, partiallyLocked, fullyLocked /catalog/v1/videos curl -X POST "https://platform.revelator.com/catalog/v1/videos" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Night Lights",
"version": "Official Video",
"videoType": "officialVideo",
"tags": ["officialMusicVideo", "closedCaptioned"],
"recordingType": "original",
"recordingProperties": ["none"],
"parentalAdvisory": "notExplicit",
"isAgeRestricted": false,
"artistId": 4402,
"primaryMusicStyleId": 17,
"metadataLanguageId": 1,
"audioLanguageId": 1,
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"linkedTrackId": 7701,
"previewStartSeconds": 10,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{ "fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13", "format": "mp4" }
]
}
],
"captions": [
{
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc"
}
],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"locals": []
}' curl -X POST "https://platform.revelator.com/catalog/v1/videos" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Night Lights",
"version": "Official Video",
"videoType": "officialVideo",
"tags": ["officialMusicVideo", "closedCaptioned"],
"recordingType": "original",
"recordingProperties": ["none"],
"parentalAdvisory": "notExplicit",
"isAgeRestricted": false,
"artistId": 4402,
"primaryMusicStyleId": 17,
"metadataLanguageId": 1,
"audioLanguageId": 1,
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"linkedTrackId": 7701,
"previewStartSeconds": 10,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{ "fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13", "format": "mp4" }
]
}
],
"captions": [
{
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc"
}
],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"locals": []
}' Example response 200
{
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"phoneticName": null,
"phoneticVersion": null,
"languageAndScriptCode": null,
"framePosterImageId": null,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"previewStartSeconds": 10,
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "notExplicit",
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"metadataLanguageId": 1,
"audioLanguageId": 1,
"artistId": 4402,
"primaryMusicStyleId": 17,
"secondaryMusicStyleId": null,
"linkedTrackId": 7701,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T09:11:47.334Z",
"archivedAt": null,
"locals": [],
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "night-lights.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 256000,
"resolution": null,
"frameRate": 0,
"size": 17839845,
"channels": 2
}
]
}
],
"tags": ["officialMusicVideo", "closedCaptioned"],
"isAgeRestricted": false,
"recordingProperties": ["none"],
"captions": [
{
"videoCaptionId": 184,
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc",
"creationDate": "2026-08-11T09:11:47.373Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000"
}
],
"encodedVideos": [],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"acrCloud": null,
"lockLevel": "unlocked"
} {
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"phoneticName": null,
"phoneticVersion": null,
"languageAndScriptCode": null,
"framePosterImageId": null,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"previewStartSeconds": 10,
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "notExplicit",
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"metadataLanguageId": 1,
"audioLanguageId": 1,
"artistId": 4402,
"primaryMusicStyleId": 17,
"secondaryMusicStyleId": null,
"linkedTrackId": 7701,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T09:11:47.334Z",
"archivedAt": null,
"locals": [],
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "night-lights.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 256000,
"resolution": null,
"frameRate": 0,
"size": 17839845,
"channels": 2
}
]
}
],
"tags": ["officialMusicVideo", "closedCaptioned"],
"isAgeRestricted": false,
"recordingProperties": ["none"],
"captions": [
{
"videoCaptionId": 184,
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc",
"creationDate": "2026-08-11T09:11:47.373Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000"
}
],
"encodedVideos": [],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"acrCloud": null,
"lockLevel": "unlocked"
} Get Video
Also available by asset ID. GET /catalog/v1/assets/videos/{assetId} returns this exact payload, keyed by the
video’s assetId instead of its videoId. See
Understanding Assets & IDs.
/catalog/v1/videos/{videoId} Retrieves a single video by its ID.
Path Parameters
| Parameter | Description |
|---|---|
videoId * integer | The ID of the video to retrieve. |
Responses
object videoId integer assetId integer name string | null version string | null phoneticName string | null phoneticVersion string | null languageAndScriptCode string | null framePosterImageId string | null customPosterImageId string | null previewStartSeconds integer | null videoType VideoTypes officialVideo, performance, other recordingType RecordingTypes original, cover, publicDomain, undeclared parentalAdvisory ParentalAdvisories notExplicit, clean, explicit catalog string | null copyrightP string | null copyrightC string | null metadataLanguageId integer | null audioLanguageId integer | null artistId integer | null primaryMusicStyleId integer | null secondaryMusicStyleId integer | null linkedTrackId integer | null null if the video is not linked to a track. tenantId integer enterpriseId integer creationDate string (date-time) | null lastUpdateDate string (date-time) | null archivedAt string (date-time) | null null if the video is active. locals VideoLocalItemModel[] | null languageId integer name string | null version string | null phoneticName string | null phoneticVersion string | null languageAndScriptCode string | null creationDate string (date-time) | null createdBy string | null recordingVersions VideoRecordingItemModel[] | null isrc string | null recordingVersionType VideoRecordingVersionTypes standard files VideoFileModel[] fileId string format VideoFileFormats mp4, mov filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p), extracted from the file during processing. frameRate number size integer | null channels integer | null tags VideoTags[] | null isAgeRestricted boolean recordingProperties TrackPropertyType[] | null captions VideoCaptionItemModel[] | null videoCaptionId integer languageId integer fileId string fileName string | null creationDate string (date-time) | null createdBy string | null encodedVideos VideoFileModel[] | null fileId string format VideoFileFormats mp4. filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p). frameRate number size integer | null channels integer | null contributors ContributorItemModel[] | null artistId * integer roleId * integer composers ComposerItemModel[] | null composerId integer roleId integer rightsId integer 1 (copyright control / self-published), 2 (published, managed by a publisher), or 3 (public domain).1, 2, 3 publisherId integer | null rightsId is 2; null otherwise. share number | null null. compositions CompositionItemModel[] | null iswc string | null acrCloud AcrCloudModel null if no scan has run yet. fileId string acrId string | null null until the scan completes. status AcrCloudScanStatus inProcessing, complete, error creationDate string (date-time) timestampUtc string (date-time) | null null until the scan completes. musicDetected integer | null duration integer | null error string | null null on success. isrc string | null null if the scan produced no match. scans object[] | null coverSongs object[] | null derivativeWorks object[] | null speechDetection object[] | null aiDetection object[] | null lockLevel AssetLockLevels unlocked, partiallyLocked, fullyLocked /catalog/v1/videos/{videoId} curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"phoneticName": null,
"phoneticVersion": null,
"languageAndScriptCode": null,
"framePosterImageId": null,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"previewStartSeconds": 10,
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "notExplicit",
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"metadataLanguageId": 1,
"audioLanguageId": 1,
"artistId": 4402,
"primaryMusicStyleId": 17,
"secondaryMusicStyleId": null,
"linkedTrackId": 7701,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T09:11:47.334Z",
"archivedAt": null,
"locals": [],
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "night-lights.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 256000,
"resolution": null,
"frameRate": 0,
"size": 17839845,
"channels": 2
}
]
}
],
"tags": ["officialMusicVideo", "closedCaptioned"],
"isAgeRestricted": false,
"recordingProperties": ["none"],
"captions": [
{
"videoCaptionId": 184,
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc",
"creationDate": "2026-08-11T09:11:47.373Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000"
}
],
"encodedVideos": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13_streamable.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 2276,
"resolution": "1080p",
"frameRate": 24,
"size": 3422218,
"channels": 2
}
],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"acrCloud": null,
"lockLevel": "unlocked"
} {
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"phoneticName": null,
"phoneticVersion": null,
"languageAndScriptCode": null,
"framePosterImageId": null,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"previewStartSeconds": 10,
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "notExplicit",
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"metadataLanguageId": 1,
"audioLanguageId": 1,
"artistId": 4402,
"primaryMusicStyleId": 17,
"secondaryMusicStyleId": null,
"linkedTrackId": 7701,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T09:11:47.334Z",
"archivedAt": null,
"locals": [],
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "night-lights.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 256000,
"resolution": null,
"frameRate": 0,
"size": 17839845,
"channels": 2
}
]
}
],
"tags": ["officialMusicVideo", "closedCaptioned"],
"isAgeRestricted": false,
"recordingProperties": ["none"],
"captions": [
{
"videoCaptionId": 184,
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc",
"creationDate": "2026-08-11T09:11:47.373Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000"
}
],
"encodedVideos": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13_streamable.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 2276,
"resolution": "1080p",
"frameRate": 24,
"size": 3422218,
"channels": 2
}
],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"acrCloud": null,
"lockLevel": "unlocked"
} List Videos
/catalog/v1/videos Returns a paginated list of videos based on filters and sorting options.
Query Parameters
| Parameter | Description |
|---|---|
videoType string | Filter by video classification. Examples: officialVideo, performance, other |
archived boolean | Filter by archive state ( |
artistIds integer[] | Filter by one or more primary artist IDs. Maximum 100 IDs per request. |
creationDateFrom string (date-time) | Include videos created on or after this UTC date-time. |
creationDateTo string (date-time) | Include videos created on or before this UTC date-time. |
lastUpdateDateFrom string (date-time) | Include videos updated on or after this UTC date-time. |
lastUpdateDateTo string (date-time) | Include videos updated on or before this UTC date-time. |
isrcs string[] | Filter by one or more ISRC codes. Maximum 100 per request. |
upcs string[] | Filter to videos belonging to releases with the given UPC codes. Maximum 100 per request. |
musicStyleIds integer[] | Filter by one or more primary music style IDs. Retrieved from GET /common/lookup/musicstyles on the V1.0 API. Maximum 100 IDs per request. |
linkedTrackIds integer[] | Filter to videos linked to the given track IDs. Maximum 100 IDs per request. |
releaseAssetIds integer[] | Filter to videos that belong to a release with one of the given asset IDs. Pass the release's |
physicalReleaseAssetIds integer[] | Filter to videos that belong to a physical release with one of the given asset IDs. Pass the physical release's |
assetIds integer[] | Filter by the videos' own asset IDs—the |
videoIds integer[] | Filter by one or more video IDs. |
archivedDateFrom string (date-time) | Include videos archived on or after this UTC date-time. |
archivedDateTo string (date-time) | Include videos archived on or before this UTC date-time. |
enterpriseIds integer[] | Filter by one or more client IDs. Maximum 100 IDs per request. |
labelIds integer[] | Filter by one or more label IDs. Maximum 100 IDs per request. |
lockLevel string | Filter by edit permission level. See the Video Locking section above. Examples: unlocked, partiallyLocked, fullyLocked |
metadataLanguageIds integer[] | Filter by one or more language IDs. Maximum 100 IDs per request. Retrieved from GET /common/lookup/languages on the V1.0 API. |
audioLanguageIds integer[] | Filter by one or more audio language IDs. Maximum 100 IDs per request. Retrieved from GET /common/lookup/languages on the V1.0 API. |
missingVideoFile boolean | Filter to videos missing a source video file ( |
parentalAdvisory string | Filter by advisory label. See the Parental Advisory & Age Restriction section above. Examples: notExplicit, clean, explicit |
searchText string | Free-text search applied to video name and other supported fields. |
pageNumber integer | Page number for paginated results. |
pageSize integer | Number of items per page. |
orderByProperty string | Property name used for sorting. Must be one of the listed values. Examples: videoId, name, artistName, enterpriseName, creationDate, lastUpdateDate, archivedAt |
orderByDescending boolean | Set to |
Responses
object pageNumber integer pageSize integer totalItemsCount integer totalPagesCount number items VideoListModel[] videoId integer assetId integer name string | null version string | null phoneticName string | null metadataLanguageId integer | null metadataLanguageName string | null audioLanguageId integer | null audioLanguageName string | null languageAndScriptCode string | null videoType VideoTypes officialVideo, performance, other recordingType RecordingTypes original, cover, publicDomain, undeclared parentalAdvisory ParentalAdvisories notExplicit, clean, explicit catalog string | null copyrightP string | null copyrightC string | null artistName string | null artistId integer | null tenantId integer enterpriseId integer enterpriseName string | null primaryMusicStyleId integer | null primaryMusicStyleName string | null secondaryMusicStyleId integer | null secondaryMusicStyleName string | null linkedTrackId integer | null linkedTrackName string | null posterImageId string | null createdBy string | null recordingVersions VideoRecordingItemModel[] | null isrc string | null recordingVersionType VideoRecordingVersionTypes standard files VideoFileModel[] fileId string format VideoFileFormats mp4, mov filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p), extracted from the file during processing. frameRate number size integer | null channels integer | null isAgeRestricted boolean creationDate string (date-time) | null lastUpdateDate string (date-time) | null archivedAt string (date-time) | null null if the video is active. releasesCount integer acrCloud AcrCloudModel null if no scan has run yet. fileId string acrId string | null null until the scan completes. status AcrCloudScanStatus inProcessing, complete, error creationDate string (date-time) timestampUtc string (date-time) | null null until the scan completes. musicDetected integer | null duration integer | null error string | null null on success. isrc string | null null if the scan produced no match. scans object[] | null coverSongs object[] | null derivativeWorks object[] | null speechDetection object[] | null aiDetection object[] | null lockLevel AssetLockLevels unlocked, partiallyLocked, fullyLocked contributors ContributorListModel[] | null artistId integer roleId integer artistName string | null /catalog/v1/videos curl -X GET "https://platform.revelator.com/catalog/v1/videos?pageNumber=1&pageSize=20&videoType=officialVideo&orderByProperty=creationDate&orderByDescending=true" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/videos?pageNumber=1&pageSize=20&videoType=officialVideo&orderByProperty=creationDate&orderByDescending=true" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"pageNumber": 1,
"pageSize": 20,
"totalItemsCount": 1,
"totalPagesCount": 1,
"items": [
{
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"phoneticName": null,
"metadataLanguageId": 1,
"metadataLanguageName": "English",
"audioLanguageId": 1,
"audioLanguageName": "English",
"languageAndScriptCode": null,
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "notExplicit",
"catalog": "NLR-0042",
"copyrightP": "2024 Northline Records",
"copyrightC": "2024 Northline Records",
"artistName": "Nova Days",
"artistId": 4402,
"tenantId": 2001,
"enterpriseId": 3001,
"enterpriseName": "Client Name",
"primaryMusicStyleId": 17,
"primaryMusicStyleName": "Electronic",
"secondaryMusicStyleId": null,
"secondaryMusicStyleName": null,
"linkedTrackId": 7701,
"linkedTrackName": "Night Lights",
"posterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "night-lights.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 256000,
"resolution": null,
"frameRate": 0,
"size": 17839845,
"channels": 2
}
]
}
],
"isAgeRestricted": false,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T09:11:47.334Z",
"archivedAt": null,
"releasesCount": 1,
"acrCloud": null,
"lockLevel": "unlocked",
"contributors": [
{ "artistId": 4409, "roleId": 12, "artistName": "Mara Quinn" }
]
}
]
} {
"pageNumber": 1,
"pageSize": 20,
"totalItemsCount": 1,
"totalPagesCount": 1,
"items": [
{
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"phoneticName": null,
"metadataLanguageId": 1,
"metadataLanguageName": "English",
"audioLanguageId": 1,
"audioLanguageName": "English",
"languageAndScriptCode": null,
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "notExplicit",
"catalog": "NLR-0042",
"copyrightP": "2024 Northline Records",
"copyrightC": "2024 Northline Records",
"artistName": "Nova Days",
"artistId": 4402,
"tenantId": 2001,
"enterpriseId": 3001,
"enterpriseName": "Client Name",
"primaryMusicStyleId": 17,
"primaryMusicStyleName": "Electronic",
"secondaryMusicStyleId": null,
"secondaryMusicStyleName": null,
"linkedTrackId": 7701,
"linkedTrackName": "Night Lights",
"posterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "night-lights.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 256000,
"resolution": null,
"frameRate": 0,
"size": 17839845,
"channels": 2
}
]
}
],
"isAgeRestricted": false,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T09:11:47.334Z",
"archivedAt": null,
"releasesCount": 1,
"acrCloud": null,
"lockLevel": "unlocked",
"contributors": [
{ "artistId": 4409, "roleId": 12, "artistName": "Mara Quinn" }
]
}
]
} Update Video
/catalog/v1/videos/{videoId} Updates an existing video by its ID. Replaces the entire video—fields omitted from the payload are cleared.
Path Parameters
| Parameter | Description |
|---|---|
videoId * integer | The ID of the video to update. |
Request Body *
object enterpriseId integer videoId regardless of client. name * string version string phoneticName string phoneticVersion string languageAndScriptCode string ja-Latn). Available values can be retrieved from GET /common/lookup/languageAndScriptCodes on the V1.0 API. Supply a code that matches the audioLanguageId set on the video. framePosterImageId string customPosterImageId string previewStartSeconds integer videoType * VideoTypes officialVideo, performance, other recordingType * RecordingTypes original, cover, publicDomain, undeclared parentalAdvisory * ParentalAdvisories notExplicit, clean, explicit isAgeRestricted * boolean recordingProperties * TrackPropertyType[] none when no property applies. artistId * integer primaryMusicStyleId integer secondaryMusicStyleId integer catalog string copyrightP string [Year] [Rights Holder] (e.g., "2026 Acme Inc."). copyrightC string [Year] [Rights Holder] (e.g., "2026 Acme Inc."). metadataLanguageId * integer audioLanguageId integer linkedTrackId integer locals VideoLocalRequest[] languageId * integer name * string version string phoneticName string phoneticVersion string languageAndScriptCode string recordingVersions VideoRecordingItemModel[] fileId when you are editing unrelated fields—omitting the array detaches the video file from the asset and frees it for use on another video. isrc string null to have one generated automatically during distribution. recordingVersionType * VideoRecordingVersionTypes standard files VideoFileModel[] fileId * string format * VideoFileFormats mp4, mov filename string duration integer bitDepth integer sampleRate integer bitrate integer resolution string frameRate number size integer channels integer tags VideoTags[] officialMusicVideo when videoType is officialVideo. Omitting the array clears all existing tags. captions VideoCaptionRequest[] videoCaptionId to retain an existing entry. Omitting the array removes all captions. videoCaptionId integer languageId * integer fileId * string VideoCaption purpose. fileName * string captions.scc). contributors ContributorItemModel[] artistId * integer roleId * integer composers ComposerItemModel[] composerId integer roleId * integer rightsId * integer 1 (copyright control / self-published), 2 (published, managed by a publisher), or 3 (public domain).1, 2, 3 publisherId integer rightsId is 2. share number compositions CompositionItemModel[] iswc string T followed by 10 digits (e.g., T1234567890). ISWCs are issued by your national or regional ISWC agency, usually through your local copyright or performing rights organisation—once a work is registered there you receive an ISWC for each composition.Responses
object videoId integer assetId integer name string | null version string | null phoneticName string | null phoneticVersion string | null languageAndScriptCode string | null framePosterImageId string | null customPosterImageId string | null previewStartSeconds integer | null videoType VideoTypes officialVideo, performance, other recordingType RecordingTypes original, cover, publicDomain, undeclared parentalAdvisory ParentalAdvisories notExplicit, clean, explicit catalog string | null copyrightP string | null copyrightC string | null metadataLanguageId integer | null audioLanguageId integer | null artistId integer | null primaryMusicStyleId integer | null secondaryMusicStyleId integer | null linkedTrackId integer | null null if the video is not linked to a track. tenantId integer enterpriseId integer creationDate string (date-time) | null lastUpdateDate string (date-time) | null archivedAt string (date-time) | null null if the video is active. locals VideoLocalItemModel[] | null languageId integer name string | null version string | null phoneticName string | null phoneticVersion string | null languageAndScriptCode string | null creationDate string (date-time) | null createdBy string | null recordingVersions VideoRecordingItemModel[] | null isrc string | null recordingVersionType VideoRecordingVersionTypes standard files VideoFileModel[] fileId string format VideoFileFormats mp4, mov filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p), extracted from the file during processing. frameRate number size integer | null channels integer | null tags VideoTags[] | null isAgeRestricted boolean recordingProperties TrackPropertyType[] | null captions VideoCaptionItemModel[] | null videoCaptionId integer languageId integer fileId string fileName string | null creationDate string (date-time) | null createdBy string | null encodedVideos VideoFileModel[] | null fileId string format VideoFileFormats mp4. filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p). frameRate number size integer | null channels integer | null contributors ContributorItemModel[] | null artistId * integer roleId * integer composers ComposerItemModel[] | null composerId integer roleId integer rightsId integer 1 (copyright control / self-published), 2 (published, managed by a publisher), or 3 (public domain).1, 2, 3 publisherId integer | null rightsId is 2; null otherwise. share number | null null. compositions CompositionItemModel[] | null iswc string | null acrCloud AcrCloudModel null if no scan has run yet. fileId string acrId string | null null until the scan completes. status AcrCloudScanStatus inProcessing, complete, error creationDate string (date-time) timestampUtc string (date-time) | null null until the scan completes. musicDetected integer | null duration integer | null error string | null null on success. isrc string | null null if the scan produced no match. scans object[] | null coverSongs object[] | null derivativeWorks object[] | null speechDetection object[] | null aiDetection object[] | null lockLevel AssetLockLevels unlocked, partiallyLocked, fullyLocked /catalog/v1/videos/{videoId} curl -X PUT "https://platform.revelator.com/catalog/v1/videos/4501" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Night Lights",
"version": "Official Video",
"videoType": "officialVideo",
"tags": ["officialMusicVideo", "closedCaptioned"],
"recordingType": "original",
"recordingProperties": ["none"],
"parentalAdvisory": "explicit",
"isAgeRestricted": true,
"artistId": 4402,
"primaryMusicStyleId": 17,
"metadataLanguageId": 1,
"audioLanguageId": 1,
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"linkedTrackId": 7701,
"previewStartSeconds": 10,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{ "fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13", "format": "mp4" }
]
}
],
"captions": [
{
"videoCaptionId": 184,
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc"
}
],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"locals": []
}' curl -X PUT "https://platform.revelator.com/catalog/v1/videos/4501" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Night Lights",
"version": "Official Video",
"videoType": "officialVideo",
"tags": ["officialMusicVideo", "closedCaptioned"],
"recordingType": "original",
"recordingProperties": ["none"],
"parentalAdvisory": "explicit",
"isAgeRestricted": true,
"artistId": 4402,
"primaryMusicStyleId": 17,
"metadataLanguageId": 1,
"audioLanguageId": 1,
"catalog": "NR-2026-014",
"copyrightP": "2026 Northline Records",
"copyrightC": "2026 Northline Records",
"linkedTrackId": 7701,
"previewStartSeconds": 10,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"recordingVersions": [
{
"isrc": "QZ8AB2600011",
"recordingVersionType": "standard",
"files": [
{ "fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13", "format": "mp4" }
]
}
],
"captions": [
{
"videoCaptionId": 184,
"languageId": 1,
"fileId": "c5a1e703-9b24-4f68-a1d7-83e5f0b2c419",
"fileName": "night-lights.scc"
}
],
"contributors": [
{ "artistId": 4410, "roleId": 5 }
],
"composers": [
{ "composerId": 6601, "roleId": 2, "rightsId": 2, "publisherId": 3301, "share": 100 }
],
"compositions": [],
"locals": []
}' Example response 200
{
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "explicit",
"isAgeRestricted": true,
"artistId": 4402,
"linkedTrackId": 7701,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"previewStartSeconds": 10,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T10:02:15.907Z",
"archivedAt": null,
"tags": ["officialMusicVideo", "closedCaptioned"],
"recordingProperties": ["none"],
"acrCloud": null,
"lockLevel": "unlocked"
} {
"videoId": 4501,
"assetId": 4419901,
"name": "Night Lights",
"version": "Official Video",
"videoType": "officialVideo",
"recordingType": "original",
"parentalAdvisory": "explicit",
"isAgeRestricted": true,
"artistId": 4402,
"linkedTrackId": 7701,
"customPosterImageId": "3b7e9a1c-4d5f-4a2b-8c6e-1d0f2a4b6c88",
"previewStartSeconds": 10,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-08-11T09:11:47.334Z",
"lastUpdateDate": "2026-08-11T10:02:15.907Z",
"archivedAt": null,
"tags": ["officialMusicVideo", "closedCaptioned"],
"recordingProperties": ["none"],
"acrCloud": null,
"lockLevel": "unlocked"
} List Video Contributors
/catalog/v1/videos/{videoId}/contributors Retrieves the full artist records for every contributing artist credited on the video.
Path Parameters
| Parameter | Description |
|---|---|
videoId * integer | The ID of the video. |
Responses
object[] artistId integer name string | null firstName string | null middleName string | null lastName string | null logoImageId string | null tenantId integer enterpriseId integer enterpriseName string | null hasPortal boolean isni string | null languageAndScriptCode string | null creationDate string (date-time) lastUpdateDate string (date-time) archivedAt string (date-time) | null null if the artist is active. externalIds ArtistExternalIdItemModel[] | null profileId string | null distributorStoreId integer | null musicStyleIds integer[] | null /catalog/v1/videos/{videoId}/contributors curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501/contributors" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501/contributors" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
[
{
"artistId": 4410,
"name": "DJ Prism",
"firstName": null,
"middleName": null,
"lastName": null,
"logoImageId": null,
"tenantId": 2001,
"enterpriseId": 3001,
"enterpriseName": "Client Name",
"hasPortal": false,
"isni": null,
"creationDate": "2023-11-01T09:00:00Z",
"lastUpdateDate": "2024-03-10T14:20:00Z",
"archivedAt": null,
"externalIds": [
{ "profileId": "5NHQUkpP4tlGGBDNhrE7xx", "distributorStoreId": 9 }
],
"musicStyleIds": [17]
}
] [
{
"artistId": 4410,
"name": "DJ Prism",
"firstName": null,
"middleName": null,
"lastName": null,
"logoImageId": null,
"tenantId": 2001,
"enterpriseId": 3001,
"enterpriseName": "Client Name",
"hasPortal": false,
"isni": null,
"creationDate": "2023-11-01T09:00:00Z",
"lastUpdateDate": "2024-03-10T14:20:00Z",
"archivedAt": null,
"externalIds": [
{ "profileId": "5NHQUkpP4tlGGBDNhrE7xx", "distributorStoreId": 9 }
],
"musicStyleIds": [17]
}
] List Video Composers
/catalog/v1/videos/{videoId}/composers Retrieves the full composer records for every composer credited on the video.
Path Parameters
| Parameter | Description |
|---|---|
videoId * integer | The ID of the video. |
Responses
object[] composerId integer tenantId integer enterpriseId integer name string | null logoImageId string | null isni string | null ipiCae string | null countryOfResidenceId integer | null creationDate string (date-time) createdBy string | null lastUpdateDate string (date-time) | null null if the composer has never been updated. lastUpdatedBy string | null null if the composer has never been updated. archivedAt string (date-time) | null null if the composer is active. archivedBy string | null null if the composer is active. roles ComposerRoleItemModel[] | null roleId integer name string | null /catalog/v1/videos/{videoId}/composers curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501/composers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501/composers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
[
{
"composerId": 6601,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Composer",
"logoImageId": null,
"isni": null,
"ipiCae": "00000001111",
"countryOfResidenceId": 244,
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-02-01T08:20:10Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
}
] [
{
"composerId": 6601,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Composer",
"logoImageId": null,
"isni": null,
"ipiCae": "00000001111",
"countryOfResidenceId": 244,
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-02-01T08:20:10Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
}
] List Video Publishers
/catalog/v1/videos/{videoId}/publishers Retrieves the full publisher records for every publisher associated with the video's composer credits.
Path Parameters
| Parameter | Description |
|---|---|
videoId * integer | The ID of the video. |
Responses
object[] publisherId integer tenantId integer enterpriseId integer name string | null logoImageId string | null ipiCae string | null countryId integer | null creationDate string (date-time) lastUpdateDate string (date-time) | null null if the publisher has never been updated. archivedAt string (date-time) | null null if the publisher is active. archivedBy string | null null if the publisher is active./catalog/v1/videos/{videoId}/publishers curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501/publishers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/videos/4501/publishers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
[
{
"publisherId": 3301,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Publisher",
"logoImageId": null,
"ipiCae": "123456",
"countryId": 875,
"creationDate": "2025-12-11T12:06:28Z",
"lastUpdateDate": "2026-07-20T13:33:31.867Z",
"archivedAt": null,
"archivedBy": null
}
] [
{
"publisherId": 3301,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Publisher",
"logoImageId": null,
"ipiCae": "123456",
"countryId": 875,
"creationDate": "2025-12-11T12:06:28Z",
"lastUpdateDate": "2026-07-20T13:33:31.867Z",
"archivedAt": null,
"archivedBy": null
}
] Get Encoded Versions
/catalog/v1/video-files/{videoFileId}/encoded-versions Retrieves the streamable renditions generated from a source video file.
Path Parameters
| Parameter | Description |
|---|---|
videoFileId * string | The file ID (GUID) of the source video file, as returned in the video's |
Responses
object[] fileId string format VideoFileFormats mp4, regardless of the source container.mp4 filename string | null duration integer | null bitDepth integer | null sampleRate integer | null bitrate integer | null resolution string | null 1080p). frameRate number size integer | null channels integer | null /catalog/v1/video-files/{videoFileId}/encoded-versions curl -X GET "https://platform.revelator.com/catalog/v1/video-files/8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13/encoded-versions" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/video-files/8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13/encoded-versions" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
[
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13_streamable.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 2276,
"resolution": "1080p",
"frameRate": 24,
"size": 3422218,
"channels": 2
}
] [
{
"fileId": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13",
"format": "mp4",
"filename": "8f3c1d2e-5a7b-4c9d-b0e1-2f4a6c8d0e13_streamable.mp4",
"duration": 30,
"bitDepth": null,
"sampleRate": 48000,
"bitrate": 2276,
"resolution": "1080p",
"frameRate": 24,
"size": 3422218,
"channels": 2
}
] Archive Videos
/catalog/v1/videos/archive Archives videos in batch by their universal asset IDs.
Request Body *
object assetIds * integer[] assetId values, not videoId values.Responses
object results ArchiveResult[] id integer succeeded boolean errors ArchiveResultError[] | null null when succeeded is true. code string message string /catalog/v1/videos/archive curl -X POST "https://platform.revelator.com/catalog/v1/videos/archive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assetIds": [4419901, 4419902]
}' curl -X POST "https://platform.revelator.com/catalog/v1/videos/archive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assetIds": [4419901, 4419902]
}' Example response 200
{
"results": [
{
"id": 4419901,
"succeeded": true,
"errors": null
},
{
"id": 4419902,
"succeeded": true,
"errors": null
}
]
} {
"results": [
{
"id": 4419901,
"succeeded": true,
"errors": null
},
{
"id": 4419902,
"succeeded": true,
"errors": null
}
]
} Unarchive Videos
/catalog/v1/videos/unarchive Unarchives videos in batch by their universal asset IDs.
Request Body *
object assetIds * integer[] assetId values, not videoId values.Responses
object results UnarchiveResult[] id integer succeeded boolean errors UnarchiveResultError[] | null null when succeeded is true. code string message string /catalog/v1/videos/unarchive curl -X POST "https://platform.revelator.com/catalog/v1/videos/unarchive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assetIds": [4419901, 4419902]
}' curl -X POST "https://platform.revelator.com/catalog/v1/videos/unarchive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"assetIds": [4419901, 4419902]
}' Example response 200
{
"results": [
{
"id": 4419901,
"succeeded": true,
"errors": null
},
{
"id": 4419902,
"succeeded": true,
"errors": null
}
]
} {
"results": [
{
"id": 4419901,
"succeeded": true,
"errors": null
},
{
"id": 4419902,
"succeeded": true,
"errors": null
}
]
}