Safelisting
Safelisting protects your end users' content from copyright claims on platforms like YouTube, Instagram, and TikTok. Through the Safelisting API, you can programmatically create and manage safelisting licenses for channels and videos on behalf of your end users.
For detailed guidance on Epidemic Sound's claim and dispute processes related to copyright and monetization, explore the Copyright & Monetization category in the Epidemic Sound Help Center.
Prerequisites
- API Key Authentication -- Safelisting requires API Key Authentication. Partner Token / User Token authentication is not supported for these endpoints.
- Safelisting access -- Your application must have safelisting enabled. This is configured as part of your partnership agreement. If you receive a
403response, contact your Epidemic Sound partner manager.
Key concepts
Licenses
A license is the core object in the Safelisting API. It represents a single safelisting entry that protects a specific asset (channel or video) from copyright claims on a given platform.
Licenses are:
- Scoped per end user -- Each license is tied to an end-user identifier you provide.
- Scoped per application -- Licenses created by your application are isolated from other partners' licenses.
- Optionally time-limited -- Channel licenses can have an expiration date, which is useful for tying safelisting to a subscription period. Video licenses typically do not need expiration since they protect a specific piece of content.
Assets
An asset is the content entity being safelisted. Every asset has:
- A type --
channelorvideo - A platform -- The platform where the asset lives
- A URL -- The public URL of the channel or video
The system derives a platform-specific identifier (e.g. a YouTube channel ID) from the URL you provide.
End-user scoping
All safelisting endpoints require the X-Partner-User-Id header. This is your internal identifier for the end user on whose behalf you are managing licenses. Listing endpoints only return licenses belonging to the specified user.
Use a stable, anonymised identifier -- not a name or email address. The same guidance as for API Key user identification applies.
Integration patterns
How you collect asset URLs from your end users depends on your product's workflow. Below are common patterns to consider.
Video safelisting on export
If your product lets users create or edit video content, you can safelist the video automatically when the user exports or publishes to a platform. Since your application already knows the destination URL at export time, no additional input from the user is needed.
Video URL entered by the user
If your product does not control the publishing step, you can ask the user to provide the video URL after they have uploaded it to the platform. Add a field in your UI where the user pastes the video link, then call the Create License endpoint with that URL.
Channel safelisting during onboarding
If your agreement covers channel safelisting, you can ask users to connect their social media channels as part of onboarding. Present a step where the user enters their channel URLs and gives consent for safelisting. This provides blanket protection for all content on those channels.
Communicating safelisting to your end users
We recommend that you explain safelisting to your end users in your own product. They should understand:
- What safelisting does -- It registers their channel or video with Epidemic Sound so that content using licensed music is recognised and protected from copyright claims.
- When it takes effect -- Safelisting is typically processed quickly, but the time until full protection is active can vary by platform.
- What happens if they stop using your service -- If their subscription ends, their safelisting licenses will be expired. Content published while the license was active remains protected, but new content published after expiration may be subject to claims.
Providing this context builds trust and reduces support requests related to unexpected copyright claims.
Supported platforms
Each platform requires slightly different information. The table below shows what is supported and the expected URL format for each.
| Platform | Channel safelisting | Video safelisting | Info needed | Expected URL format |
|---|---|---|---|---|
| YouTube | Yes | Yes | YouTube channel name or ID | Channel: https://www.youtube.com/@channelname or https://www.youtube.com/channel/CHANNEL_ID Video: https://www.youtube.com/watch?v=VIDEO_ID |
| Yes | No | Instagram profile URL | https://www.instagram.com/username | |
| Yes | No | Facebook Page or Profile URL | https://www.facebook.com/pagename | |
| TikTok | Yes | No | TikTok username | https://www.tiktok.com/@username |
| Twitch | Yes | No | Twitch channel ID | https://www.twitch.tv/channelname |
| Podcast | Yes | No | RSS feed URL | https://example.com/podcast.xml |
| Website | Yes | No | Full website URL | https://example.com |
Common headers
Every request to the Safelisting API must include:
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <your-api-key> |
X-Partner-User-Id | Yes | Your end user's unique identifier |
Content-Type | Yes (POST / PATCH) | application/json |
Create a license
Create a new safelisting license for a channel or video.
curl -X POST 'https://api.epidemicsound.com/v0/safelisting/licenses' \
-H 'Authorization: Bearer your-api-key' \
-H 'X-Partner-User-Id: user-abc-123' \
-H 'Content-Type: application/json' \
-d '{
"asset": {
"type": "channel",
"platform": "youtube",
"url": "https://www.youtube.com/@somechannel"
},
"expiresAt": "2027-01-01T00:00:00Z"
}'
| Field | Type | Required | Description |
|---|---|---|---|
asset.type | string | Yes | channel or video |
asset.platform | string | Yes | One of: youtube, instagram, facebook, tiktok, twitch, podcast, website |
asset.url | string | Yes | Public URL of the asset |
expiresAt | string | No | Expiration date in ISO 8601 format. Primarily useful for channel licenses (e.g. to match a subscription period). Omit for a non-expiring license. |
{
"id": "7f7ae8d4-5a21-48b0-bdc3-6795fbc1dc51",
"createdAt": "2026-04-01T12:00:00Z",
"expiresAt": "2027-01-01T00:00:00Z",
"asset": {
"id": "UC_sOjEnngNB2y_AEaDd2cSA",
"type": "channel",
"platform": "youtube",
"url": "https://www.youtube.com/@somechannel"
}
}
The asset.id in the response is a platform-specific identifier derived from the URL you provided (e.g. a YouTube channel ID).
List licenses
Retrieve safelisting licenses for a specific end user. Results support filtering, pagination, and sorting.
curl -X GET 'https://api.epidemicsound.com/v0/safelisting/licenses?assetType=channel' \
-H 'Authorization: Bearer your-api-key' \
-H 'X-Partner-User-Id: user-abc-123'
| Parameter | Type | Default | Description |
|---|---|---|---|
assetType | string | (required) | channel or video |
platform | string | all | Filter by platform |
status | string | active | Currently only active is supported |
sortBy | string | expiresAt | createdAt or expiresAt |
sortOrder | string | desc | asc or desc |
page | integer | 1 | Page number |
pageSize | integer | 25 | Items per page |
{
"page": 1,
"pageSize": 25,
"totalItems": 1,
"data": [
{
"id": "7f7ae8d4-5a21-48b0-bdc3-6795fbc1dc51",
"createdAt": "2026-04-01T12:00:00Z",
"expiresAt": null,
"asset": {
"id": "UC_sOjEnngNB2y_AEaDd2cSA",
"type": "channel",
"platform": "youtube",
"url": "https://www.youtube.com/@somechannel"
}
}
]
}
Get a license
Retrieve a single license by its ID.
curl -X GET 'https://api.epidemicsound.com/v0/safelisting/licenses/7f7ae8d4-5a21-48b0-bdc3-6795fbc1dc51' \
-H 'Authorization: Bearer your-api-key' \
-H 'X-Partner-User-Id: user-abc-123'
Returns the same license object shape as the list response. Returns 404 if the license does not exist or does not belong to the specified end user.
Update a license
Update a license's expiration date. This is currently the only modifiable field and is primarily relevant for channel licenses, where you may want to align the safelisting period with the end user's subscription.
curl -X PATCH 'https://api.epidemicsound.com/v0/safelisting/licenses/7f7ae8d4-5a21-48b0-bdc3-6795fbc1dc51' \
-H 'Authorization: Bearer your-api-key' \
-H 'X-Partner-User-Id: user-abc-123' \
-H 'Content-Type: application/json' \
-d '{
"expiresAt": "2027-06-01T00:00:00Z"
}'
Returns the updated license object on success.
Delete a license
Expire a single safelisting license. Any content published on the associated asset after expiration will no longer be considered licensed to use Epidemic Sound music.
curl -X DELETE 'https://api.epidemicsound.com/v0/safelisting/licenses/7f7ae8d4-5a21-48b0-bdc3-6795fbc1dc51' \
-H 'Authorization: Bearer your-api-key' \
-H 'X-Partner-User-Id: user-abc-123'
Returns 204 No Content on success.
Handle end-user churn
When an end user cancels their subscription on your platform, you should expire all their active licenses. Content published while the licenses were active remains protected, but new content published after expiration may be subject to claims.
curl -X DELETE 'https://api.epidemicsound.com/v0/safelisting/licenses' \
-H 'Authorization: Bearer your-api-key' \
-H 'X-Partner-User-Id: user-abc-123'
Returns 204 No Content on success.
This action expires all active licenses for the specified end user within your application. It cannot be undone -- you would need to re-create each license individually.
Errors
The Safelisting API follows the same error format and status codes as the rest of the Epidemic Sound API. See Error handling for the full reference, including retry strategies.
Two status codes are specific to safelisting:
403 Forbidden-- Your application does not have safelisting enabled. Contact your Epidemic Sound partner manager to have it configured.409 Conflict-- The asset is already safelisted by another end user in your application.