Skip to main content

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.

tip

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 403 response, 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 -- channel or video
  • 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.

info

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.

PlatformChannel safelistingVideo safelistingInfo neededExpected URL format
YouTubeYesYesYouTube channel name or IDChannel: https://www.youtube.com/@channelname or https://www.youtube.com/channel/CHANNEL_ID
Video: https://www.youtube.com/watch?v=VIDEO_ID
InstagramYesNoInstagram profile URLhttps://www.instagram.com/username
FacebookYesNoFacebook Page or Profile URLhttps://www.facebook.com/pagename
TikTokYesNoTikTok usernamehttps://www.tiktok.com/@username
TwitchYesNoTwitch channel IDhttps://www.twitch.tv/channelname
PodcastYesNoRSS feed URLhttps://example.com/podcast.xml
WebsiteYesNoFull website URLhttps://example.com

Common headers

Every request to the Safelisting API must include:

HeaderRequiredDescription
AuthorizationYesBearer <your-api-key>
X-Partner-User-IdYesYour end user's unique identifier
Content-TypeYes (POST / PATCH)application/json

Create a license

Create a new safelisting license for a channel or video.

Create a channel license on YouTube
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"
}'
FieldTypeRequiredDescription
asset.typestringYeschannel or video
asset.platformstringYesOne of: youtube, instagram, facebook, tiktok, twitch, podcast, website
asset.urlstringYesPublic URL of the asset
expiresAtstringNoExpiration date in ISO 8601 format. Primarily useful for channel licenses (e.g. to match a subscription period). Omit for a non-expiring license.
Response 201 Created
{
"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"
}
}
tip

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.

List active channel licenses
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'
ParameterTypeDefaultDescription
assetTypestring(required)channel or video
platformstringallFilter by platform
statusstringactiveCurrently only active is supported
sortBystringexpiresAtcreatedAt or expiresAt
sortOrderstringdescasc or desc
pageinteger1Page number
pageSizeinteger25Items per page
Response 200 OK
{
"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.

Get a license
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.

Update expiration date
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.

Delete a license
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.

Expire all licenses for an end user
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.

caution

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.