Migrating from Legacy API to API v2

This document maps all fields from the Dailymotion Legacy API to their equivalents in API v2, and provides a per-endpoint migration guide to help you update your integration without diving into the full reference.


Quick mapping navigation


Global migration notes

TopicLegacy APIAPI v2
Base URL

https://api.dailymotion.com

https://partner.api.dailymotion.com/rest

Unified endpoint:

https://api.dailymotion.com/v2

Request formatForm-encoded params (POST, field list as string)JSON body for mutations; query params for reads
Update methodPOST (full or partial, no distinction)PATCH (partial updates only — omit unchanged fields)
TimestampsUnix integer (seconds)ISO 8601 string (e.g. 2026-06-01T12:00:00Z)
Resource IDsidNamed field: video_id, profile_id, player_id, etc.
Owner referenceowner.id / owner.username / owner.urlprofile.profile_id / profile.name / profile.profile_url
Category taxonomychannelcategory
For-kids flagis_created_for_kidsis_for_kids
Geo-restrictiongeoblocking string (comma-separated)geo_restriction object with mode + countries

Authentication

Key changes:

  • Supported now: Private API keys with client_credentials grant type, for server-to-server integrations.
  • Removed: password grant type.
  • 🔜 Coming soon: Public API keys with authorization_code grant type, for user-delegated access.
  • Unique OAuth token endpoint.

API key type

Legacy APIAPI v2
Private API key✓ Supported Required
Public API key✓ Supported❌ Not supported
📘

To create a Private API key

Log into Dailymotion StudioOrganization → API keys → Create API key → select Private API key.

Define which profile(s) the key applies to and set its permissions.

Store the client_secret securely, it is only shown once.


Grant types

Grant typeLegacy APIAPI v2
client_credentials✓ SupportedRequired (with private API keys)
password✓ Supported❌ Not supported
authorization_code✓ Supported🔜 Coming soon (with public API keys)

Token endpoint

Legacy APIAPI v2
Token URLhttps://api.dailymotion.com/oauth/token

https://partner.api.dailymotion.com/oauth/v1/token
https://oauth2.dailymotion.com/v2/token

Migrating from password grant to client credentials

Before — Legacy (password grant):

curl -X POST "https://api.dailymotion.com/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=password" \
  -d "client_id={your_api_key}" \
  -d "client_secret={your_api_secret}" \
  -d "username={dailymotion_username}" \
  -d "password={dailymotion_password}" \
  -d "scope=manage_videos"

After — API v2 (client credentials):

curl -X POST "https://oauth2.dailymotion.com/v2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id={your_private_api_key}" \
  -d "client_secret={your_private_api_secret}" \
  -d "scope=video.manage"
⚠️

Scopes have also changed

manage_videos becomes video.manage. See the Scopes section for the full mapping.



Video

Key changes:

  • HTTP method to update a video changed from POST to PATCH. Only send fields that need to be updated.
  • Stream URLs & Download URLs can be requested via a dedicated object.
  • goeblocking replaced by a structured geo_restriction object.

Video endpoints

OperationLegacy API
https://partner.api.dailymotion.com/rest
or
https://api.dailymotion.com/
API v2
https://api.dailymotion.com/v2
Get upload URLGET /file/uploadPOST /files/upload_sessions
Upload video filePOST {upload_url} (Retrieved upload_url from above)POST {upload_url} (Same flow: Retrieved upload_url from above)
Create videoPOST /user/{PROFILE_ID}/videos with url=...POST /profiles/{profile_id}/videos with {"source": {"file_url": "..."}}
List videosGET /user/{id}/videosGET /profiles/{profile_id}/videos
Get single videoGET /video/{id}GET /videos/{id}
Update videoPOST /video/{id}PATCH /videos/{id}
Delete videoDELETE /video/{id}DELETE /videos/{id}
Generate time-limited stream URLsGET https://partner.api.dailymotion.com/rest/video/{id}?fields=stream_hls_url&client_ip={client_ip}POST /videos/{id}/streams
Learn more
Generate unrestricted stream URLsGET https://partner.api.dailymotion.com/rest/video/{id}?fields=stream_hls_url&no_expire=1&no_ip_lock=1Coming soon
Generate time-limited download URLsGET https://partner.api.dailymotion.com/rest/video/{id}?fields={stream_formats}
Then add download=1 to retrieve URL.
POST /videos/{id}/downloads
Learn more

Video fields

Identity & Core metadata

