{"openapi":"3.1.0","info":{"title":"Huangguo public catalog","version":"1.2.0","description":"Read-only. Unknown facts are null; audio_languages and subtitle_languages describe all published clips; available_subtitle_languages is the union across published clips. subtitle_scope defaults to all_published; explicitly use any_published for partial coverage. duration_scope=continuous selects at least two consecutive episodes from episode 1, stopping at gaps, non-episodes, repeated sources or a requested language mismatch. continuous_viewing reports that exact path; its duration and language filters cover the same episodes. Unknown duration stays null, with a separate known_duration_seconds subtotal. any_published is incompatible with continuous. locale accepts all 12 site languages. Episode subtitle_kind is burned_in, soft, mixed or null; subtitles_updated_at is the soft-caption release date. A known language list does not rule out unmeasured languages. Durations are seconds. Default duration_scope=published, never full-work duration. 60 requests/IP/minute."},"servers":[{"url":"https://huangguodrama.ai"}],"paths":{"/api/agent/v1/search/":{"get":{"operationId":"search_titles","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":160}},{"name":"genre","in":"query","required":false,"schema":{"type":"string","maxLength":60}},{"name":"audio","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-zA-Z-]{2,12}$"}},{"name":"subtitle","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-zA-Z-]{2,12}$"}},{"name":"subtitle_scope","in":"query","required":false,"schema":{"default":"all_published","description":"Subtitle coverage: every published clip by default; any_published explicitly allows partial coverage. Continuous viewing always requires every episode in its path.","type":"string","enum":["all_published","any_published"]}},{"name":"completeness","in":"query","required":false,"schema":{"type":"string","enum":["complete","partial","unknown"]}},{"name":"min_duration","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":10000000}},{"name":"max_duration","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":10000000}},{"name":"duration_scope","in":"query","required":false,"schema":{"default":"published","description":"Seconds across published media, the verified complete work, or a consecutive path from episode 1 matching the requested languages. Continuous requires at least two episodes and excludes trailers, opening cuts and repeated sources.","type":"string","enum":["published","complete_work","continuous"]}},{"name":"locale","in":"query","required":false,"schema":{"default":"zh","type":"string","enum":["zh","en","zh-Hant","ja","id","es","ru","ar","fr","pt","vi","th"]}},{"name":"featured","in":"query","required":false,"schema":{"default":"false","type":"string","enum":["true","false"]}},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"integer","minimum":1,"maximum":100000}},{"name":"limit","in":"query","required":false,"schema":{"default":10,"type":"integer","minimum":1,"maximum":20}},{"name":"X-Agent-Test","in":"header","schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"Public facts with request_id, canonical watch_url and attributed_watch_url"},"400":{"description":"Structured error; unknown and unpublished IDs both return 404"},"403":{"description":"Structured error; unknown and unpublished IDs both return 404"},"404":{"description":"Structured error; unknown and unpublished IDs both return 404"},"429":{"description":"Structured error; unknown and unpublished IDs both return 404"},"503":{"description":"Structured error; unknown and unpublished IDs both return 404"}}}},"/api/agent/v1/titles/{id}/":{"get":{"operationId":"get_title","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,16}$"}},{"name":"locale","in":"query","required":false,"schema":{"default":"zh","type":"string","enum":["zh","en","zh-Hant","ja","id","es","ru","ar","fr","pt","vi","th"]}},{"name":"X-Agent-Test","in":"header","schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"Public facts with request_id, canonical watch_url and attributed_watch_url"},"400":{"description":"Structured error; unknown and unpublished IDs both return 404"},"403":{"description":"Structured error; unknown and unpublished IDs both return 404"},"404":{"description":"Structured error; unknown and unpublished IDs both return 404"},"429":{"description":"Structured error; unknown and unpublished IDs both return 404"},"503":{"description":"Structured error; unknown and unpublished IDs both return 404"}}}},"/api/agent/v1/titles/{id}/episodes/":{"get":{"operationId":"list_episodes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,16}$"}},{"name":"locale","in":"query","required":false,"schema":{"default":"zh","type":"string","enum":["zh","en","zh-Hant","ja","id","es","ru","ar","fr","pt","vi","th"]}},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"integer","minimum":1,"maximum":100000}},{"name":"limit","in":"query","required":false,"schema":{"default":10,"type":"integer","minimum":1,"maximum":20}},{"name":"X-Agent-Test","in":"header","schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"Public facts with request_id, canonical watch_url and attributed_watch_url"},"400":{"description":"Structured error; unknown and unpublished IDs both return 404"},"403":{"description":"Structured error; unknown and unpublished IDs both return 404"},"404":{"description":"Structured error; unknown and unpublished IDs both return 404"},"429":{"description":"Structured error; unknown and unpublished IDs both return 404"},"503":{"description":"Structured error; unknown and unpublished IDs both return 404"}}}}}}