メインコンテンツまでスキップ

現在の配信を取得

DJ が今行っている配信の情報を取得します。タイトル・開始/終了時刻・リスナー数・挨拶・ カテゴリ・チャット凍結状態が一度に届きます。

メソッド・パスGET /v1/live
必要な権限live.read
成功レスポンス200
配信中でないとき404(OAPI_MNGR_0301)
export SPOON_BASE_URL="https://jp-openapi.spooncast.net"
export SPOON_ACCESS_TOKEN="{発行された access token}"

韓国リージョンなら https://kr-openapi.spooncast.net です — リージョン別アドレス。

リクエスト​

GET /v1/live

ヘッダー​

名前必須説明
Authorization✔Bearer {access_token} 形式です。

パスパラメータ・クエリパラメータ・リクエストボディは ありません。 どの DJ の配信かは トークンが決めます — トークンひとつが同意した DJ ひとりなので、ボットが他人の配信を指す 場所がありません。

リクエスト例​

curl -H "Authorization: Bearer $SPOON_ACCESS_TOKEN" "$SPOON_BASE_URL/v1/live"

レスポンス​

{
"liveId": 10001,
"title": "今夜の深夜ラジオ",
"startedAt": "2026-09-01T13:00:00Z",
"closeAirTime": "2026-09-01T15:00:00Z",
"listenerCount": 42,
"totalListenerCount": 137,
"welcomeMessage": "いらっしゃい!お便りはチャットへどうぞ",
"isChatFrozen": false,
"categories": ["talk"],
"tags": ["深夜ラジオ", "お便り"]
}
フィールド型null説明
liveIdnumberいいえこの配信回を指す id です。
titlestringいいえ配信タイトルです。
startedAtstringいいえ開始時刻です。ISO-8601 UTC(Z)です。
closeAirTimestringいいえ終了 予定 時刻です。ISO-8601 UTC(Z)です。
listenerCountnumberいいえ今接続中の リスナー数です。
totalListenerCountnumberいいえ配信開始から今までに 訪れた累計 人数です。
welcomeMessagestringいいえDJ が部屋に掲げた挨拶です。書いていなければ空文字列です。
isChatFrozenbooleanいいえチャットが凍結されているかを示します。
categoriesstring[]いいえ配信カテゴリです(sing・talk …)。
tagsstring[]いいえDJ が付けたハッシュタグです。

コード​

// live.ts — node --experimental-strip-types live.ts

interface Live {
liveId: number;
title: string;
startedAt: string;
closeAirTime: string;
listenerCount: number;
totalListenerCount: number;
welcomeMessage: string;
isChatFrozen: boolean;
categories: string[];
tags: string[];
}

const res = await fetch(`${process.env.SPOON_BASE_URL}/v1/live`, {
headers: { Authorization: `Bearer ${process.env.SPOON_ACCESS_TOKEN}` },
});

if (res.status === 404) {
console.log('配信中ではありません。しばらくしてから確認します。');
} else if (!res.ok) {
throw new Error(`取得に失敗しました: ${res.status}`);
} else {
const live = (await res.json()) as Live;
console.log(`[${live.liveId}] ${live.title} — リスナー ${live.listenerCount}人 (累計 ${live.totalListenerCount}人)`);
if (live.isChatFrozen) console.log('チャットが凍結されています。今は発言しません。');
}
node --experimental-strip-types live.ts

注意​

isChatFrozen が true のときはチャットを送れません。 チャットを送る が 失敗します。ボットもリスナーと同じルールに従うためです。発言する前にこの値を見て止めれば、 失敗を先に避けられます。

liveId はボットが 配信回を区別する値 です。「今回の配信で 1 回だけ」といったルールの 冪等キーとして使い、再接続したときに同じ配信か新しい配信かを判断するのにも使います。 startedAt で代用すると、値が少し揺れただけでひとつの配信が 2 つに分かれます。

listenerCount と totalListenerCount を混同しないでください。前者は 今接続中、後者は 訪れた累計 です。累計は減りません。

配信が始まったかを確認するためにこのエンドポイントをポーリングする必要はありません。 イベントストリームは配信中でなければ接続前に 404 を返すので、接続を再試行するだけで足ります — 接続ループ を参照してください。

エラー​

HTTPdetailCode何が起きたかどうするか
401なしトークンがないか無効です。DJ に再連携を案内します。
403なしlive.read の権限がありません。権限を追加して再同意を得ます。
404OAPI_MNGR_0301配信中ではありません。エラーではなく状態です。しばらくして呼び直します。
502OAPI_MNGR_2302配信サーバーのエラーです。バックオフしてから再試行します。

この表にない状態も返ることがあります。 誤ったメソッド・Content-Type(400・405・415、 OAPI_MNGR_0103)・呼び出し上限(429、ボディなし)・サーバーエラー(500、OAPI_MNGR_1002)は すべてのエンドポイントに共通 です — エラーコード にあります。

関連ドキュメント​