Legacy APIAPI v2Notes
idvideo_id Renamed
titletitle Unchanged
descriptiondescriptionUnchanged
urlvideo_urlRenamed
private_idComing soon
Use video_url in the meantime. Learn more about how to collect videos' private_id.
created_timecreated_at Format Unix timestamp → ISO 8601
updated_timeupdated_atFormat Unix timestamp → ISO 8601
uploaded_timeuploaded_atFormat Unix timestamp → ISO 8601
publish_datepublished_atFormat Unix timestamp → ISO 8601
languagelanguageUnchanged
channelcategory

Renamed

The "channel" taxonomy is now called "category".

tagstagsUnchanged
hashtagshashtagsUnchanged
countrycountryUnchanged
conversation_openerengagement_messageRenamed

Publication & Visibility

Legacy APIAPI v2Notes
publishedis_publishedRenamed
Read-only in v2
private + publishedvisibilityComplex
Two booleans collapse into one enum: public / private / password. See mapping table below.

visibility mapping:

Legacy (private, published)v2 visibility
private=false, published=truepublic
private=true, published=falseprivate

Content classification

Legacy APIAPI v2Notes
is_created_for_kidsis_for_kidsRenamed
explicitis_explicitRenamed
Write-once, cannot be unset once true
stream_altered_with_aiis_ai_alteredRenamed
ai_subtitle_languagesai_subtitlesRenamed
ai_chapter_generation_requiredenable_ai_chapter_generationRenamed

Embedding

Legacy APIAPI v2Notes
allow_embedembedding.enable_embed Nested in embedding
embed_urlembedding.embed_urlNested in embedding — requires context=player={id}
embed_htmlembedding.embed_htmlNested in embedding — requires context=player={id}

Geoblocking

In the Legacy API, geoblocking settings were stored in a single geoblocking field as a comma-separated string: The first word was the restriction type, and the remaining values were country codes (ie. geoblocking=allow, fr, us, it).

In API v2, this single field is replaced by a structured geo_restriction object. It has two dedicated sub-fields that must always be set together: mode (the type of restriction) and countries (the list of country codes it applies to).

Legacy APIAPI v2Notes
geoblockinggeo_restriction.mode

Complex

Nested in geo_restriction:
  • allow
  • block
geoblockinggeo_restriction.countries

Complex

Nested in geo_restriction. Combine with geo_restriction.mode, and add country codes.


Thumbnails

Legacy APIAPI v2Notes
thumbnail_1080_urlthumbnail.h1080_url Nested in thumbnail. Default when ?fields=thumbnail
thumbnail_720_urlthumbnail.h720_urlNested in thumbnail
thumbnail_480_urlthumbnail.h480_urlNested in thumbnail
thumbnail_360_urlthumbnail.h360_urlNested in thumbnail
thumbnail_240_urlthumbnail.h240_urlNested in thumbnail
thumbnail_180_urlthumbnail.h180_urlNested in thumbnail
thumbnail_120_urlthumbnail.h120_urlNested in thumbnail
thumbnail_62_urlthumbnail.h62_urlNested in thumbnail
thumbnail_60_urlthumbnail.h60_urlNested in thumbnail

First frames

Legacy APIAPI v2Notes
first_frame_1080_urlfirst_frame.h1080_url Nested in first_frame. Default when ?fields=first_frame
first_frame_720_urlfirst_frame.h720_urlNested in first_frame
first_frame_480_urlfirst_frame.h480_urlNested in first_frame
first_frame_360_urlfirst_frame.h360_urlNested in first_frame
first_frame_240_urlfirst_frame.h240_urlNested in first_frame
first_frame_180_urlfirst_frame.h180_urlNested in first_frame
first_frame_120_urlfirst_frame.h120_urlNested in first_frame
first_frame_60_urlfirst_frame.h60_urlNested in first_frame

Previews

Legacy APIAPI v2Notes
preview_480p_urlpreview.p480_url Nested in preview. Default when ?fields=preview
preview_360p_urlpreview.p360_urlNested in preview
preview_240p_urlpreview.p240_urlNested in preview

Owner / Profile

Legacy APIAPI v2Notes
owner.idprofile.profile_id Nested in profile
owner.usernameprofile.nameNested in profile
owner.urlprofile.profile_urlNested in profile

Media properties

Legacy APIAPI v2Notes
durationsource.durationNested in source
widthsource.widthNested in source
heightsource.heightNested in source
aspect_ratiosource.aspect_ratioNested in source
checksumsource.checksumNested in source
urlsource.file_url

New in v2

Nested in source. Write-only, used at upload / source replacement.

video_formatsavailable_formatsRenamed, consolidated with audio formats
audio_formatsavailable_formatsRenamed, merged into single available_formats object

Processing

