Skip to content

Douban APIs - Subject Details (V1)

prod-global
GET
/api/douban/get-subject-detail/v1

Retrieves detailed information for a specific subject identified by subjectId.

Typical use cases:

  • Displaying complete subject metadata in applications or websites.
  • Supporting content analysis, cataloging, or detail page rendering.

Parameters

NameInTypeRequiredDescription
tokenquerystringYesAccess token for this API service.
subjectIdquerystringYesThe unique ID for a movie or TV subject on Douban.

Code Samples

💡 Environment Note

Default samples use https://api.justoneapi.com (prod-global). For users in Mainland China, it is recommended to replace it with http://47.117.133.51:30015 (prod-cn) for better performance. See Environment Guide.

bash
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
curl -X GET "https://api.justoneapi.com/api/douban/get-subject-detail/v1?token=YOUR_API_KEY&subjectId=VALUE"
text
I want to use the "Subject Details (V1)" API from Just One API.
API Endpoint: https://api.justoneapi.com/api/douban/get-subject-detail/v1
HTTP Method: GET
Authentication: Append "?token=YOUR_API_KEY" to the URL.
OpenAPI Definition: https://docs.justoneapi.com/openapi/douban-apis/subject-details-v1-en.json

Parameters:
- token (query): Access token for this API service. (Required)
- subjectId (query): The unique ID for a movie or TV subject on Douban. (Required)

Return format: JSON

Response Handling & Error Codes:
1. Business results should be determined by the "code" field in the response body (code 0 means success).
2. Timeout Recommendation: Set request timeout to at least 60 seconds.
3. Business Code Reference:
   - 0: Success
   - 100: Invalid or Inactive Token
   - 301: Collection Failed. Please Retry.
   - 302: Rate Limit Exceeded
   - 303: Daily Quota Exceeded
   - 400: Invalid Parameters
   - 500: Internal Server Error
   - 600: Permission Denied
   - 601: Insufficient Balance

Please help me write a script in my preferred programming language to call this API and handle the response.
python
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import requests

url = "https://api.justoneapi.com/api/douban/get-subject-detail/v1?token=YOUR_API_KEY&subjectId=VALUE"
response = requests.get(url)
print(response.json())
js
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
const response = await fetch("https://api.justoneapi.com/api/douban/get-subject-detail/v1?token=YOUR_API_KEY&subjectId=VALUE", {
  method: "GET"
});
const data = await response.json();
console.log(data);
java
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.justoneapi.com/api/douban/get-subject-detail/v1?token=YOUR_API_KEY&subjectId=VALUE"))
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
go
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	client := &http.Client{}
	url := "https://api.justoneapi.com/api/douban/get-subject-detail/v1?token=YOUR_API_KEY&subjectId=VALUE"
	req, _ := http.NewRequest("GET", url, nil)
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
php
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.justoneapi.com/api/douban/get-subject-detail/v1?token=YOUR_API_KEY&subjectId=VALUE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Responses

json
{
  "code": 0,
  "data": {
    "title": "镖人:风起大漠",
    "year": "2026",
    "poster": "https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2929760596.webp",
    "director": "袁和平",
    "writer": "俞白眉 / 苏照彬 / 陈大利 / 杨子",
    "cast": "吴京 / 谢霆锋 / 于适 / 陈丽君 / 孙艺洲 / 此沙 / 李云霄 / 梁家辉 / 张晋 / 惠英红 / 张译 / 李连杰 / 刘耀文 / 熊瑾怡 / 莒谦朗 / 白那日苏 / 梁壁荧 / 文俊辉 / 董思成 / 林秋楠 / 景瓷 / 张艺泷 / 李嘉辉 / 寇占文 / 代乐乐 / 释彦能 / 徐向东 / 淳于珊珊 / 孟鹤堂 / 于荣光 / 陈少熙 / 赵箭 / 袁和平更多...",
    "type": "动作/武侠/古装",
    "region": "中国大陆",
    "language": "汉语普通话",
    "release_date": "2026-02-17(中国大陆)",
    "episodes": "",
    "duration": "126分钟",
    "alias": "镖人(电影版) / 镖人 / Blades of the Guardians: Wind Rises in the Desert",
    "imdb": "tt32649961",
    "rating": "7.5",
    "rating_count": "330653"
  }
}

💡 Note: For list data, the example shows only 1-2 items for simplicity. The actual count depends on the API response.