ODK API Portal
한국어
  • Overview
  • MediaIO
  • Continue Watching
  • Player Event
  • Deprecated
  • Recent changes
Information
carousel-group
Carousel
category-channels
category-navigation
category
channels
consent
content
    Get content listgetGet sync statusgetSync contentpostGet sync historygetGet content detailget
Continue Watching
cover
deletion-request
device-data
Favorites
multichannel
Onboarding
parental-control
Amasian Parental PIN
playback
policy
recommendation
search
season
series
service-config
Schemas
powered by Zudoku
ODX API v4
ODX API v4

content


Get content list

GET
https://odkmedia.io
/odx/api/v4/content/

Retrieve a paginated list of published content with optional filtering and ordering.

Get content list › query Parameters

category
​string

Filter by category slug

content_slug
​string

Filter by content slug. For movie content, returns the movie and its related content (clips, trailers, etc.)

kids
​boolean

Kids profile. When true, only all-ages titles are returned: the resolved age rating (content -> season -> series) must be Vietnam 'P' or unset. Every other rating, 'K' included, is filtered out. Series and seasons are omitted when none of their episodes is all-ages. The Kids-Profile: true header does the same thing.

order
​string · enum

Order results

Enum values:
index_asc
index_desc
newest
popularity
page
​integer

A page number within the paginated result set.

Default: 1
page_size
​integer

Number of results to return per page.

Example: 10
search
​string

Search in title and synopsis

season_id
​integer

Filter by season ID

season_slug
​string

Filter by season slug

types
​string

Comma-separated content types (e.g., "tv-series,clip")

Get content list › Headers

did
​string

Device ID (used for Continue Watching information)

Example: 00000000-0000-4000-8000-000000000000

Get content list › Responses

PaginatedAmasianContentListList
count
​integer
next
​string | null · uri
previous
​string | null · uri
​AmasianContentList[]
GET/odx/api/v4/content/
curl https://odkmedia.io/odx/api/v4/content
Example Responses
{ "count": 123, "next": "http://api.example.org/accounts/?page=4", "previous": "http://api.example.org/accounts/?page=2", "results": [ { "data": { "info": { "age_rating_info": { "code": "VN_T16", "label": "T16", "warnings": [ { "code": "nudity", "label": "Khỏa thân, tình dục" } ] }, "content_id": 1, "content_slug": "example-episode", "display_duration": "45m", "dubbing_mode": true, "duration": 2700, "episode_order": 1, "mediahub_content_id": 20, "season_id": 1, "series_slug": "example-series" }, "view": { "badge": { "bottom_left": null, "bottom_right": null, "top_left": "dub", "top_right": null }, "badges": { "bottom_left": null, "bottom_right": null, "top_left": "dub", "top_right": null }, "continue_watching_info": { "button_text": "Resume", "cw_updated": 1640995200, "duration": 2700, "last_position": 1800, "progress_percentage": 67, "status": "in_progress" }, "image": { "language": "en", "orientation": "landscape", "url": "https://example.com/content-image.jpg" }, "title": "Example Episode" } }, "type": "type" } ] }
json
application/json

Get sync status

GET
https://odkmedia.io
/odx/api/v4/content/sync/

Retrieve last synchronization time.

Get sync status › Responses

200

Last sync time retrieved successfully

No data returned
GET/odx/api/v4/content/sync/
curl https://odkmedia.io/odx/api/v4/content/sync
Example Responses
No example specified for this content type

Sync content

POST
https://odkmedia.io
/odx/api/v4/content/sync/

Trigger content synchronization process.

Sync content › query Parameters

size
​integer

Number of items to sync (default: 100)

Sync content › Responses

Sync completed successfully

No data returned
POST/odx/api/v4/content/sync/
curl https://odkmedia.io/odx/api/v4/content/sync \ --request POST
Example Responses
No example specified for this content type

Get sync history

GET
https://odkmedia.io
/odx/api/v4/content/sync/history/

Retrieve content synchronization history.

Get sync history › query Parameters

ordering
​string

Which field to use when ordering the results.

page
​integer

A page number within the paginated result set.

Default: 1
page_size
​integer

Number of results to return per page.

Example: 10
search
​string

A search term.

Get sync history › Responses

200
PaginatedAmasianContentSyncHistoryList
count
​integer
next
​string | null · uri
previous
​string | null · uri
​AmasianContentSyncHistory[]
GET/odx/api/v4/content/sync/history/
curl https://odkmedia.io/odx/api/v4/content/sync/history
Example Responses
{ "count": 123, "next": "http://api.example.org/accounts/?page=4", "previous": "http://api.example.org/accounts/?page=2", "results": [ { "created": "2024-08-25T15:00:00Z", "id": 0, "modified": "2024-08-25T15:00:00Z", "status": "SUCCESS", "synced": "2024-08-25T15:00:00Z", "synced_count": 0, "total_count": 0 } ] }
json
application/json

Get content detail

GET
https://odkmedia.io
/odx/api/v4/content/{slug}/

Retrieve detailed information of a content by slug.

Get content detail › path Parameters

slug
​string · required

Content slug identifier

Example: inuyashiki-last-hero-e1

Get content detail › query Parameters