Legacy APIAPI v2Notes
statusprocessing.encoding_statusNested in processing
encoding_progressprocessing.encoding_progressNested in processing
publishing_progressprocessing.publishing_progressNested in processing

Streaming

Legacy APIAPI v2Notes
streaming.hls_url, streaming.source_url, stream_h264_hd1080_url etc.POST /v2/videos/{id}/streams

New in v2

Moved to a dedicated endpoint

Time-limited stream URLs only

POST /v2/videos/{id}/downloads

New in v2

Time-limited, pre-signed download URLs per format



Profile

Key change: The Legacy "user" concept splits into two in v2:

  • User: Associated profiles via GET /v2/me and GET /v2/users/{id}.
  • Profile: Profile identity and content management via /v2/profiles/{id}.

Profile endpoints

OperationLegacy API
https://partner.api.dailymotion.com/rest
or
https://api.dailymotion.com/
API v2
https://api.dailymotion.com/v2
Get a profileGET /users/{profile_id}GET /profiles/{profile_id}
Update a profilePOST /user/{profile_id}PATCH /profiles/{profile_id}

Profile fields

Identity & Core metadata

Legacy APIAPI v2Notes
idprofile_id Renamed
usernamename Renamed
screennamedisplay_nameRenamed
descriptiondescriptionUnchanged
countrycountryUnchanged
created_timecreated_atFormat
Unix timestamp → ISO 8601
updated_timeupdated_atFormat Unix timestamp → ISO 8601

Avatar

Legacy APIAPI v2
avatar_480_urlComing soon
avatar_720_urlComing soon
avatar_360_urlComing soon
avatar_160_urlComing soon
avatar_120_urlComing soon
avatar_80_urlComing soon
avatar_60_urlComing soon
avatar_25_urlComing soon

Cover

Legacy APIAPI v2
cover_1920x_urlDropped
cover_1024x_urlDropped
cover_375x_urlDropped
cover_375_urlDropped
cover_250_urlDropped
cover_210_urlDropped
cover_200_urlDropped
cover_150_urlDropped
cover_100_urlDropped

Watermark

Legacy APIAPI v2
watermark_urlComing soon
watermark_link_urlComing soon

Social links

Legacy APIAPI v2Notes
twitter_urlsocial_links.twitter_urlNested in social_links
instagram_urlsocial_links.instagram_urlNested in social_links
facebook_urlsocial_links.facebook_urlNested in social_links
website_urlsocial_links.website_url Nested in social_links

Webhook

Legacy APIAPI v2
webhook_urlwebhook.callback_urlNested in webhook
webhook_eventswebhook.eventsNested in webhook


Player

Key change:

In v2, all Player settings have been reorganised into named sub-objects by concern (appearance, playback, advertising, etc.) instead of a flat list of fields.

Player endpoints

OperationLegacy API
https://partner.api.dailymotion.com/rest
or
https://api.dailymotion.com/
API v2
https://api.dailymotion.com/v2/
List playersGET /user/{profile_id}/playersGET /profiles/{profile_id}/players
Get single playerGET /player/{player_id}GET /v2/players/{player_id}
Create playerPOST /user/{profile_id}/playersPOST /v2/profiles/{profile_id}/players
Update playerPOST /player/{player_id}PATCH /v2/players/{player_id}
Delete playerDELETE /player/{player_id}DELETE /v2/players/{player_id}

Player fields

Identity

Legacy APIAPI v2Notes
idplayer_id Renamed
labelname Renamed
created_timecreated_atFormat
Unix timestamp → ISO 8601
updated_timeupdated_atFormat
Unix timestamp → ISO 8601
owner.idprofile.profile_id Nested in profile

Embedding

Legacy APIAPI v2Notes
embed_html_urlembedding.html_url Nested in embedding
embed_script_urlembedding.script_urlNested in embedding
lib_script_urlembedding.lib_urlNested in embedding

Appearance

Legacy APIAPI v2Notes
colorappearance.color Nested in appearance
aspect_ratioappearance.aspect_ratioNested in appearance

Playback

Legacy APIAPI v2Notes
autostartplayback.autostart Nested in playback
enable_autonextplayback.enable_autonextNested in playback
enable_autoskipplayback.enable_autoskipNested in playback
autoskip_afterplayback.autoskip_afterNested in playback

Display

Legacy APIAPI v2Notes
enable_video_titledisplay.enable_content_title

Renamed

Nestedin display

