milmilmilmil
API 參考

Anime

Per-anime details: episode listings, missing-episode reports, score, sync flags

GET
/api/v1/anime/{bangumiId}/duplicates

Returns one DupSet per episode that has 2+ media files, with each file's parsed metadata and the currently preferred file id.

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer
Formatint64

Response Body

application/json

curl -X GET "https://example.com/api/v1/anime/0/duplicates"
[  {    "anime_id": "string",    "anime_title": "string",    "episode_id": "string",    "episode_number": 0.1,    "preferred_id": "string",    "manually_set": true,    "files": [      {        "id": "string",        "path": "string",        "filename": "string",        "size_bytes": 0,        "resolution": 0,        "subgroup": "string",        "mod_time": "2019-08-24T14:15:22Z"      }    ],    "wasted_bytes": 0  }]
GET
/api/v1/anime/{bangumiId}/missing

Returns which episodes the library has, which are missing, and which are still pending future airings.

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer
Formatint64

Response Body

application/json

curl -X GET "https://example.com/api/v1/anime/0/missing"
{  "anime_id": "string",  "bangumi_id": 0,  "title": "string",  "total": 0,  "have": [    0  ],  "missing": [    0  ],  "airing_pending": [    0  ],  "unknown_total": true,  "generated_at": "2019-08-24T14:15:22Z"}
POST
/api/v1/anime/{bangumiId}/missing/auto-rule

Merges the requested episode numbers into an existing bangumi-scoped download rule, or creates a new one when none exists. rss_feed_id is required only when creating a new rule.

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer
Formatint64

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/anime/0/missing/auto-rule" \  -H "Content-Type: application/json" \  -d '{    "episode_numbers": [      0    ]  }'
{  "rule_id": "string",  "episode_range": "string",  "action": "created"}
POST
/api/v1/anime/{bangumiId}/missing/download

Adds the magnet (or torrent_url) to the downloader and records a downloads row linked to the anime's bangumi_id and library.

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer
Formatint64

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/anime/0/missing/download" \  -H "Content-Type: application/json" \  -d '{}'
{  "download_id": "string",  "gid": "string"}
POST
/api/v1/anime/{bangumiId}/missing/search

Aggregates results across configured torrent providers, deduped and ranked best-first (alive seeders, higher resolution, more seeders, larger size, known subgroup).

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer
Formatint64

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/anime/0/missing/search" \  -H "Content-Type: application/json" \  -d '{    "episode_number": 0  }'
{  "results": [    {      "title": "string",      "magnet": "string",      "torrent_url": "string",      "size_bytes": 0,      "size_display": "string",      "seeders": 0,      "leechers": 0,      "info_hash": "string",      "provider": "string",      "published_at": "2019-08-24T14:15:22Z",      "parsed": {        "title": "string",        "season": 0,        "episode": 0.1,        "resolution": 0,        "sub_group": "string",        "video_codec": "string",        "audio_codec": "string",        "container": "string",        "language": "string",        "release_type": "string"      }    }  ]}
GET
/api/v1/anime/{bangumiId}/playable-episodes

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer

Response Body

application/json

curl -X GET "https://example.com/api/v1/anime/0/playable-episodes"
[  {    "episode": {      "bangumi_episode_id": 0,      "sort": 0,      "title": "string",      "title_original": "string",      "air_date": "string",      "synopsis": "string"    },    "media_file": {      "id": "string",      "library_id": "string",      "path": "string",      "filename": "string",      "size": 0,      "duration": 0,      "bangumi_id": 0,      "bangumi_episode_id": 0,      "episode_number": 0,      "created_at": "string",      "updated_at": "string"    },    "progress": {      "id": "string",      "media_file_id": "string",      "episode_id": 0,      "position_seconds": 0,      "duration_seconds": 0,      "completed": true,      "updated_at": "string"    }  }]
PATCH
/api/v1/anime/{bangumiId}/score

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X PATCH "https://example.com/api/v1/anime/0/score" \  -H "Content-Type: application/json" \  -d '{    "score": 0  }'
Empty
PATCH
/api/v1/anime/{bangumiId}/sync-flags

Set sync_disabled (0|1) to opt out of outgoing tracker sync, and/or watch_status_override to pin a canonical watch status. Omitted fields keep their current value.

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer
Formatint64

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X PATCH "https://example.com/api/v1/anime/0/sync-flags" \  -H "Content-Type: application/json" \  -d '{}'
Empty
GET
/api/v1/anime/{bangumiId}/offline-manifest

Authorization

bearerAuth
AuthorizationBearer <token>

Pass an API token obtained from POST /api/v1/auth/login or POST /api/v1/api-tokens. Tokens have the prefix mlml_.

In: header

Path Parameters

bangumiId*integer

Response Body

application/json

curl -X GET "https://example.com/api/v1/anime/0/offline-manifest"
{  "bangumi_id": 0,  "title": "string",  "episodes": [    {      "episode_id": "string",      "number": 0,      "title": "string",      "file": {        "id": "string",        "url": "string",        "size_bytes": 0,        "etag": "string",        "container": "string",        "width": 0,        "height": 0,        "video_codec": "string"      },      "subtitles": [        {          "index": 0,          "language": "string",          "title": "string",          "url": "string"        }      ],      "danmaku_url": "string"    }  ]}