Douban APIs - Subject Details (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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
token | query | string | Yes | Access token for this API service. |
subjectId | query | string | Yes | The 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.