enable_dm_logodisplay.enable_dm_logoNested in display
enable_subtitlesdisplay.enable_subtitlesNested in display
enable_playback_controlsdisplay.enable_playback_controlsNested in display
enable_sharingdisplay.enable_sharingNested in display
enable_attention_peaksdisplay.enable_attention_peaksNested in display
enable_dynamic_thumbnaildisplay.enable_dynamic_thumbnailNested in display
enable_video_title_linkdisplay.enable_video_title_linkNested in display
enable_profile_linkdisplay.enable_profile_linkNested in display
enable_keyboard_shortcutsdisplay.enable_keyboard_shortcutsNested in display
enable_spinnerdisplay.enable_spinnerNested in display
enable_startscreen_dm_linkdisplay.enable_startscreen_dm_linkNested in display
enable_titles_in_video_cardsdisplay.enable_titles_in_video_cardsNested in display
enable_watch_now_carddisplay.enable_watch_now_cardNested in display

Advertising

Legacy APIAPI v2Notes
enable_adsadvertising.is_enabled Nested in advertising
enable_ads_controlsadvertising.enable_ads_controlsNested in advertising
ad_pressure_optimizationadvertising.ad_pressure_mode

Renamed

Nested in advertising

enable_wait_for_custom_configadvertising.enable_wait_for_custom_configNested in advertising
wait_for_custom_config_delayadvertising.wait_for_custom_config_delayNested in advertising

Recommendations

Legacy APIAPI v2Notes
enable_automatic_recommendationsrecommendation.enable_auto_recommendation Nested in recommendation
enable_custom_recommendationsrecommendation.enable_custom_recommendationNested in recommendation
recommendations_optimisationrecommendation.mode

Renamed

Nested in recommendation


Picture-in-picture (PiP)

Legacy APIAPI v2Notes
pippip.is_enabled Nested in pip
pip_selected_placementpip.selected_placementNested in pip
enable_pip_placementpip.enable_pip_placementNested in pip
enable_start_pip_expandedpip.enable_start_pip_expandedNested in pip
enable_legacy_pippip.enable_legacy_pipNested in pip
enable_google_policy_uipip.enable_google_policy_uiNested in pip

Watermark

Legacy APIAPI v2Notes
watermark_image_typewatermark.image_type Nested in watermark
watermark_link_typewatermark.link_typeNested in watermark
watermark_link_urlwatermark.link_urlNested in watermark

Contextual content

Legacy APIAPI v2Notes
enable_contextual_contentcontextual_content.is_enabled Nested in contextual_content
contextual_content_sourcecontextual_content.sourceNested in contextual_content
enable_contextual_content_fallbackcontextual_content.enable_fallbackNested in contextual_content
enable_contextual_content_freshnesscontextual_content.enable_freshnessNested in contextual_content
contextual_content_freshnesscontextual_content.freshness_days

Renamed

Nested in contextual_content


Advanced

Legacy APIAPI v2Notes
enable_eco_modeadvanced.enable_eco_mode Nested in advanced
enable_receive_url_locationadvanced.enable_receive_url_locationNested in advanced
enable_sharing_url_locationadvanced.enable_sharing_url_locationNested in advanced
enable_live_offair_screenadvanced.enable_live_offair_screenNested in advanced
enable_paid_partnership_labeladvanced.enable_paid_partnership_labelNested in advanced

Organization features

Read-only fields reflecting the capabilities enabled for the Organization that owns this Player.

Legacy APIAPI v2Notes
has_ssaiorganization_features.has_ssai Nested in organization_features
has_reached_playback_limitsorganization_features.has_reached_playback_limitsNested in organization_features
has_recommendations_from_org_onlyorganization_features.has_recommendations_from_org_onlyNested in organization_features


Playlist

Key change:

Visibility, thumbnail and owner information aren't supported yet in v2.

Playlist endpoints

OperationLegacy API
https://partner.api.dailymotion.com/rest
or
https://api.dailymotion.com/
API v2
https://api.dailymotion.com/v2/
List playlistsGET /playlistsNot supported
List my playlists GET /user/{profile_id}/playlistsGET /profiles/{profile_id}/playlists
List a playlistGET /playlist/{playlist_id}GET /playlists/{playlist_id}
List videos in playlistGET /playlist/{playlist_id}/videosGET /playlists/{playlist_id}/videos
Create playlistPOST /user/{profile_id}/playlistsPOST /profiles/{profile_id}/playlists
Update playlistPOST /playlist/{playlist_id}PATCH /playlists/{playlist_id}
Add video to playlistPOST /playlist/{playlist_id}/videos/{video_id}POST /playlists/{playlist_id}/videos
Delete playlistDELETE /playlist/{playlist_id}DELETE /playlists/{playlist_id}
Remove video from playlistDELETE /playlist/{playlist_id}/videos/{video_id}DELETE /playlists/{playlist_id}/videos/{video_id}
Remove all videos from playlistDELETE /playlist/{playlist_id}/videosNot supported