kids
​boolean

Kids profile. When true, only all-ages titles are returned: the resolved age rating (content -> season -> series) must be Vietnam 'P' or unset. Every other rating, 'K' included, is filtered out. Series and seasons are omitted when none of their episodes is all-ages. The Kids-Profile: true header does the same thing.

Get content detail › Headers

did
​string

Device ID (used for Continue Watching and Favorites information)

Example: 00000000-0000-4000-8000-000000000000

Get content detail › Responses

AmasianContentDetail
slug
​string · maxLength: 256 · pattern: ^[-\w]+$ · required
​
age_rating_info
​object | null · readOnly
​AmasianCast[] · readOnly
​AmasianCategory[] · readOnly
content_type
​ContentTypeEnum · enum
  • movie - Movie
  • tv-series - TV Series
  • trailer - Trailer
  • additional - Additional
  • clip - Clip
  • live_streaming - Live Streaming
  • unknown - Unknown
Enum values:
movie
tv-series
trailer
additional
clip
live_streaming
unknown
continue_watching_info
​object | null · readOnly

Continue watching information including playback progress and UI status

Example: {"button_text":"Resume","cw_updated":1640995200,"duration":2700,"last_position":1800,"progress_percentage":67,"status":"in_progress"}
cue_points
​
display_duration
​string · readOnly

Human-readable duration format (e.g., "45m", "1h 30m")

Example: 45m
dubbing_mode
​boolean · readOnly

Whether dubbing mode is available for this content

Example: true
duration
​integer | null · min: -2147483648 · max: 2147483647
episode_order
​integer | null · min: 0 · max: 2147483647
​object[] · readOnly

List of genres associated with the content

Example: [{"id":1,"name":"action","slug":"action"},{"id":2,"name":"drama","slug":"drama"}]
i18n_seo_keyword
​
i18n_seo_synopsis
​
i18n_seo_title
​
id
​integer · readOnly
is_favorite
​boolean · readOnly

Whether the content is in user's favorites

Example: true
mediahub_categories
​integer[] · readOnly
mediahub_content_id
​integer · readOnly

Mediahub content ID (UCMS content ID)

Example: 12345
poster
​object | null · readOnly

Poster image information

Example: {"language":"en","orientation":"landscape","url":"https://example.com/poster.jpg"}
publish_end
​string | null · date-time
publish_start
​string | null · date-time
release_year
​integer | null · readOnly

Release year of the content

Example: 2023
​object · readOnly
seo_keyword
​string | null
seo_synopsis
​string | null
seo_title
​string | null · maxLength: 255
subtitles
​string[] · readOnly

List of available subtitle language codes

Example: ["en","ko","es"]
synopsis
​string · readOnly
​AmasianTag[] · readOnly
thumbnail
​string · readOnly
title
​string · readOnly
types_of_contents
​array | null · readOnly

List of additional content types available for movie content (e.g., trailer, clip). Returns null for non-movie content.

Example: ["trailer","clip","additional"]
GET/odx/api/v4/content/{slug}/
curl https://odkmedia.io/odx/api/v4/content/:slug
Example Responses
{ "age_rating": "All", "age_rating_info": { "code": "VN_T16", "label": "T16", "warnings": [ { "code": "violence", "label": "Bạo lực" } ] }, "cast": [ { "id": 0, "name": "name", "slug": "slug", "thumbnail": "thumbnail" } ], "categories": [ { "description": "description", "i18n_description": {}, "i18n_title": {}, "id": 0, "slug": "slug", "title": "title" } ], "content_type": "movie", "continue_watching_info": { "button_text": "Resume", "cw_updated": 1640995200, "duration": 2700, "last_position": 1800, "progress_percentage": 67, "status": "in_progress" }, "cue_points": {}, "display_duration": "45m", "dubbing_mode": true, "duration": 0, "episode_order": 0, "genres": [ { "id": 1, "name": "action", "slug": "action" }, { "id": 2, "name": "drama", "slug": "drama" } ], "i18n_seo_keyword": {}, "i18n_seo_synopsis": {}, "i18n_seo_title": {}, "id": 0, "is_favorite": true, "mediahub_categories": [ 0 ], "mediahub_content_id": 12345, "poster": { "language": "en", "orientation": "landscape", "url": "https://example.com/poster.jpg" }, "publish_end": "2024-08-25T15:00:00Z", "publish_start": "2024-08-25T15:00:00Z", "release_year": 2023, "season": { "id": 0, "poster": "poster", "posters": [ { "id": 0, "is_representative": true, "language": "ko", "orientation": "landscape", "url": "https://www.example.com/path/to/resource" } ], "slug": "slug", "title": "title" }, "seo_keyword": "seo_keyword", "seo_synopsis": "seo_synopsis", "seo_title": "seo_title", "slug": "slug", "subtitles": [ "en", "ko", "es" ], "synopsis": "synopsis", "tags": [ { "description": "description", "i18n_description": {}, "i18n_title": {}, "id": 0, "slug": "slug", "title": "title" } ], "thumbnail": "thumbnail", "title": "title", "types_of_contents": [ "trailer", "clip", "additional" ] }
json
application/json

consentContinue Watching