Download OpenAPI specification:Download
Holodex Public API. Successor to the HoloAPI v1
Please consider joining our Discord Server for service downtime announcements
This is API Documentation for Public Accessible API powering holodex.net
To properly secure your API Access (and prevent being blocked by our service), please log into Holodex and acquire a API KEY via the Account Settings page. In order to reliably access the API and prevent rate lockouts or CORS issues, please set the API KEY in every single request using the header
X-APIKEY
Holodex Github / Issues / Project Management
Access the API key menu from top right account icon -> Account Settings
.
Use the API Key by adding it as a header to your requests using the Header X-APIKEY
fetch
or axios
Thank you for using the Holodex API (“we”, “our” or “Holodex”) application programming interface(s) (“Holodex API”). By using the Holodex API you are agreeing to the terms and conditions contained below (“Terms”). Your license to use the Holodex API is conditioned upon your agreement and conformant with the Terms. We reserve the right to update and otherwise amend the Terms from time to time without notice.
License grant. Holodex hereby grants you a revocable, non-sublicenseable, terminable, limited license to use the Holodex API solely in accordance with the Terms. Your license is automatically revoked if (i) you violate any of the Terms, (ii) we send a written notice of termination to you, or (iii) we disable your use of the Holodex API.
Adverse and Excessive Use. You may not use the Holodex API in a manner that adversely impacts Holodex's systems, including but not limited to Holodex servers or other applications. Further we reserve the right to suspend, terminate or throttle your use of the Holodex API in the event your use is deemed excessive by Holodex.
Keys. You may not use multiple application API keys for the same use case or application.
Monitoring. You may not use or access the Holodex API for purposes or monitoring the availability, performance or functionality of any of Holodex's services or for any other benchmarking or competitive purposes.
Third Party Access. You may provide access to the API to third party developers (e.g. agencies or approved partners). You are responsible for ensuring that any third party to whom you provide access abides by the Terms. Holodex will have exclusive discretion to determine whether a particular use of an API key by a third party is acceptable. You are not permitted to share API keys to bypass Holodex restrictions. You are responsible for ensuring that any third party to whom you provide access abides by the Terms. Further, Holodex reserves the right to reject third party access to the API.
Charging for Access. You may not charge a premium for access to the Holodex API or any content derived from Holodex API
Laws; Regulations; Privacy Policy. Do not use the Holodex API in any manner or for any purpose that violates any law, regulation, code or any rights of any person or entity, including but not limited to intellectual privacy rights, rights of privacy, or rights of personality. Further, you must maintain a privacy policy that accurately reflects your use of the content accessed through the Holodex API.
Holodex may elect to provide you with support for the Holodex API (collectively, “Support”), in its sole discretion, and may terminate such Support at any time without notice to you. Holodex may change, suspend, or discontinue any aspect of the Holodex API at any time, including the availability of any Holodex API. Holodex may also impose limits on certain features and services or restrict your access to parts or all of the Holodex API without notice or liability.
The Holodex API is provided “as is” and Holodex disclaims all warranties, conditions, or representations (express, implied, oral or written) with respect to the Holodex API and any support related thereto, including all warranties of merchantability, fitness for a particular purpose, non-infringement, non-interference, accuracy of data, and warranties arising from a course of dealing.
To the maximum extent permitted by applicable law, you hereby release and waive all claims against Holodex, and its partners from any and all liability for claims, damages (actual and/or consequential), costs and expenses (including litigation costs and attorneys’ fees) of every kind and nature, arising from or in any way related to your use of the Holodex API. If you are a California resident, you waive your rights under California Civil Code 1542, which states, “A general release does not extend to claims which the creditor does not know or suspect to exist in his favor at the time of executing the release, which if known by him must have materially affected his settlement with the debtor.” You understand that any fact relating to any matter covered by this release may be found to be other than now believed to be true and you accept and assume the risk of such possible differences in fact. In addition, you expressly waive and relinquish any and all rights and benefits which you may have under any other state or federal statute or common law principle of similar effect, to the fullest extent permitted by law.
If You provide public access to the Holodex API and its material (including in modified form), You should provide:
This is somewhat similar to calling /videos
.
However, this endpoint imposes these default values on the query parameters: You can choose to override them by providing your own values.
status: [STATUSES.LIVE, STATUSES.UPCOMING].join(','),
type: 'stream',
sort: 'available_at',
order: 'asc',
max_upcoming_hours: 48,
limit: 9999,
include: live_info + query's include
channel_id | string Example: channel_id=UCl_gCybOJRIgOXw6Qb4qJzQ Filter by video uploader channel id |
status | string Enum: "new" "upcoming" "live" "past" "missing" Example: status=past Filter by video status |
lang | string Default: "all" Example: lang=en,ja A comma separated list of language codes to filter channels/clips, official streams do not follow this parameter |
type | string Enum: "stream" "clip" Filter by type of video |
topic | string Example: topic=singing Filter by video topic id |
include | Array of strings Items Enum: "clips" "refers" "sources" "simulcasts" "mentions" "description" "live_info" "channel_stats" "songs" Example: include=live_info,clips Comma separated string of extra info for video. Should be a string instead of an array. |
org | string Example: org=Hololive Filter by clips that feature the org's talent or videos posted by the org's talent |
mentioned_channel_id | string Filter by mentioned channel id, excludes itself. Generally used to find collabs/clips that include the requested channel |
sort | string Default: "available_at" Example: sort=start_scheduled Sort by any returned video field |
order | string Default: "desc" Enum: "asc" "desc" Order by ascending or descending |
limit | integer <= 50 Default: 25 Results limit |
offset | integer Default: 0 Offset results |
paginated | string Default: "<empty>" If paginated is set to any non-empty value, return an object with total, otherwise returns an array. |
max_upcoming_hours | number Example: max_upcoming_hours=24 Number of maximum hours upcoming to get upcoming videos by (for rejecting waiting rooms that are two years out) |
id | string A single Youtube Video ID. If Specified, only this video can be returned (may be filtered out by other conditions though) |
[- {
- "available_at": "2021-05-13T19:59:59.000Z",
- "channel": {
- "english_name": "Ninomae Ina’nis",
- "id": "UCMwGHR0BTZuLsmjY_NT5Pwg",
- "name": "Ninomae Ina'nis Ch. hololive-EN",
- "type": "vtuber"
}, - "duration": 0,
- "id": "89rZZO10m0k",
- "live_viewers": 12685,
- "published_at": "2021-05-13T13:47:09.000Z",
- "start_actual": "2021-05-13T19:59:59.000Z",
- "start_scheduled": "2021-05-13T20:00:00.000Z",
- "status": "live",
- "title": "【Minecraft】 waHHHH",
- "topic_id": "minecraft",
- "type": "stream"
}, - {
- "available_at": "2021-05-13T23:00:00.000Z",
- "channel": {
- "english_name": "Kishido Temma",
- "id": "UCGNI4MENvnsymYjKiZwv9eg",
- "name": "Temma Ch. 岸堂天真",
- "type": "vtuber"
}, - "duration": 0,
- "id": "CPD_nW0rcnk",
- "published_at": "2021-05-13T16:48:21.000Z",
- "start_scheduled": "2021-05-13T23:00:00.000Z",
- "status": "upcoming",
- "title": "【STUDY】New Studying EN Application!!新しい英語勉強ソフトやってみる【岸堂天真/ホロスターズ】",
- "topic_id": "english_only",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T03:00:00.000Z",
- "channel": {
- "english_name": "Shirogane Noel",
- "id": "UCdyqAaZDKHXg4Ahi7VENThQ",
- "name": "Noel Ch. 白銀ノエル",
- "type": "vtuber"
}, - "duration": 0,
- "id": "uAGM8d4-X2U",
- "published_at": "2021-05-13T17:17:06.000Z",
- "start_scheduled": "2021-05-14T03:00:00.000Z",
- "status": "upcoming",
- "title": "Let’s study English together📝超絶久々のDuolingo!【白銀ノエル/ホロライブ】",
- "topic_id": "english_only",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T10:00:00.000Z",
- "channel": {
- "english_name": "Kanade Izuru",
- "id": "UCZgOv3YDEs-ZnZWDYVwJdmA",
- "name": "Izuru Ch. 奏手イヅル",
- "type": "vtuber"
}, - "duration": 197,
- "id": "d0NXC7POoUs",
- "published_at": "2021-05-12T03:04:58.000Z",
- "start_scheduled": "2021-05-14T10:00:00.000Z",
- "status": "upcoming",
- "title": "【歌ってみた】ジャガーノート【奏手イヅル/アステル・レダ】",
- "topic_id": "singing",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T10:00:00.000Z",
- "channel": {
- "english_name": "Sakura Miko",
- "id": "UC-hM6YJuNYVAmUWxeIr9FeA",
- "name": "Miko Ch. さくらみこ",
- "type": "vtuber"
}, - "duration": 0,
- "id": "BLDvnztpcXM",
- "published_at": "2021-05-13T18:04:52.000Z",
- "start_scheduled": "2021-05-14T10:00:00.000Z",
- "status": "upcoming",
- "title": "【 】よていち!【ホロライブ/さくらみこ】",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T11:00:00.000Z",
- "channel": {
- "english_name": "Oozora Subaru",
- "id": "UCvzGlP9oQwU--Y0r9id_jnA",
- "name": "Subaru Ch. 大空スバル",
- "type": "vtuber"
}, - "duration": 0,
- "id": "pGdQB7nPOi8",
- "published_at": "2021-05-13T10:00:39.000Z",
- "start_scheduled": "2021-05-14T11:00:00.000Z",
- "status": "upcoming",
- "title": "【】単発クイズゲー【】",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T12:00:00.000Z",
- "channel": {
- "english_name": "Natsuiro Matsuri",
- "id": "UCQ0UDLQCjY0rmuxCDE38FGg",
- "name": "Matsuri Channel 夏色まつり",
- "type": "vtuber"
}, - "duration": 0,
- "id": "tpVtbVVBnSs",
- "published_at": "2021-05-13T20:01:50.000Z",
- "start_scheduled": "2021-05-14T12:00:00.000Z",
- "status": "upcoming",
- "title": "【APEX】うるか幼稚園まゆげ組/CRカスタム#6【ホロライブ/夏色まつり】",
- "topic_id": "apex",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T12:00:00.000Z",
- "channel": {
- "english_name": "Arurandeisu",
- "id": "UCKeAhJvy8zgXWbh9duVjIaQ",
- "name": "Aruran Ch. アルランディス",
- "type": "vtuber"
}, - "duration": 0,
- "id": "wyJTO7CXOHc",
- "published_at": "2021-05-13T12:10:17.000Z",
- "start_scheduled": "2021-05-14T12:00:00.000Z",
- "status": "upcoming",
- "title": "【#アラボ 】その筋トレ目的に合わせて考えてますか!? -ARN's Lab-【アルランディス/ホロスターズ】",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T12:00:00.000Z",
- "channel": {
- "english_name": "Shishiro Botan",
- "id": "UCUKD-uaobj9jiqB-VXt71mA",
- "name": "Botan Ch.獅白ぼたん",
- "type": "vtuber"
}, - "duration": 0,
- "id": "X1xXG2qIJWg",
- "published_at": "2021-05-13T19:21:29.000Z",
- "start_scheduled": "2021-05-14T12:00:00.000Z",
- "status": "upcoming",
- "title": "【バイオハザードヴィレッジ】イーサンと次のステージへ―Resident Evil Village【獅白ぼたん/ホロライブ】",
- "topic_id": "residentevil",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T13:00:00.000Z",
- "channel": {
- "english_name": "Mori Calliope",
- "id": "UCL_qhgtOy0dy1Agp8vkySQg",
- "name": "Mori Calliope Ch. hololive-EN",
- "type": "vtuber"
}, - "duration": 0,
- "id": "_F2ITnPX7lg",
- "published_at": "2021-05-13T14:01:53.000Z",
- "start_scheduled": "2021-05-14T13:00:00.000Z",
- "status": "upcoming",
- "title": "【MINECRAFT】 Cabin Barbecue Vibes, Dead Beats! #hololiveEnglish #holoMyth",
- "topic_id": "minecraft",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T13:00:00.000Z",
- "channel": {
- "english_name": "Sakura Miko",
- "id": "UC-hM6YJuNYVAmUWxeIr9FeA",
- "name": "Miko Ch. さくらみこ",
- "type": "vtuber"
}, - "duration": 0,
- "id": "j-Y0xgqNXWc",
- "published_at": "2021-05-13T18:10:37.000Z",
- "start_scheduled": "2021-05-14T13:00:00.000Z",
- "status": "upcoming",
- "title": "【 ウマ娘プリティーダービー 】【ホロライブ/さくらみこ】",
- "topic_id": "umamusume",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T13:00:00.000Z",
- "channel": {
- "english_name": "Rikkaroid",
- "id": "UC9mf_ZVpouoILRY9NUIaK-w",
- "name": "Rikka ch.律可",
- "type": "vtuber"
}, - "duration": 0,
- "id": "q2s5d8A_pm0",
- "published_at": "2021-05-12T10:47:10.000Z",
- "start_scheduled": "2021-05-14T13:00:00.000Z",
- "status": "upcoming",
- "title": "#16【RiTunes Labo】生セッション歌枠:ゲスト『miro』【律可/ホロスターズ 】#りちゅらぼ",
- "topic_id": "singing",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T14:00:00.000Z",
- "channel": {
- "english_name": "Shiranui Flare",
- "id": "UCvInZx9h3jC2JzsIzoOebWg",
- "name": "Flare Ch. 不知火フレア",
- "type": "vtuber"
}, - "duration": 0,
- "id": "q-pIKINMwig",
- "published_at": "2021-05-13T21:58:01.000Z",
- "start_scheduled": "2021-05-14T14:00:00.000Z",
- "status": "upcoming",
- "title": "【GTAV】感動のフィナーレ・・・?The emotional finale...?【ホロライブ/不知火フレア】",
- "topic_id": "gta5",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T14:30:00.000Z",
- "channel": {
- "english_name": "Tokino Sora",
- "id": "UCp6993wxpyDPHUpavwDFqgg",
- "name": "SoraCh. ときのそらチャンネル",
- "type": "vtuber"
}, - "duration": 0,
- "id": "T4FmAguGOI0",
- "published_at": "2021-05-13T15:18:16.000Z",
- "start_scheduled": "2021-05-14T14:30:00.000Z",
- "status": "upcoming",
- "title": "【誕生日】カウントダウンするよぬんぬん!!【#ときのそら誕生日2021】",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T15:00:00.000Z",
- "channel": {
- "english_name": "Himemori Luna",
- "id": "UCa9Y57gfeY0Zro_noHRVrnw",
- "name": "Luna Ch. 姫森ルーナ",
- "type": "vtuber"
}, - "duration": 0,
- "id": "IYhUfwJuGEo",
- "published_at": "2021-05-13T17:26:21.000Z",
- "start_scheduled": "2021-05-14T15:00:00.000Z",
- "status": "upcoming",
- "title": "【 酒と肴 】高級クラブルーナ🍸オープンするのらっ!✨(・o・🍬)【姫森ルーナ/ホロライブ】",
- "type": "stream"
}, - {
- "available_at": "2021-05-14T17:00:00.000Z",
- "channel": {
- "english_name": "Natsuiro Matsuri",
- "id": "UCQ0UDLQCjY0rmuxCDE38FGg",
- "name": "Matsuri Channel 夏色まつり",
- "type": "vtuber"
}, - "duration": 0,
- "id": "jDANZuw6IDM",
- "published_at": "2021-05-12T23:53:59.000Z",
- "start_scheduled": "2021-05-14T17:00:00.000Z",
- "status": "upcoming",
- "title": "【Minecraft】睡眠導入 / ムーンハウス作成!【ホロライブ/夏色まつり】",
- "topic_id": "minecraft",
- "type": "stream"
}
]
Pretty much everything you need. This is the most 'vanilla' variant with almost no preset values, and /channels/{channelId}/{type}
and /live
endpoints both use the same query structure but provision default values differently for some of the query params.
Not as powerful at searching arbitrary text as the Search API (currently not documented/available).
channel_id | string Example: channel_id=UCl_gCybOJRIgOXw6Qb4qJzQ Filter by video uploader channel id |
status | string Enum: "new" "upcoming" "live" "past" "missing" Example: status=past Filter by video status |
lang | string Default: "all" Example: lang=en,ja A comma separated list of language codes to filter channels/clips, official streams do not follow this parameter |
type | string Enum: "stream" "clip" Filter by type of video |
topic | string Example: topic=singing Filter by video topic id |
include | Array of strings Items Enum: "clips" "refers" "sources" "simulcasts" "mentions" "description" "live_info" "channel_stats" "songs" Example: include=live_info,clips Comma separated string of extra info for video. Should be a string instead of an array. |
org | string Example: org=Hololive Filter by clips that feature the org's talent or videos posted by the org's talent |
mentioned_channel_id | string Filter by mentioned channel id, excludes itself. Generally used to find collabs/clips that include the requested channel |
sort | string Default: "available_at" Example: sort=start_scheduled Sort by any returned video field |
order | string Default: "desc" Enum: "asc" "desc" Order by ascending or descending |
limit | integer <= 50 Default: 25 Results limit |
offset | integer Default: 0 Offset results |
paginated | string Default: "<empty>" If paginated is set to any non-empty value, return an object with total, otherwise returns an array. |
max_upcoming_hours | number Example: max_upcoming_hours=24 Number of maximum hours upcoming to get upcoming videos by (for rejecting waiting rooms that are two years out) |
id | string A single Youtube Video ID. If Specified, only this video can be returned (may be filtered out by other conditions though) |
from | string ISO8601 Date String for minimum |
to | string ISO8601 Date String for maximum |
{- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "clips": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "sources": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "refers": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "simulcasts": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "mentions": [
- {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string",
- "org": "string"
}
], - "songs": 0
}
channelId required | string ID of the Youtube Channel that is being queried |
{- "clip_count": null,
- "comments_crawled_at": null,
- "crawled_at": "2021-05-13T20:44:14.001Z",
- "created_at": "2021-04-23T07:21:00.045Z",
- "description": "I make translated clips from Hololive and Vtubers.\n",
- "english_name": null,
- "id": "UC4Fh9OcvIEWK405Cvg25jDw",
- "inactive": false,
- "lang": "en",
- "name": "Sushi [Hololive and Vtubers]",
- "org": null,
- "published_at": "2020-05-26T06:35:52.412Z",
- "suborg": null,
- "subscriber_count": "163000",
- "twitter": null,
- "type": "subber",
- "updated_at": "2021-05-13T15:00:05.766Z",
- "video_count": "1586",
- "view_count": "135584366",
- "yt_uploads_id": "UU4Fh9OcvIEWK405Cvg25jDw"
}
A simplified endpoint for access channel specific data. If you want more customization, the same result can be obtained by calling the /videos
endpoint.
channelId required | string ID of the Youtube Channel that is being queried |
type required | string Enum: "clips" "videos" "collabs" The type of video resource to fetch. Clips finds clip videos of a |
lang | string Default: "all" Example: lang=en,ja A comma separated list of language codes to filter channels/clips, official streams do not follow this parameter |
include | Array of strings Items Enum: "clips" "refers" "sources" "simulcasts" "mentions" "description" "live_info" "channel_stats" "songs" Example: include=live_info,clips Comma separated string of extra info for video. Should be a string instead of an array. |
limit | integer <= 50 Default: 25 Results limit |
offset | integer Default: 0 Offset results |
paginated | string Default: "<empty>" If paginated is set to any non-empty value, return an object with total, otherwise returns an array. |
{- "total": 0,
- "items": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "clips": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "sources": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "refers": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "simulcasts": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "mentions": [
- {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string",
- "org": "string"
}
], - "songs": 0
}
]
}
This endpoint is similar to the /live endpoint and usually replies much faster. It is more friendly in general. The cost to execute a lookup is significantly cheaper. It's unfortunately less customizable as a result.
We recommends using this if you have a fixed set of channel IDs to look up status for.
channels | string comma separated Youtube Channel IDs |
[- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string"
}
]
Retrieves a video object.
Also retrieves Comments if query parameter c
is set.
Also retrieves Recommendations if query parameter lang
is set
videoId required | string ID of a Youtube Video |
lang | string Default: "all" Example: lang=en,ja A comma separated list of language codes to filter channels/clips, official streams do not follow this parameter |
c | string Enum: "1" "0" Example: c=1 if |
{- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "clips": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "sources": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "refers": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "simulcasts": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string",
- "channel": {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string"
}
}
], - "mentions": [
- {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "photo": "string",
- "org": "string"
}
], - "songs": 0,
- "comments": [
- {
- "comment_key": "string",
- "video_id": "string",
- "message": "string"
}
], - "recommendations": [
- {
- "id": "string",
- "title": "string",
- "type": "stream",
- "topic_id": "minecraft",
- "published_at": "2019-08-24T14:15:22Z",
- "available_at": "2019-08-24T14:15:22Z",
- "duration": 0,
- "status": "new",
- "start_scheduled": "2019-08-24T14:15:22Z",
- "start_actual": "2019-08-24T14:15:22Z",
- "end_actual": "2019-08-24T14:15:22Z",
- "live_viewers": 0,
- "description": "string",
- "songcount": 0,
- "channel_id": "string"
}
]
}
type | string Enum: "subber" "vtuber" Type of Channel, whether it's a vtuber or a subber. Leave unset to query all. |
offset | integer Default: 0 Offset results |
limit | integer <= 50 Default: 25 Results limit |
org | string Example: org=Hololive If set, filter for Vtuber belonging to a specific org |
lang | string Example: lang=en,ja,zh Comma separated list of languages. Language is a property of Channel, so only Channels satisfying the language will be returned. Leave empty to search for Vtubers and/or all clippers. |
sort | string Column to sort on, leave default to use 'org' as sort. Any first level property of channel should work here. |
order | string Enum: "asc" "desc" ASC or DESC order, default asc. |
[- {
- "id": "string",
- "name": "string",
- "english_name": "string",
- "type": "vtuber",
- "org": "string",
- "group": "string",
- "photo": "string",
- "banner": "string",
- "twitter": "string",
- "video_count": "string",
- "subscriber_count": "string",
- "view_count": "string",
- "clip_count": "string",
- "lang": "string",
- "published_at": "2019-08-24T14:15:22Z",
- "inactive": true,
- "description": "string"
}
]
Flexible endpoint to search for videos fufilling multiple conditions. Descriptions with "any" implies an OR condition, and "all" implies a AND condition.
Searching for topics and clips is not supported, because clips do not contain topic_ids
sort required | string non-empty Default: "newest" Enum: "oldest" "newest" |
lang | Array of strings If set, will filter clips to only show clips with these langs + all vtuber streams (provided |
target | Array of strings Items Enum: "clip" "stream" Target types of videos |
Array of objects Match all the following conditions | |
topic | Array of strings Return videos that match one of the provided topics |
vch | Array of strings Videos with all of the specified channel ids. If two or more channel IDs are specified, will only return their collabs, or if one channel is a clipper, it will only show clips of the other vtubers made by this clipper. |
org | Array of strings Videos of channels in any of the specified orgs, or clips that involve a channel in the specified org. |
paginated | boolean If set at all, responds with total and items wrapping the array of objects |
offset required | number |
limit required | number |
{- "sort": "newest",
- "lang": [
- "en",
- "ja"
], - "target": [
- "stream",
- "clip"
], - "conditions": [ ],
- "topic": [
- "singing"
], - "vch": [
- "UChAnqc_AY5_I3Px5dig3X1Q",
- "UCvaTdHTWBGv3MKj3KVqJVCw"
], - "org": [
- "Nijisanji",
- "Hololive"
], - "comment": [ ],
- "paginated": true,
- "offset": 0,
- "limit": 30
}
[ ]
Flexible endpoint to search for comments in videos fufilling multiple conditions. Descriptions with "any" implies an OR condition, and "all" implies a AND condition.
sort required | string non-empty Default: "newest" Enum: "oldest" "newest" |
lang | Array of strings If set, will filter clips to only show clips with these langs + all vtuber streams (provided |
target | Array of strings Items Enum: "clip" "stream" Target types of videos |
comment required | string Find videos with comments containing specified string (case insensitive) |
topic | Array of strings Return videos that match one of the provided topics |
vch | Array of strings Videos with all of the specified channel ids. If two or more channel IDs are specified, will only return their collabs, or if one channel is a clipper, it will only show clips of the other vtubers made by this clipper. |
org | Array of strings Videos of channels in any of the specified orgs, or clips that involve a channel in the specified org. |
paginated | boolean If set at all, responds with total and items wrapping the array of objects |
offset required | number |
limit required | number |
{- "sort": "newest",
- "lang": [
- "en",
- "ja"
], - "target": [
- "stream",
- "clip"
], - "conditions": [ ],
- "topic": [
- "singing"
], - "vch": [
- "UChAnqc_AY5_I3Px5dig3X1Q",
- "UCvaTdHTWBGv3MKj3KVqJVCw"
], - "org": [
- "Nijisanji",
- "Hololive"
], - "comment": "Lemon",
- "paginated": true,
- "offset": 0,
- "limit": 30
}
{- "total": 11,
- "items": [
- {
- "id": "3xns3zxYBkY",
- "title": "【#おかころ】わんにゃん深夜ライブ【オフコラボ】",
- "type": "stream",
- "published_at": "2020-10-19T06:02:44.000Z",
- "available_at": "2020-10-19T07:01:32.135Z",
- "duration": 4036,
- "status": "past",
- "songcount": 3,
- "channel": {
- "id": "UChAnqc_AY5_I3Px5dig3X1Q",
- "name": "Korone Ch. 戌神ころね",
- "type": "vtuber",
- "english_name": "Inugami Korone"
}, - "comments": [
- {
- "comment_key": "UgzdW0dndnSxBe71_Zp4AaABAg",
- "message": "Okayu's solo at 9:05 of Lemon was soooo good that even Korone was taking it all in. This has been a great day to start the week. From Coco & Haachama returning, Sui-chan's magnificent FREE FREE concert, to everyone showing their idol prowess with so many singing streams. This is what Hololive is all about & I'm so proud to be apart of all this right here & now."
}, - {
- "comment_key": "UgwCZ5ywJxmuc1TlniV4AaABAg",
- "message": "0:46 KORONE NOISES\r\n1:04 1. TOUCH / タッチ\r\n4:31 [MC1]\r\n6:19 2. Lemon\r\n10:36 [MC2]\r\n15:54 3. Racing into the Night (YORU NI KAKERU) / 夜に駆ける\r\n20:21 [MC3]\r\n23:37 4. SHIN TAKARAJIMA / 新宝島\r\n28:38 [MC4]\r\n33:10 5. ROKI / ロキ\r\n37:21 [MC5] & Hakujitsu / 白日\r\n43:50 6. Genesis of Aquarion / 創聖のアクエリオン\r\n48:32 [MC6]\r\n49:40 7. LION / ライオン\r\n54:40 [MC7] & Curry-Meshi in Miracle / カレーメシ・イン・ミラクル\r\n57:10 8. if... OKAYU SINGING & KORONE RAP\r\n1:01:00 9. if... KORONE SINGING & OKAYU RAP\r\n1:04:39 10. if... OKAYU SINGING & KORONE RAP"
}, - {
- "comment_key": "Ugz0aAkvJ23V2e9AO9h4AaABAg",
- "message": "..6:19 lemon\n39:48 ころママがおかゆ大好きな話\n42:40 白日\n57:11 if..おかゆ:歌 ころね:ラップ"
}, - {
- "comment_key": "UgzONJ8Et-Br1-MXv-Z4AaABAg",
- "message": "9:05 best okayu vocal.. this is third time she stream lemon.. she become more more better.. "
}, - {
- "comment_key": "UgwLuffiGjkAqMdAd8F4AaABAg",
- "message": "おかころライブ本当に楽しくて最高すぎた...ありがとう....!!\n\nmy memo &set list\n00:47 開始\r\n01:05 🎶タッチ / Touch / 岩崎良美\r\n06:19 🎶レモン / Lemon / 米津玄師\r\n12:33 歌プリの話\r\n13:32 ラブライブの話\r\n15:38 喉の調節\r\n15:52 🎶夜に駆ける / Racing into the Night / YOASOBI\r\n20:45 セトリ作り\r\n22:56 歌詞を分けておいてくれたころさん\r\n23:38 🎶新宝島 / Shin Takarajima / サカナクション\r\n - 26:01 間奏かわいい\r\n30:41 それは本当におかゆなのかな?\r\n33:10 🎶ロキ / Roki / みきとP\r\n - 35:28 きゅーん\r\n39:53 おかゆが好きなころねまま\n42:40 🎵白日 / Hakujitsu / King Gnu(ちょっとだけ)\r\n43:50 🎶創聖のアクエリオン / Genesis of Apuarion / AKINO\r\n49:36 🎶ライオン / Lion / May'n ・ 中島愛\r\n54:40 肩を!?\r\n57:10 🎶if... / DA PUMP (ころラップver. / Korone's Rap)\r\n-1:01:01 🎶if... / DA PUMP (おかラップver. / Okayu's Rap)\r\n-1:04:39 🎶on more!"
}, - {
- "comment_key": "UgxFPB8C69GToy0PIMN4AaABAg",
- "message": "URU-SETLIST / うるセトリ\r\n0:46 KORONE NOISES\r\n1:04 1. TOUCH / タッチ\r\n4:31 [MC1]\r\n6:19 2. Lemon\r\n10:36 [MC2]\r\n15:54 3. Racing into the Night (YORU NI KAKERU) / 夜に駆ける\r\n20:21 [MC3]\r\n23:37 4. SHIN TAKARAJIMA / 新宝島\r\n28:38 [MC4]\r\n33:10 5. ROKI / ロキ\r\n37:21 [MC5] & Hakujitsu / 白日\r\n43:50 6. Genesis of Aquarion / 創聖のアクエリオン\r\n48:32 [MC6]\r\n49:40 7. LION / ライオン\r\n54:40 [MC7] & Curry-Meshi in Miracle / カレーメシ・イン・ミラクル\r\n57:10 8. if... OKAYU SINGING & KORONE RAP\r\n1:01:00 9. if... KORONE SINGING & OKAYU RAP\r\n1:04:39 10. if... OKAYU SINGING & KORONE RAP\n\nAMAIZING RAP DOGGO"
}, - {
- "comment_key": "UgwgYxMhWlZ0NYC4v8Z4AaABAg",
- "message": "1:00 タッチ\n\n6:15 Lemon\n\n15:55 夜に駆ける\n\n23:35 新宝島\n\n33:08 ロキ\n\n42:40 白日(アカペラ)\n\n43:50 創聖のアクエリオン\n\n49:40 ライオン\n\n57:09 if…\n\n\n\n\n\n雑だけどタイムスケジュールです!!間違えてたところも直しましたーーー"
}, - {
- "comment_key": "Ugxf6cDoACgwv65RoG94AaABAg",
- "message": "【俺たちがうるさいので作るセトリ】\n1.1:05 タッチ/岩崎良美\n 4:14 音量大丈夫だった?→焚き火ASMR\n 4:47 今日はオフコラボ\n2.6:19 Lemon/米津玄師\n 10:49 おがゆの腕の温もりを感じている\n 11:38 最後にオフコラボやったのいつ?\n 12:30 最近一緒にアニメ観るのにハマってる\n 14:27 ころさんの耳が刺さってる\n3.15:54 夜に駆ける/YOASOBI\n 20:05 おがゆすき!→駆け出す音量チェック\n 20:45 セトリは?(荒ぶる&目隠しおかゆ)\n 22:22 配信終わったらまたアニメ観るもんね?\n 23:29 サザエやめろ!→サザエ\"さん\"だろ!\n4.23:38 新宝島/サカナクション\n 28:47 手を繋ぐおかころ(慎太から時ま)\n 29:21 おかゆところねの身長差\n 30:46 隣におかゆが居るんだよ→居ません\n5.33:11 ロキ/みきとP feat.鏡音リン\n 37:45 ころさんの耳が刺さるのでカバー付けて\n 38:54 耳の圧迫感がトラウマな戌神ころね\n 39:53 ころねママはおかゆのことが大好き\n 41:36 うるセトリ(ころさんの怪しい記憶力)\n 42:25 なに白目って?(白日)♪\n6.43:51 創聖のアクエリオン/AKINO\n 48:49 連続で聴いてくれるかな?→オッケー!\n7.49:43 ライオン/May'n , 中島愛\n 54:40 おがゆが肩を組んできた!→組んでナイヨ\n 55:06 最後の曲なんだと思う?\n 55:23 犬のお巡りさん→わんわんわわ~ん♪\n 55:28 カレーカレー→カレーメシでshow♪\n 55:46 コメ欄にシオン登場\n8.57:10 if.../DA PUMP(ころラップ)\n9.1:01:01 if.../DA PUMP(おかラップ)\n10.1:04:45 if.../DA PUMP(おかころラップ)"
}, - {
- "comment_key": "Ugzm_3I_d-TsEkclr154AaABAg",
- "message": "1:04 タッチ / 岩崎良美\n6:19 Lemon / 米津玄師\n15:53 夜に駆ける / YOASOBI\n23:36 新宝島 / サカナクション\n33:09 ロキ / みきとP\n42:39 白日 / King Gnu\n43:50 創聖のアクエリオン / AKINO\n49:42 ライオン / May'n 中島愛\n55:29 カレーメシ・イン・ミラクル / スパイスラブ\n57:10 if… / DA PUMP (ころさんラップver.)\n┣1:01:00 おかゆラップver.\n┗1:04:36 ころさんラップver.\n\nころさんのラップ好きすぎる"
}, - {
- "comment_key": "UgyVojylYdW8LEo_F6F4AaABAg",
- "message": "6:16 Super Duper LIT Lemon Cover"
}, - {
- "comment_key": "Ugy1P9__oigsxJ5Ilg54AaABAg",
- "message": "0:46 KORONE NOISES\r\n1:04 1. TOUCH / タッチ\r\n4:31 [MC1]\r\n6:19 2. Lemon\r\n10:36 [MC2]\r\n15:54 3. Racing into the Night (YORU NI KAKERU) / 夜に駆ける\r\n20:21 [MC3]\r\n23:37 4. SHIN TAKARAJIMA / 新宝島\r\n28:38 [MC4]\r\n33:10 5. ROKI / ロキ\r\n37:21 [MC5] & Hakujitsu / 白日\r\n43:50 6. Genesis of Aquarion / 創聖のアクエリオン\r\n48:32 [MC6]\r\n49:40 7. LION / ライオン\r\n54:40 [MC7] & Curry-Meshi in Miracle / カレーメシ・イン・ミラクル\r\n57:10 8. if... OKAYU SINGING & KORONE RAP\r\n1:01:00 9. if... KORONE SINGING & OKAYU RAP\r\n1:04:39 10. if... OKAYU SINGING & KORONE RAP"
}
]
}
]
}