Playlist fields

Identity & Core metadata

Legacy APIAPI v2Notes
idplaylist_idRenamed
nametitleRenamed
descriptiondescriptionUnchanged
urlplaylist_urlRenamed
embed_urlembed_urlUnchanged
created_timecreated_atFormat
Unix timestamp → ISO 8601
updated_timeupdated_atFormat
Unix timestamp → ISO 8601

Visibility

Legacy API FieldAPI v2 Field
privateDropped

Thumbnails

Legacy API FieldAPI v2 Field
thumbnail_urlDropped
thumbnail_720_urlDropped
thumbnail_480_urlDropped
thumbnail_360_urlDropped

Owner

Legacy API FieldAPI v2 Field
owner.idDropped


Livestream

Key change:

Livestreams are now a dedicated object in v2: No more mode=live param on the video endpoint.

Livestream endpoints

OperationLegacy API
https://partner.api.dailymotion.com/rest
or
https://api.dailymotion.com/
API v2
https://api.dailymotion.com/v2
Get single livestreamGET /video/{video_id}?mode=liveGET /livestreams/{livestream_id}
List profile's livestreamsGET /user/{profile_id}/videos?mode=liveGET /profiles/{profile_id}/livestreams
Create livestreamPOST /user/{profile_id}/videos?mode=livePOST /profiles/{profile_id}/livestreams
Update livestreamPOST /video/{video_id}PATCH /v2/livestreams/{livestream_id}
Delete livestreamDELETE /video/{video_id}DELETE /v2/livestreams/{livestream_id}

Livestream fields

Identity & Core metadata

Legacy APIAPI v2Notes
idlivestream_id Renamed
titletitle Unchanged
descriptiondescriptionUnchanged
created_timecreated_atFormat
Unix timestamp → ISO 8601
start_timestart_atFormat
Unix timestamp → ISO 8601
end_timeend_atFormat
Unix timestamp → ISO 8601
languagelanguageUnchanged
channelcategoryRenamed
tagstagsUnchanged
countrycountryUnchanged
is_created_for_kidsis_for_kidsRenamed

Visibility

Legacy APIAPI v2Notes
private + publishedvisibility

Complex

Same mapping logic as Video. See visibility table above.


Status

Legacy APIAPI v2Notes
onairstatus.onair Nested in status
live_airing_timestatus.airing_atNested in status
live_audio_bitratestatus.audio_bitrateNested in status

Ingest

Legacy APIAPI v2Notes
live_publish_urlingest.rtmp_url Nested in ingest. Add context=refresh=true to regenerate the key
live_publish_srt_urlingest.srt_urlNested in ingest. Add context=refresh=true to regenerate the key
live_ingestsingest.available_serversNested in ingest

Recording

Legacy APIAPI v2Notes
live_auto_recordrecording.enable_auto_record Nested in recording
record_statusrecording.statusNested in recording
record_start_timerecording.start_atNested in recording
record_end_timerecording.end_atNested in recording

Advertising

Legacy APIAPI v2Note
live_ad_break_remaining
live_ad_break_end_time
live_ad_break_launch

Embedding & Geo-restriction

The geoblocking mapping is identical to the video object: The legacy geoblocking parameter splits into two fields that must always be set together. See Geo-restriction section in Video for the full explanation.

Legacy APIAPI v2Notes
allow_embedembedding.enable_embed Nested in embedding
geoblockinggeo_restriction.mode

Complex

Nested in geo_restriction — same parsing as Video

geoblockinggeo_restriction.countries

Complex

Nested in geo_restriction — extract country codes after first element


Thumbnails

Legacy APIAPI v2Notes
thumbnail_1080_urlthumbnail.h1080_url Nested in thumbnail. Default when ?fields=thumbnail
thumbnail_720_urlthumbnail.h720_urlNested in thumbnail
thumbnail_480_urlthumbnail.h480_urlNested in thumbnail
thumbnail_240_urlthumbnail.h240_urlNested in thumbnail

Owner / Profile

Legacy API FieldAPI v2 FieldNotes
owner.idprofile.profile_id Nested in profile



Scopes

Refer to v2 authentication guide for full scope usage.

LEGACY SCOPESAPI v2 EQUIVALENTS
manage_playersplayer.manage
manage_playlistsplaylist.manage
manage_subtitlesvideo.manage
manage_videosvideo.manage
emailprofile.read
userinfoprofile.manage


Did this page help you?