Introduction
Welcome to the MyDramaList API! You can use our API to access MyDramaList API endpoints, which can get information on titles, people and watchlist in our database.
Pagination
Parameter | Type | Default | Value |
---|---|---|---|
page | integer | 1 | Number of page of results to be returned. |
limit | integer | 10 | A limit on the number of items to be returned, between 1 and 100. |
Header | Value |
---|---|
X-Pagination-Count | Current count of items. |
X-Pagination-Limit | Items per page. |
X-Pagination-Page | Current page. |
X-Pagination-Total | Total number of items. |
Required Headers
Content-Type: application/json
Versioning
The API version is included in the base URL of the request. The current version is v1
.
Authentication
GET https://api.mydramalist.com/v1/oauth/authorize?response_type=code&client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]
POST https://api.mydramalist.com/v1/oauth/token?response_type=authorization_code&client_id=[CLIENT_ID]&client_secret=[CLIENT_SECRET]&redirect_uri=[REDIRECT_URI]&code=[AUTHORIZE_CODE]
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here"
-H "mdl-api-key: [client_id]"
Make sure to replace
[client_id]
with your API key.
MyDramaList uses API keys to allow access to the API. You can register a new MyDramaList API key at our developer portal.
MyDramaList expects for the API key to be included in all API requests to the server in a header that looks like the following:
mdl-api-key: [client_id]
Authorization: Bearer [access_token]
The bearer authorization header is scoped to an authorized platform user or application.
Search
Parameter | Description |
---|---|
q | Query |
Search Titles
POST https://api.mydramalist.com/v1/search/titles
Titles
Get a title
curl -X GET \
https://api.mydramalist.com/v1/titles/[id] \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
{
"id": 24640,
"slug": "24640-test-content",
"title": "Test Content",
"original_title": "Test Content Native 2",
"year": 2018,
"rating": 0,
"permalink": "https://mydramalist.com/24640-test-content",
"synopsis": "Aenean ligula eget dolor. Vestibulum turpis sem...",
"type": "Movie",
"language": "Japanese",
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
},
"alt_titles": [
"Test content"
],
"country": "Japan",
"episodes": 1,
"watchers": 4,
"released": "2018-01-02",
"genres": [
"action",
"adventure",
"business"
],
"tags": [
"Food",
"manga",
"time travel",
"Adapted From A Novel",
"instant attraction",
"anime",
"Mystery",
"Nice Male Lead"
],
"trailer": 0,
"runtime": 30,
"certification": "Not Yet Rated",
"status": "",
"updated_at": 1501468950
}
This endpoint retrieves a specific TV show or movie.
HTTP Request
GET https://api.mydramalist.com/v1/titles/[ID]
URL Parameters
Parameter | Description |
---|---|
ID | The identifier of the title to be retrieved. |
Get title ratings
curl -X GET \
https://api.mydramalist.com/v1/titles/[id]/ratings \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
{
"rating": 8,
"votes": 4207,
"distribution": {
"9.5": 324,
"4.0": 31,
"6.5": 166,
"7.0": 431,
"7.5": 455,
"4.5": 27,
"10.0": 491,
"1.5": 2,
"2.0": 13,
"2.5": 10,
"3.0": 16,
"8.0": 765,
"8.5": 641,
"9.0": 620,
"3.5": 10,
"5.0": 93,
"5.5": 59,
"6.0": 175,
"1.0": 24
}
}
Get the ratings distrubtion for a TV show or movie.
GET https://api.mydramalist.com/v1/titles/[ID]/ratings
Get all credits
curl -X GET \
https://api.mydramalist.com/v1/titles/[id]/credits \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
{
"cast": [
{
"id": 5043,
"name": "Lee Jun Ho",
"slug": "5043-lee-jun-ho",
"images": {
"thumb": "...",
"poster": "..."
},
"character_name": "Seo Poong",
"role": "Main Role"
},
{
"id": 181,
"name": "Jang Hyuk",
"slug": "181-jang-hyuk",
"images": {
"thumb": "...",
"poster": "..."
},
"character_name": "Doo Chil Seong",
"role": "Main Role"
}
]
Get the credits for a TV show or movie.
GET https://api.mydramalist.com/v1/titles/[ID]/credits
Get all reviews
curl -X GET \
https://api.mydramalist.com/v1/titles/[id]/reviews \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
[
{
"id": 47125,
"ratings": {
"story": 7,
"acting": 8.5,
"music": 8.5,
"rewatch": 8.5,
"overall": 8.5
},
"headline": "",
"review": "Pellentesque dapibus hendrerit tortor. Maecenas ullamcorper...",
"version": 4,
"upvotes": 0,
"total_votes": 0,
"completed": true,
"dropped": false,
"spoiler": false,
"lang_iso": "en-US",
"comments": 19,
"voted": 0,
"episodes": 1,
"episodes_seen": 1,
"author": {
"username": "Dummy",
"display_name": "Dummy",
"avatar_url": "..."
},
"title": {
"id": 24640,
"slug": "/24640-test-content",
"title": "Test Content",
"type": "Movie",
"year": 2018,
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
},
"created_at": "2019-05-13T08:09:55Z"
}
]
Get the reviews for a TV show or movie.
GET https://api.mydramalist.com/v1/titles/[ID]/reviews
Get related titles
curl -X GET \
https://api.mydramalist.com/v1/titles/[id]/related \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
[
{
"id": 50319,
"title": "Unknown Number",
"original_title": "时空来电",
"year": 2019,
"rating": 9.1,
"permalink": "/50319-unknown-number",
"type": "Drama",
"language": "Chinese",
"related_type": "Remake",
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
}
]
Get a list of related titles for a TV show or movie.
GET https://api.mydramalist.com/v1/titles/[ID]/related
Get recently updates
curl -X GET \
https://api.mydramalist.com/v1/titles/updates/[START_DATE] \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
[
{
"id": 1988,
"title": "Tenkosei: Sayonara Anata",
"updated_at": "2019-04-01T09:50:10Z"
},
{
"id": 7703,
"title": "Houkago",
"updated_at": "2019-04-01T09:50:14Z"
},
{
"id": 16169,
"title": "Morrasoom Sawat",
"updated_at": "2019-04-01T09:50:27Z"
}
]
Get a list of recently updates TV shows or movies.
GET https://api.mydramalist.com/v1/titles/updates/[START_DATE]
e.g 2019-04-02
People
Get a person details
curl -X GET \
https://api.mydramalist.com/v1/people/[ID] \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
{
"id": 972,
"name": "Im Yoon Ah",
"first_name": "Yoon Ah",
"family_name": "Im",
"original_name": "임윤아",
"biography": "Im Yoon Ah, commonly stylized as Yoona, is a popular South Korean pop singer, dancer, actress, model and spokesmodel. She is a member of the Korean girl group Girls' Generation and is known as the center-girl, lead dancer and sub-vocalist of the group. Yoona made her debut as a singer along with Girls' Generation on August 5, 2007. She made her debut as an actress in the 2007 Korean drama, 9 Ends, 2 Outs. \nIn January 2014, Yoona and actor Lee Seung Gi were confirmed to be in a relationship since September 2013. On the 13 of August 2015, both stars confirmed they broke up after dating for a year and nine months due to busy schedules.",
"permalink": "https://mydramalistcom/people/972-im-yoon-ah",
"slug": "people/972-im-yoon-ah",
"birthday": "1990-05-30",
"dod": "0000-00-00",
"nationality": "South Korean",
"thumbnail": "",
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
}
Get the primary person details by id.
GET https://api.mydramalist.com/v1/people/[ID]
Get title credits
curl -X GET \
https://api.mydramalist.com/v1/people/[ID]/credits \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
{
"cast": [
{
"role": "Main Role",
"also_known_as": "Seo Yoo Jin",
"title": {
"id": 242,
"slug": "/242-cinderella-man",
"title": "Cinderella Man",
"original_title": "신데렐라 맨",
"year": 2009,
"episodes": 16,
"rating": 6.7,
"type": "Drama",
"language": "Korean",
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
}
},
{
"role": "Main Role",
"also_known_as": "Jang Sae Byuk",
"title": {
"id": 451,
"slug": "/451-you-are-my-destiny",
"title": "You Are My Destiny",
"original_title": "너는 내 운명",
"year": 2008,
"episodes": 178,
"rating": 7,
"type": "Drama",
"language": "Korean",
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
}
},
],
crew: []
}
Get the TV show or movie credits for a person.
GET https://api.mydramalist.com/v1/people/[ID]/credits
Reviews
Get a review
curl -X GET \
https://api.mydramalist.com/v1/reviews/[ID] \
-H "Content-Type: application/json" \
-H 'mdl-api-key: [client_id]'
JSON response example:
{
"id": 40016,
"ratings": {
"story": 9.5,
"acting": 9,
"music": 9,
"rewatch": 9.5,
"overall": 9
},
"headline": "Amazing drama!",
"review": "Nullam tincidunt adipiscing enim. Phasellus magna...",
"version": 5,
"upvotes": 2,
"total_votes": 2,
"completed": false,
"dropped": true,
"spoiler": false,
"lang_iso": "en-US",
"comments": 3,
"voted": 1,
"episodes": 17,
"episodes_seen": 9,
"author": {
"username": "Dummy",
"display_name": "Dummy",
"avatar_url": "..."
},
"title": {
"id": 29385,
"slug": "/29385-test-title-22341",
"title": "Test Content 2",
"type": "Drama",
"year": 2015,
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
},
"created_at": "2018-08-08T01:36:33Z"
}
Get a review details by ID.
GET https://api.mydramalist.com/v1/reviews/[ID]
Create a review
curl -X POST \
'https://api.mydramalist.com/v1/reviews' \
-H "Content-Type: application/json" \
-H 'authorization: Bearer [access_token]' \
-H 'mdl-api-key: [client_id]' \
--data '{
"completed": true,
"dropped": false,
"episodes_seen": 1,
"headline": null,
"parent_id": 24640,
"lang_iso": "en-US",
"ratings": {
"story": 9,
"acting": 8.5,
"music": 9,
"rewatch": 8.5,
"overall": 9.5
},
"review": "Donec id justo. Suspendisse eanim turpis, dictum sed, iaculis a, condimentum nec, nisi. Fusce fermentum odio nec arcu. Nullam sagittis. Cras dapibus.\n\nEtiam vitae tortor. Suspendisse feugiat. Phasellus dolor. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Fusce a quam.\n\nDonec orci lectus, aliquam ut, faucibus non, euismod id, nulla. Nunc nulla. Vivamus elementum semper nisi. \n\nPellentesque egestas, neque sit amet convallis pulvinar, justo nulla eleifend augue, ac auctor orci leo non est. Quisque ut nisi.",
"spoiler": false
}'
Post a review for a TV show or movie. The parent_id
is field is required for the TV shows or movie.
Review object
Attribute | Type | Description |
---|---|---|
completed | boolean | |
dropped | boolean | |
episodes_seen | integer | |
headline | string | |
parent_id | integer | |
lang_iso | string | |
ratings | ratings object | |
review | string | |
spoiler | boolean |
Ratings object
Attribute | Type | Description |
---|---|---|
story | float | |
acting | float | |
music | float | |
rewatch | float | |
overall | float |
POST https://api.mydramalist.com/v1/reviews
Update a review
curl -X PATCH \
'https://api.mydramalist.com/v1/reviews/[ID]' \
-H "Content-Type: application/json" \
-H 'authorization: Bearer [access_token]' \
-H 'mdl-api-key: [client_id]' \
--data '{
"completed": true,
"dropped": false,
"episodes_seen": 1,
"headline": null,
"id": 41568,
"lang_iso": "es",
"ratings": {
"story": 9,
"acting": 8.5,
"music": 9,
"rewatch": 8.5,
"overall": 9.5
},
"review": "Donec id justo. Suspendisse eanim turpis, dictum sed, iaculis a, condimentum nec, nisi. Fusce fermentum odio nec arcu. Nullam sagittis. Cras dapibus.\n\nEtiam vitae tortor. Suspendisse feugiat. Phasellus dolor. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Fusce a quam.\n\nDonec orci lectus, aliquam ut, faucibus non, euismod id, nulla. Nunc nulla. Vivamus elementum semper nisi. \n\nPellentesque egestas, neque sit amet convallis pulvinar, justo nulla eleifend augue, ac auctor orci leo non est. Quisque ut nisi.",
"spoiler": false
}'
Update a single review. The OAuth user must match the author of the review in order to update it.
PATCH https://api.mydramalist.com/v1/reviews/[ID]
Delete a review
curl X DELETE \
'http://api.mydramalist.com/reviews/[ID]' \
-H 'authorization: Bearer [access_token]' \
-H 'content-type: application/json' \
-H 'mdl-api-key: [client_id]'
Delete a single review. The OAuth user must match the author of the review in order to delete it.
DELETE https://api.mydramalist.com/v1/reviews/[ID]
Genres
Get genres
GET https://api.mydramalist.com/v1/genres
Sync
Get watchlist
curl "https://api.mydramalist.com/v1/sync/mylist/[TYPE]" \
-H "Content-Type: application/json" \
-H "mdl-api-key: [client_id]"
JSON response example:
[
{
"list_id": 1,
"episode_seen": 3,
"rating": 0,
"priority": 0,
"times_rewatched": 0,
"rewatch_value": 0,
"date_start": "0000-00-00",
"date_finish": "0000-00-00",
"note": "testing2",
"tags": "",
"updated_at": "2019-04-04T06:29:03Z",
"title": {
"id": 25172,
"title": "My Mister",
"original_title": "나의 아저씨",
"year": 2018,
"episodes": 16,
"rating": 9.2,
"released": true,
"ended": true,
"type": "Drama",
"country": "South Korea",
"language": "Korean",
"images": {
"thumb": "...",
"medium": "...",
"poster": "..."
}
}
}
]
Attributes
Attribute | Type | Description |
---|---|---|
type | string | The type of the watchlist. Currently, we support watchlist , completed , plantowatch , dropped , onhold , notinterested |
Add to watchlist
curl -X POST \
'https://api.mydramalist.com/v1/sync/mylist' \
-H "Content-Type: application/json" \
-H 'authorization: Bearer [access_token]' \
-H 'mdl-api-key: [client_id]' \
--data '[
{
"list_id": 1,
"episode_seen": 4,
"rating": 0,
"priority": 0,
"times_rewatched": 0,
"rewatch_value": 0,
"date_start": "0000-00-00",
"date_finish": "0000-00-00",
"note": "testing2",
"title": {
"id": 25172,
"title": "My Mister",
"year": 2018,
"type": "Drama",
"country": "South Korea"
}
},
{...}
]'
JSON response example:
{
"success": {
"titles": 1
},
"not_found": {
"titles": [
{
"id": 191641111,
"title": "Tokyo Ghoul"
}
]
}
}
Watchlist object
Attribute | Type | Description |
---|---|---|
list_id | integer | |
episode_seen | integer | |
rating | float | |
priority | integer | |
times_rewatched | integer | |
rewatch_value | integer | |
date_start | date | |
date_finish | date | |
note | string | |
title | object |
Title object
Attribute | Type | Description |
---|---|---|
id | integer | |
title | string | |
year | integer | |
type | string | |
country | string |
Remove from watchlist
curl X DELETE \
'http://api.mydramalist.com/sync/mylist' \
-H 'authorization: Bearer [access_token]' \
-H 'content-type: application/json' \
-H 'mdl-api-key: [client_id]' \
--data '[
{
"id": 12345
},
{
"id": 25172
}
]'
JSON response example:
{
"deleted": {
"titles": 1
},
"not_found": {
"titles": [
{
"id": 12345
}
]
}
}
Get last activities
curl "https://api.mydramalist.com/v1/sync/last_activities" \
-H "Content-Type: application/json" \
-H "mdl-api-key: [client_id]"
JSON response example:
{
"all": "2019-04-03T22:53:52Z",
"watching_at": "2019-04-03T22:53:52Z",
"completed_at": "2019-04-03T22:53:52Z",
"onhold_at": "0001-01-01T00:00:00Z",
"plan_to_watch_at": "0001-01-01T00:00:00Z",
"dropped_at": "0001-01-01T00:00:00Z",
"not_interested_at": "0001-01-01T00:00:00Z",
"rated_at": "2019-04-03T22:53:52Z"
}
Users
Get user settings
GET https://api.mydramalist.com/v1/users/settings
Errors
The Kittn API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
404 | Not Found -- The specified kitten could not be found. |
405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The kitten requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |