Sora Cloud ドキュメント¶
サービスのお問い合わせなどは sora-cloud at shiguredo.jp までお願いいたします。 (このメールアドレスへの特定電子メールの送信を拒否いたします)
Sora Cloud に関する情報は 時雨堂 Discord サーバー の #sora-cloud-announce
で共有しています。
障害情報などもこちらで共有しておりますので、ご利用の際はご参加ください。
廃止機能情報¶
2024 年 12 月 1 日廃止¶
なし
2025 年 6 月 1 日廃止¶
認証ウェブフックの
user_agent_stats
払い出しrtc_stats
を利用してください詳細は rtc_stats の払い出し を確認してください
2025 年 12 月 1 日廃止¶
レガシー録画機能
代わりに録画機能(セッション単位)を利用してください
移行方法は レガシー録画機能から新しい録画機能 (セッション単位) への移行 を確認してください
RTP ストリーム停止/再開 API
代わりに転送フィルター機能を利用してください
認証成功時とセッション生成時の払い出しでの forwarding_filter の指定
代わりに forwarding_filters を利用してください
シグナリング接続時に forwarding_filter の指定
代わりに forwarding_filters を利用してください
開発ログ¶
Sora Cloud の開発ログを公開しています
このドキュメントについて¶
概要¶
Sora Cloud は WebRTC SFU Sora のクラウド版です。
特長¶
サーバーの構築や運用が不要¶
Sora をパッケージとして利用する場合と異なり、 サーバーの構築や運用を行うことなく、最新版の Sora を手軽に利用できます。
最大帯域と最大同時接続数での課金¶
利用時間や転送量による課金ではなく、帯域と同時接続数によって料金が決定します。
Sora の仕様について¶
Sora の仕様については Sora ドキュメントをご確認ください。
https://sora-doc.shiguredo.jp/
もし不明点がある場合はサポートまたはメールにてお問い合わせください。
利用してるバージョン¶
- Sora のバージョン:
2024.2.1
- Hisui のバージョン:
2023.2.1
チュートリアル¶
概要¶
Sora Cloud は WebRTC SFU Sora のクラウド版です。
用語¶
- 組織 (Org)
Sora Cloud を契約する法人または団体に割り当てられる Sora Cloud を利用する際の単位です
- メンバー
組織の中でアカウントを登録する個人です
- アカウント
メンバーのメールアドレス 1 つに対して 1 つのアカウントが作成されます
1 つの組織で最大 5 つのアカウントが登録できます
- API キー
Sora に接続する際に利用する JWT を作成するために必要なキーです
- プロジェクト (Project)
複数の異なるサービスや検証環境など、利用状況を分けて管理する際の単位です
1 つの組織で最大 5 つのプロジェクトを作成できます
- プロジェクト ID
Sora に接続する際に利用するプロジェクト単位のユニークな ID です
- HTTP クライアント
- Sora 開発ツール
Sora Cloud を利用する準備をする¶
プロジェクトを作成する¶
管理コンソールから Projects タブをクリックし、 Create project ボタンを押し、プロジェクトを作成してください。

プロジェクト名に好きな文字列を入力してください。ここでは HamHamHam としています。

Sora へ繋いでみる¶
前提¶
ブラウザは最新のブラウザを利用してください。 Chrome や Edge をお勧めします。
Sora 開発ツールを使った動作確認¶
プロジェクトの ... をクリックして Create Access Token をクリックしてください。

チャネル名に好きな文字列を入力してください。ここでは sora-devtools としています。

文字列を入力したら Create Access Token をクリックしてください。

Sora DevTools の URL をクリップボードにコピーしたら、ブラウザに貼り付けてください。

後は、connect を押すことで接続されます。もう一つタブを開いて同じように connect を押してみてください。 それぞれの音声や映像が配信されたら成功です。
注意
Sora 開発ツールの録画開始・停止やサイマルキャストの rid 切り替えなど、Sora API を利用する一部の機能は使用できません。
同時接続数を確認する¶
3 つの接続を繋いだまま Sora Cloud の API で今どのくらいの同時接続数があるか確認してみます。
API キーはプロジェクトから ... をクリックして Edit Project をクリックしてください。

Security の API Key (Primary API Key) からクリップポードにコピーして利用してください。

$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-live-concurrent-connections
HTTP/1.1 200 OK
Connection: keep-alive
Keep-Alive: timeout=5
content-length: 224
content-type: application/json; charset=UTF-8
date: Sat, 16 Apr 2022 11:28:42 GMT
3
Sora Cloud で利用できる様々な API は Sora Cloud API にありますのでご確認ください。
Sora の API を利用してみる¶
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/sora-api \
x-sora-target:'Sora_20201013.ListChannelConnections' \
channel_id='sora-cloud@25PO5TGFD26VB62G7C7DFAAYGA4J3CJN'
HTTP/1.1 200 OK
CF-Cache-Status: DYNAMIC
CF-Ray: 70db04327e3fefb2-NRT
Connection: keep-alive
Content-Encoding: gzip
Content-Type: applicaution/json
Date: Thu, 19 May 2022 07:11:04 GMT
Server: cloudflare
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
[
{
"audio": {
"codec_type": "OPUS"
},
"bundle_id": "TP8RRG5SN54DD7VBMHZDB0SJW0",
"channel_id": "sora-cloud@25PO5TGFD26VB62G7C7DFAAYGA4J3CJN",
"client_id": "TP8RRG5SN54DD7VBMHZDB0SJW0",
"connection_id": "TP8RRG5SN54DD7VBMHZDB0SJW0",
"created_time": 1652944257911575,
"created_timestamp": "2022-05-19T07:10:57.911575Z",
"event_metadata": "REDACTED",
"multistream": true,
"role": "sendrecv",
"session_id": "47Q2QVK9DD7DHCZ8W37NPJNADM",
"simulcast": false,
"spotlight": false,
"video": {
"bit_rate": 500,
"codec_type": "VP9"
}
},
{
"audio": {
"codec_type": "OPUS"
},
"bundle_id": "MHJ8PB68MD2FFB188AR8VT0S2M",
"channel_id": "sora-cloud@25PO5TGFD26VB62G7C7DFAAYGA4J3CJN",
"client_id": "MHJ8PB68MD2FFB188AR8VT0S2M",
"connection_id": "MHJ8PB68MD2FFB188AR8VT0S2M",
"created_time": 1652944261045734,
"created_timestamp": "2022-05-19T07:11:01.045734Z",
"event_metadata": "REDACTED",
"multistream": true,
"role": "sendrecv",
"session_id": "47Q2QVK9DD7DHCZ8W37NPJNADM",
"simulcast": false,
"spotlight": false,
"video": {
"bit_rate": 500,
"codec_type": "VP9"
}
}
]
アプリケーション連携¶
Sora のドキュメントにアプリケーション連携チュートリアルがありますので、こちらをご確認ください。
https://sora-doc.shiguredo.jp/APP_INTEGRATE_TUTORIAL
ウェブフック署名¶
Sora Cloud のウェブフックには署名が付与されています。 署名をチェックすることで Sora Cloud からのリクエストであることを確認することができます。
署名 をご確認ください。
変更履歴¶
2024-12-23¶
[CHANGE] Sora のバージョンを 2024.2.0 にメジャーアップデートしました
Sora 2024.2.0 についての詳細は リリースノート をご確認ください。
もし Sora 2024.2.0 の変更点で不明点がある場合はチケットにてお問い合わせください
[CHANGE]
connection.failed
ウェブフックの送信条件が 認証成功時 に変更しました[CHANGE]
multistream
とspotlight
が既存セッションと異なる場合の挙動を変更しました[CHANGE] プレイアウト遅延機能が配信側から視聴側への適用に変更しました
認証成功時の払い出し
playout_delay_min_delay
は 視聴側の 最小値を指定するように変更しました認証成功時の払い出し
playout_delay_max_delay
は 視聴側の 最大値を指定するように変更しました
[CHANGE] WebSocket シグナリング時のフレームサイズが大きい場合、クローズドコード 4490 ではなく 1009 を返すようにしました
[CHANGE] WebSocket シグナリング利用時に
"type": "disconnect"
で切断した際、 WebSocket のクローズドコードを 1000 に、クローズド理由を"TYPE-DISCONNECT"
に変更しました[CHANGE] WebSocket シグナリング利用時に Sora 側から正常切断した場合、 WebSocket のクローズドコードを 1000 に、クローズド理由を含めるように変更しました
ライフタイムによるコネクションの破棄は
"LIFETIME-EXPIRED"
が理由に含まれますAPI やライフタイムなどによるセッションの破棄は
"SESSION-DESTROYED"
が理由に含まれますAPI によるコネクション破棄は
"DISCONNECTED-API"
が理由に含まれます
[CHANGE] End-to-End Encryption の機能を終了しました
[CHANGE] シグナリングエラー時のエラーメッセージを改善しました
[CHANGE] RTP ストリーム停止/再開 API を 2025 年 12 月 1 日に廃止します
代わりに転送フィルター API をご利用ください
[CHANGE] 認証成功時とセッション生成時の払い出しでの
forwarding_filter
の指定を 2025 年 12 月 1 日に廃止します代わりに
forwarding_filters
を利用してください
[CHANGE] シグナリング接続時に
forwarding_filter
の指定を 2025 年 12 月 1 日に廃止します代わりに
forwarding_filters
を利用してください
[CHANGE] 認証成功時の転送フィルターの払い出しがエラーになった場合、接続が失敗するように変更しました
WebSocket 切断時の
reason
はINTERNAL-ERROR
エラーです
[CHANGE] セッション生成時の転送フィルターの払い出しがエラーになった場合、セッションを破棄するように変更しました
WebSocket 切断時の
reason
はINTERNAL-ERROR
エラーです
[CHANGE] 統計情報に含まれる
total_received_intra_frame
をtotal_received_key_frame
に変更しました[CHANGE] H.264 のプロファイルレベル ID のデフォルト値を
42e01f
から42e02a
へ変更しましたChrome / Edge がデフォルト値を変更した事への追従です
[ADD] マルチ転送フィルター機能に対応しました
1 チャネルや 1 コネクションに対して複数の転送フィルターを指定できる機能です
[ADD] ICE コネクションステート変更のシグナリング通知機能に対応しました
認証成功時の払い出しで
signaling_notify_ice_connection_state
をtrue
に設定することで有効になります
[ADD] H.265 コーデックでの録画に対応しました
出力形式を MP4 にした場合のみ対応しています
MP4 形式は録画機能(セッション単位)でのみ対応しています
[ADD] キーフレームを要求する RequestKeyFrame API を追加しました
[ADD] DataChannel シグナリングのみ利用時に、 Sora から切断が発生した場合、
"type": "close"
メッセージを送るようにしましたライフタイムによるコネクションの破棄は
"LIFETIME-EXPIRED"
が理由に含まれますAPI やライフタイムなどによるセッションの破棄は
"SESSION-DESTROYED"
が理由に含まれますAPI によるコネクション破棄は
"DISCONNECTED-API"
が理由に含まれます
[ADD] 録画の出力ファイル形式が MP4 形式に対応しました
セッションウェブフックの
"type": "session.created"
の戻り値による払い出し項目にrecording_format
を追加しましたMP4 形式は現時点で録画機能(セッション単位)のみ対応しています
MP4 形式で出力した場合 Hisui Cloud では利用できません
[ADD] メッセージング機能において、 メッセージに Sora 側でヘッダーを付与する機能を追加しました
[ADD] セッションウェブフックの
"type": "session.created"
の戻り値による払い出し項目にセッションの同時接続数を制限する trial_max_connections を追加しましたこの機能は実験的機能のトライアル中です
デフォルトは未指定で制限がない状態です
指定できる範囲は 0..10000 です
trial_max_connections
が0
の場合は誰も接続することができなくなります
[FIX] OBS WHIP で H.264 利用時に一部のエンコーダーを利用した際、正常に録画ができなかった問題を修正しました
[FIX] OBS WHIP で AV1 利用時に正常に録画できなかった問題を修正しました
2024-08-23¶
[FIX] シグナリング向けの一本化 URL を復旧しました
wss://sora.sora-cloud.shiguredo.app/signaling
[FIX] WHIP / WHEP 向けの一本化 URL を復旧しました
https://sora.sora-cloud.shiguredo.app/whip/<channel-id>
https://sora.sora-cloud.shiguredo.app/whep/<channel-id>
2024-08-21¶
サーバー移行によるクラスター再構築のため、2024-08-21 14:00 から 2024-08-21 17:00 までの間、メンテナンスを実施しました。
2024-08-09¶
[CHANGE] Sora のバージョンを 2024.1.3 にバグフィックスアップデートしました
Sora 2024.1.3 については リリースノート をご確認ください。
もし Sora 2024.1.3 の変更点で不明点がある場合はチケットにてお問い合わせください
2024-07-01¶
[CHANGE] Sora のバージョンを 2024.1.1 にバグフィックスアップデートしました
Sora 2024.1.1 については リリースノート をご確認ください。
もし Sora 2024.1.1 の変更点で不明点がある場合はチケットにてお問い合わせください
2024-06-26¶
[CHANGE] Sora のバージョンを 2024.1.0 にメジャーアップデートしました
Sora 2024.1.0 については リリースノート をご確認ください。
もし Sora 2024.1.0 の変更点で不明点がある場合はチケットにてお問い合わせください
[CHANGE] 実験的機能である Lyra コーデックの対応を廃止しました
[CHANGE] 認証ウェブフックでの
h264_profile_level_id
の指定を廃止しました代わりに
video_h264_params
を指定してください
[UPDATE] クラスターリレー機能を有効にしました
[UPDATE] クラスターリレー機能のアフィニティ機能を有効にしました
[ADD] H.264 と H.265 のコーデックパラメータ
b_frame
の認証ウェブフック払い出しに対応しましたそれぞれ
video_h264_params
video_h265_params
に指定可能です
[ADD] 次のパラメータの認証ウェブフックの払い出しに対応しました
simulcast_multicodec
simulcast_codecs
rtc_stats
connection_lifetime
playout_delay_min_delay
playout_delay_max_delay
cluster_affinity
[ADD] 次のパラメータのセッションウェブフック払い出しに対応しました
session_lifetime
spotlight_number
[ADD] OBS WHEP 対応
WHEP 用 URL を追加しました
[ADD] OBS WHIP H.265 対応
[ADD] 統計ウェブフックに対応しました
管理コンソールのプロジェクト設定で統計ウェブフックの送信先 URL を設定できます
[ADD] 認証ウェブフックとセッションウェブフックのリクエストヘッダーに
Accept
ヘッダーを追加しましたSora 2024.1.0 から追加されたリクエストヘッダーです
[FIX] 録画機能音ズレ問題の改善
Chromium 側のバグにより、 replaceTrack などを利用して MediaStreamTrack を削除し、 一定時間経過後に新しく追加した際、音声のタイムスタンプが正しく出力されない問題を Sora 側で吸収することで対応しました
2024-06-01¶
2024-06-01 9:38 から利用しているサービスの停止により障害が発生し、 2024-06-01 12:30 に一部を除いて復旧しました。
一部の機能が利用できない状態が続いております。その影響で、以下の機能が利用できない状態となっております。 代替手段をご確認ください。
[CHANGE] 非推奨のシグナリング URL の一本化 URL
wss://sora.sora-cloud.shiguredo.app/signaling
が利用できなくなりました以下のシグナリング URL をご利用ください
wss://0001.sora.sora-cloud.shiguredo.app/signaling
wss://0002.sora.sora-cloud.shiguredo.app/signaling
wss://0003.sora.sora-cloud.shiguredo.app/signaling
[CHANGE] WHIP URL の
https://sora.sora-cloud.shiguredo.app/whip/<channel-id>
が利用できなくなりました一時的に以下の WHIP URL をご利用ください
https://0001.sora.sora-cloud.shiguredo.app/whip/<channel-id>
https://0002.sora.sora-cloud.shiguredo.app/whip/<channel-id>
https://0003.sora.sora-cloud.shiguredo.app/whip/<channel-id>
2024-04-24¶
[CHANGE] Sora のバージョンを 2023.2.7 にバグフィックスアップデートしました
Sora 2023.2.7 については リリースノート をご確認ください。
もし Sora 2023.2.7 の変更点で不明点がある場合はチケットにてお問い合わせください
2024-03-08¶
[CHANGE] Sora のバージョンを 2023.2.5 にホットフィックアップデートしました
Sora 2023.2.5 については リリースノート をご確認ください。
もし Sora 2023.2.5 の変更点で不明点がある場合はチケットにてお問い合わせください
2024-03-06¶
[CHANGE] Sora のバージョンを 2023.2.4 にホットフィックスアップデートしました
Sora 2023.2.4 については リリースノート をご確認ください。
もし Sora 2023.2.4 の変更点で不明点がある場合はチケットにてお問い合わせください
2024-02-20¶
[ADD] Sora がウェブフック送信に失敗したウェブフックを再送信する機能をコンソールに追加しました
アルファ版 としてのリリースになります
Sora からウェブフックを送信する際に失敗した時に出力されたウェブフックの内容を再送信できる機能になります
プロジェクトのメニューの Show webhook error ... から当機能の画面に遷移できます
再送が可能なウェブフックは Sora のセッションウェブフック、イベントウェブフックとなります
イベントウェブフックのうち
connection.failed
は対象外となりますログは過去 30 日以内の 100 件まで閲覧と再送信が可能です
再送信は操作を行なった時にプロジェクトに設定されている Sora webhook URL に対して再送信を試みます
2024-02-08¶
[CHANGE] Sora のバージョンを 2023.2.3 にバグフィックスアップデートしました
Sora 2023.2.3 については リリースノート をご確認ください。
もし Sora 2023.2.3 の変更点で不明点がある場合はチケットにてお問い合わせください
2024-01-31¶
[ADD] Sora ログの検索機能を追加しました
アルファ版 としてのリリースになります
管理コンソールから接続失敗、認証拒否などが確認できるようになりました
ログは 30 日間保存されます
2024-01-19¶
[ADD] ウェブフックのリクエストに HTTP ヘッダーを追加しました
2024-01-04¶
[CHANGE] Sora のバージョンを 2023.2.2 にバグフィックスアップデートしました
Sora 2023.2.2 については リリースノート をご確認ください。
もし Sora 2023.2.2 の変更点で不明点がある場合はチケットにてお問い合わせください
2023-12-20¶
[CHANGE] Sora のバージョンを 2023.2.0 にメジャーアップデートしました
Sora 2023.2.0 については リリースノート をご確認ください。
もし Sora 2023.2.0 の変更点で不明点がある場合はチケットにてお問い合わせください
[ADD] 録画機能(セッション単位)に対応しました
録画機能(セッション単位)の
session.created
時の払い出しに対応しましたrecording
recording_metadata
recording_expire_time
recording_split_duration
recording_split_only
録画機能(セッション単位)のセッションウェブフックに対応しました
recording.started
recording.report
録画機能(セッション単位) API に対応しました
Sora_20231220.StartRecording
APISora_20231220.StopRecording
API
認証成功時の録画ブロックの払い出しに対応しました
録画機能(セッション単位)でのみ利用できます
recording_block
[ADD] セッション取得 API に対応しました
Sora_20231220.GetSession
API
[ADD] 認証成功時の H.265 パラメーター払い出しに対応しました
対応しているクライアントは現時点ではありません
[ADD] シグナリング接続時の H.265 パラメーター指定に対応しました
対応しているクライアントは現時点ではありません
[ADD] 管理コンソールのライブセッション詳細画面に録画開始ボタンと録画停止ボタンを追加しました
録画開始ボタンは録画機能(セッション単位)の録画を開始します
録画停止ボタンは録画機能のセッション単位、レガシーのどちらでも録画を停止します
[ADD] 管理コンソールのライブ録画詳細画面に録画停止ボタンを追加しました
録画停止ボタンは録画機能のセッション単位、レガシーのどちらでも録画を停止します
2023-10-20¶
[UPDATE] Sora のバージョンを 2023.1.3 にバグフィックスアップデートしました
Sora 2023.1.3 については リリースノート をご確認ください。
もし Sora 2023.1.3 の変更点で不明点がある場合はチケットにてお問い合わせください
2023-09-22¶
[ADD] 管理コンソールに録画一覧を追加しました
過去の録画と現在の録画の一覧を確認可能です
Hisui Cloud¶
Hisui Cloud の利用に追加料金はかかりません
[ADD] 録画合成ツール Hisui のクラウド版を追加しました
アルファ版 としてのリリースになります
現時点ではレイアウトの指定はできません
Hisui 2023.2.1 を利用しています
[ADD] 録画合成ジョブを追加する
projects/submit-hisui-job
API を追加しました管理コンソールからも実行できますが、API 経由からも実行可能です
[ADD] 録画合成ジョブをキャンセルする
projects/cancel-hisui-job
API を追加しました管理コンソールからも実行できますが、API 経由からも実行可能です
[ADD] 録画合成ジョブ一覧を取得する
projects/list-hisui-jobs
API を追加しました管理コンソールからも確認できますが、API 経由からも実行可能です
[ADD] 管理コンソールにセッション終了ボタンを追加しました
Sora の
TerminateSession API
を指定したセッションに対して実行します
2023-08-10¶
[UPDATE] Sora のバージョンを 2023.1.2 にバグフィックスアップデートしました
Sora 2023.1.2 については リリースノート をご確認ください。
もし Sora 2023.1.2 の変更点で不明点がある場合はチケットにてお問い合わせください
2023-07-20¶
[CHANGE] シグナリング URL を wss://sora.sora-cloud.shiguredo.app/signaling を非推奨にしました
シグナリング URL の一本化に利用している LB が WebSocket を突然切断する問題があるため利用を停止しました
以下のシグナリング URL 全てを指定して、ご利用ください
wss://0001.sora.sora-cloud.shiguredo.app/signaling
wss://0002.sora.sora-cloud.shiguredo.app/signaling
wss://0003.sora.sora-cloud.shiguredo.app/signaling
2023-07-14¶
[UPDATE] Sora のバージョンを 2023.1.1 にバグフィックスアップデートしました
Sora 2023.1.1 については リリースノート をご確認ください。
もし Sora 2023.1.1 の変更点で不明点がある場合はチケットにてお問い合わせください
2023-07-04¶
[ADD] セッションウェブフックの
"type": "session.created"
の戻り値でsession_metadata
/forwarding_filter
を払い出し可能にしました
2023-07-03¶
[CHANGE] Sora のバージョンを 2023.1.0 にメジャーアップデートしました
Sora 2023.1.0 については リリースノート をご確認ください。
もし Sora 2023.1.0 の変更点で不明点がある場合はチケットにてお問い合わせください
[ADD] OBS で WebRTC 経由での配信を実現する WHIP に対応しました
WHIP エンドポイント URL:
http://sora.sora-cloud.shiguredo.app/whip/<channel-id>
Bearer Token にはアクセストークンを指定する必要があります
認証ウェブフックに
"whip": true
が含まれます
[ADD] セッションウェブフックにセッションが利用している Sora のシグナリング URL が
external_signaling_url
として含まれます[ADD] VP9 / AV1 のサイマルキャストとスポットライト機能に対応しました
[ADD] Lyra コーデックの録音機能に対応しました
[ADD] 転送フィルター機能に対応しました
シグナリング接続時に
forwarding_filter
を指定することができます認証成功時の払い出しに
forwarding_filter
を指定可能にしています転送フィルター機能 API に対応しました
Sora_20230628.ListForwardingFilters
APISora_20230628.CreateChannelForwardingFilter
APISora_20230628.UpdateChannelForwardingFilter
APISora_20230628.DeleteChannelForwardingFilter
APISora_20230628.CreateConnectionForwardingFilter
APISora_20230628.UpdateConnectionForwardingFilter
APISora_20230628.DeleteConnectionForwardingFilter
API
[ADD] セッション終了 API に対応しました
Sora_20230628.TerminateSession
API
[ADD] 映像コーデックパラメーター機能に対応しました
シグナリング接続時に
vp9_params
/av1_params
/h264_params
を指定可能にしています認証成功時の払い出しに
video_vp9_params
/video_av1_params
/video_h264_params
を指定可能にしています{"h264_profile_level_id": "..."}
は 2024 年 6 月末で利用できなくなります{"video_h264_params": "profile_level_id": "..."}
をご利用ください
2023-04-10¶
[ADD] Sora のシグナリング URL を 1 本化し、シーケンス番号なしの URL が利用できるようになりました
wss://sora.sora-cloud.shiguredo.app/signaling
2023-03-17¶
[CHANGE] Sora API で指定する
x-sora-version
ヘッダーが不要になりました今後は
x-sora-version
ヘッダーは無視されます
[CHANGE] Sora のシグナリング URL からバージョン番号を削除しました
今後は最新の Sora のバージョンがデプロイされてもシグナリング URL を変更する必要がなくなりました
変更前
wss://<シーケンス番号>.2022-2.sora.sora-cloud.shiguredo.app/signaling
このシグナリング URL は
2024 年 1 月 31 日
をもって利用できなくなります、バージョンを除いたシグナリング URL への切り替えをお願いします
変更後
wss://<シーケンス番号>.sora.sora-cloud.shiguredo.app/signaling
[CHANGE] Sora の TURN/TURNS URL からバージョン番号を削除しました
TURN/TURNS URL は Sora から動的に払い出す値になるため、利用者側での作業は不要です
2023-02-20¶
[FIX] 管理コンソールのテキストボックスのクリアボタンへタブを移動させないようにしました
2023-02-08¶
[FIX] Sora のバージョンを Sora 2022.2.3 にアップデートしました
2023-02-02¶
[ADD] 管理コンソールのプロジェクトで
max_channel_connections
を指定できるようにしました
2023-02-01¶
[ADD] 管理コンソールのプロジェクトで Sora DevTools のアクセストークン付き URL を生成できるようにしました
2023-01-14¶
[ADD] 管理コンソールに現在と過去のセッション詳細、コネクション詳細を確認する画面を追加しました
2022-12-27¶
[ADD] IPv6 が利用可能になりました
[FIX] オブジェクトストレージの設定がされていない状態で開始した配信がある状態で、 オブジェクトストレージの設定をして録画を開始した場合、 録画ファイルのアップロードが失敗する問題を修正しました
[FIX] Sora 2022.2.x のバージョンを Sora 2022.2.2 にアップデートしました
2022-12-01¶
Sora Cloud の提供を開始しました。
FAQ¶
一般¶
Sora Cloud の最新情報はどこで共有されていますか?¶
Sora Cloud に関する最新情報は 時雨堂 Discord サーバー の #sora-cloud-announce
で共有しています。
障害情報などもこちらで共有しておりますので、ご利用の際はご参加ください。
サポートは提供していますか?¶
チケットシステムによるサポートを提供しています。
詳細は サポート をご確認ください。
ダッシュボードはありますか?¶
https://console.sora-cloud.shiguredo.app/login からログインして利用できます。
利用する帯域の上限を設定したいです¶
帯域の上限は設定できませんので、利用する際にはご注意ください。
実際の利用状況は管理コンソール画面から確認できます。
利用する同時接続数の上限を設定したいです¶
チャネル単位で最大同時接続数を指定することは可能です。組織全体の最大同時接続数を指定することはできません。
実際の接続数は管理コンソールから確認できます。
詳細は max_channel_connections をご確認ください。
利用できる最大同時接続数はいくつですか?¶
最大同時接続数に制限はありません。同時接続数が 500 を超える見込みがある場合は、事前におしらせください。
利用できる最大帯域はどの程度ですか?¶
最大で 40 Gbps 程度まで利用できます。帯域が 1 Gbps を超える見込みの場合は、事前におしらせください。
プロジェクトは最大いくつまで作成できますか?¶
プロジェクトは最大 5 つまで作成できます。 これ以上作成したい場合はサポートにお問い合わせください。
組織にはアカウントをいくつまで登録できますか??¶
1 つの組織で最大 5 つのアカウントを登録できます。 これ以上作成したい場合はサポートにお問い合わせください。
一つのメールアドレスで複数の組織に属すことはできますか?¶
できます。
複数の組織に属している場合、 メール認証後にどの組織へログインするか選択します。
設定¶
ウェブフック URL を登録したいです¶
ウェブフック URL はプロジェクト単位で登録が行えます。
Sora 認証ウェブフック
Sora セッションウェブフック
Sora イベントウェブフック
Sora 統計ウェブフック
Sora Cloud ウェブフック
管理コンソールのプロジェクトから登録してください。
録画ファイルをアップロードするオブジェクトストレージを登録したいです¶
オブジェクトストレージの登録は管理コンソールからプロジェクト単位で登録が行えます。
管理コンソールのプロジェクトから登録してください。
録画ファイルをアップロードするオブジェクトストレージを無効にしたいです¶
登録したオブジェクトストレージの無効化は管理コンソールからプロジェクト単位で行ってください。
管理コンソールのプロジェクトから設定を無効にしてください。
管理コンソールからチャネル単位での最大接続数を指定したいです¶
プロジェクトの Edit Project から Channel の max_channel_connections で値を指定してください。

この値はこのプロジェクトで利用するチャネル毎の最大同時接続数を設定可能です。
この値を超えて接続することはできません。 もしアクセストークンで max_channel_connections をこの値以上に設定したとしても、この値が利用されます。
Sora¶
Sora については WebRTC SFU Sora ドキュメント をご確認ください。
Sora の API を利用したいです¶
Sora の API については一部利用できないモノがあります。
詳細については Sora API をご確認ください。
Sora のログを取得したいです¶
ログ API を利用することで Sora に関係するログを過去 30 日まで確認できます。
もしそれ以上の過去のログが必要な場合は、ウェブフックリクエストで送られてくる内容を保存してください。
注釈
今後は管理コンソールでも Sora のログを確認できるようにする予定です。
IPv6 は利用可能ですか?¶
利用可能です。
ポート番号は何番を利用しますか?¶
Sora Cloud は以下のポート番号を利用しますので、 ファイアーウォールの設定などが必要な場合があります。
TCP は 443 番のみを利用します
UDP は 50000-60000 番を利用します
クライアントは UDP が利用できない場合、TCP で通信を行います。 その場合は不安定な回線などを利用した場合、 音声が途切れ途切れになったり、映像が止まったり、乱れたりすることが多くなる場合があります。
可能な限り UDP が利用できるネットワーク環境下でご利用ください。
長時間接続を行う場合のお勧めの設定はありますか?¶
data_channel_signaling
と ignore_websocket_disconnect
を true
にすることお勧めします。
この設定を有効にすることで WebSocket による切断検知は利用できなくなりますが、 WebSocket が切断されてもクライアントと Sora の接続は継続します。
Hisui Cloud¶
Hisui Cloud はいくらですか?¶
無料でご利用いただけます。
レイアウトの指定はできますか?¶
現時点ではできませんが、将来的に利用できるようにする予定です。
H.264/AAC MP4 での合成出力はできますか?¶
現時点では予定していません。チケットにてご相談ください。
MP4 形式のファイルは合成入力できますか?¶
現時点ではできませんが、将来的に利用できるようにする予定です。
課金¶
見積書の発行は可能ですか?¶
実際のご利用状況に合わせた従量料金制のため、見積書の発行はできません。
請求書の支払期限はいつですか?¶
原則としてご利用月の翌月末日までとなります。 料金は毎月月末締めとし、翌月 5 営業日までに請求書を発行します。
請求書発行月の末日までにお振込みいただくお願いとなります。
利用料金の支払いは毎月ごとのみですか?¶
毎月ごとの請求、お支払いとなります。 後払いとなりますので、 1 ヶ月ごとにお支払いをお願いしております。
請求アドレスを変更したい¶
請求アドレスの変更については sora-cloud at shiguredo.jp までメールにてご連絡ください。 (このメールアドレスへの特定電子メールの送信を拒否いたします)
サポート¶
チケットは同時にいくつまでオープンできますか?¶
チケットは最大 3 つまでオープンできます。 4 つ目をオープンにするには、先にオープンしているチケットをクローズする必要があります。
チケットの同時オープン数は増やすことはできません。
チケットのクローズはどのタイミングで行われますか?¶
お客様からクローズして問題無いと連絡があるまではオープンにしたままとなります。
チケットのリオープンはできますか?¶
一度クローズしたチケットのリオープンはできません。 新しくチケットのオープンをお願いします。
料金¶
概要¶
Sora Cloud は利用時間や転送量ではなく、利用した最大同時接続数と最大帯域で料金が決定します。
基本料金¶
- 基本料金:
月 5,000 円
1 ヶ月まったく利用しない場合でも基本料金 5,000 円が発生します。
従量料金¶
最大同時接続数と最大帯域での従量課金モデルです。
- 同時接続数:
10 接続あたり 15,000 円から、最大で 5000 同時接続程度まで利用可能
- 帯域:
100 Mbps あたり 30,000 円から、最大で 20 Gbps 程度まで利用可能
10 接続単位ごとに +15,000 円
100 Mbps ごとに +30,000 円
注釈
帯域は上り (Ingress) と下り (Egress) の合計で計算されます。
同時接続数¶
同時接続数とは、認証に成功し、 WebRTC の確立に成功して接続している数です。
料金例 1¶
その月の利用が最大 18 同時接続、最大 250 Mbps だった場合は ...
5,000 円 (基本料金) + 30,000 円 (最大 20 同時接続の従量料金) + 90,000 円 (最大 300 Mbps の従量料金) で 125,000 円の料金が発生します。
料金例 2¶
その月の利用の最大が 7 同時接続、最大 145 Mbps だった場合は ...
5,000 円 (基本料金) + 15,000 円 (最大 10 同時接続の従量料金) + 60,000 円 (最大 200 Mbps の従量料金) で 80,000 円の料金が発生します。
料金表¶
- 基本料金:
5,000 円
- 同時接続数の従量料金:
+15,000 円 / 10 同時接続
- 帯域の従量料金:
+30,000 円 / 100 Mbps
料金表 (最大) |
100 Mbps |
200 Mbps |
300 Mbps |
---|---|---|---|
10 同時接続 |
¥50,000 |
¥80,000 |
¥110,000 |
20 同時接続 |
¥65,000 |
¥95,000 |
¥125,000 |
30 同時接続 |
¥80,000 |
¥110,000 |
¥140,000 |
100 同時接続 |
¥185,000 |
¥215,000 |
¥245,000 |
0 同時接続 かつ 0 bps の場合は基本料金のみの 5,000 円となります
500 同時接続、または 1 Gbps 以上の利用¶
もし 500 同時接続、または 1 Gbps 以上の接続が発生する可能性があることがわかっている場合は事前にチケットをオープンし、共有をお願いいたします。
チャネル単位での同時接続数固定¶
JWT の max_channel_connections クレームを利用することで、チャネル単位での同時接続数を制限することが可能です。
上限固定¶
組織全体での同時接続数や帯域の上限を固定することはできません。注意してご利用ください。
注意¶
API の呼び出しに制限はありませんが、想定よりも多くの API 呼び出しが発生した場合は個別にご連絡いたします
ウェブフックの通知に制限はありませんが、想定よりも多くの通知が発生した場合は個別にご連絡いたします
制限¶
ログ保存は直近 30 日までです
30 日経過したログは取得できません
シーケンス図¶
同時接続数 +1 されるタイミング¶
sequenceDiagram autonumber participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud client->>sora: "type": "connect" sora->>+cloud: 認証ウェブフック note over cloud: アクセストークン検証成功 cloud-->>-sora: 200 OK<br>"allowed": true note over cloud: この時点ではまだ同時接続数に + 1 はされない sora->>client: "type": "offer" client->>sora: "type": "answer" note over client,sora: WebRTC 確立 sora-->>+cloud: イベントウェブフック<br>"type": "connection.created" note over cloud: この時点で同時接続数に +1 される cloud-->>-sora: 200 OK
同時接続数 -1 されるタイミング¶
クライアントの正常終了時¶
sequenceDiagram autonumber participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud note over client,sora: WebRTC 確立 client->>+sora: "type": "disconnect" sora->>+cloud: イベントウェブフック<br>"type": "connection.destoryed" note over cloud: この時点で同時接続数が -1 される cloud-->>-sora: 200 OK sora->>-client: シグナリング切断
クライアントの異常終了時¶
sequenceDiagram autonumber participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud note over client,sora: WebRTC 確立 sora->>client: 2.5 秒間隔で死活確認 note left of sora: クライアントから応答なし sora->>client: 1 秒間隔で 5 秒間死活確認 note left of sora: クライアントから応答なし sora->>client: 50 ミリ秒間隔で 10 秒間死活確認 note left of sora: クライアントから応答なし note over sora: 切断済みと判断 sora->>cloud: イベントウェブフック<br>"type": "connection.destoryed" note over cloud: この時点で同時接続数が -1 される cloud-->>sora: 200 OK
制限¶
単一録画の期限指定¶
単一録画は必ず期限を指定する必要があり、かつその期限は最大 10800 (3 時間) までしか指定できません。 この値を超える場合は 録画ファイル分割出力のみ を利用してください。
Sora Cloud では利用できない WebRTC SFU Sora の機能¶
もし利用したい場合は WebRTC SFU Sora パッケージ版の利用をご検討ください
sora.conf
の設定は変更できません"multistream": false
は利用できません音声ストリーミング機能
は利用できません今後 Suzu クラウド版とともに提供予定です
統計エクスポート機能
は利用できませんRTP 転送 API
は利用できません認証時の払い出しで
ipv4_address
は指定できません認証時の払い出しで
ipv6_address
は指定できません認証時の払い出しで
turn_fqdn
は指定できません認証時の払い出しで
turn_tls_fqdn
は指定できません録画機能の一括録画と分割録画の両方を指定することはできません
録画機能の一括録画は期限指定に制限があります
現時点では利用できない機能¶
シグナリング通知メタデータ拡張機能
が利用できません
サポート¶
問い合わせは日本語でお願いします
Sora や Sora Cloud について問い合わせをする¶
ログイン後、管理コンソールの Support タブからチケットをオープンしてください。
関連しない複数の問い合わせがある場合は、 必ず チケットを分けて記載してください。
同時にオープンできる "General Support" カテゴリのチケットは最大で 3 つです。 4 つ以上の問い合わせがある場合は、いずれかのチケットがクローズされてからオープンしてください。
カテゴリについて¶
General Support¶
Sora Cloud や Sora の問い合わせはこちらのカテゴリを選択してください。
Account Cancellation¶
重要
このカテゴリはチケットのオープン数制限を受けません。
解約に関する問い合わせはこちらのカテゴリを選択してください。
Billing Questions¶
重要
このカテゴリはチケットのオープン数制限を受けません。
請求に関する問い合わせはこちらのカテゴリを選択してください。
チケットのクローズについて¶
チケットのクローズは時雨堂側からしか行えません。 そのため、問い合わせが完了した場合はチケットを閉じて問題無い旨を必ずお伝えください。
チケットのリオープンについて¶
チケットのリオープンには対応しておりません。そのため、再度チケットをオープンしてください。
お受けできない問い合わせ¶
Sora Cloud および Sora の挙動や使い方に関するお問い合わせ以外はサポートの範囲外です。 以下の項目についてはサポート対象外となりますのでご了承ください
Sora を利用したサービスの設計や開発
nginx 全般
WebRTC 全般
Sora SDK 全般
WebRTC Native Client Momo
WebRTC Load Testing Tool Zakuro
Recording Composition Tool Hisui
WebRTC Stats Collector Kohaku
Audio Streaming Gateway Suzu
各種クラウドサービス
Sora 開発ツール¶
概要¶
Sora Cloud では Sora に内蔵されている Sora 開発ツールの代わりとして、 公開されている Sora DevTools を簡単に利用する仕組みを提供しています。
注意
Sora 開発ツールの録画開始・停止やサイマルキャストの rid 切り替えなど、Sora API を利用する一部の機能は使用できません。
Create Sora DevTools URL¶
Projects から Create Sora DevTools URL をクリックしてください。


- channel_name
channel_id の prefix です。後ろに project_id がついて channel_id になります。
- expiration_time
JWT の exp でアクセストークンの利用期限です。
- not_before
JWT の nbf でアクセストークンが利用可能になる日時です。
- role
この値を指定した場合、指定した role しか利用できなくなります。
- max_channel_connections
この値指定した場合、指定した値までしか接続できなくなります。
メンバー¶
Sora Cloud は複数のメンバーで利用することができます。
共同で利用するメンバーのメールアドレス 1 つに対して 1 つのアカウントが作成され、 1 つの組織で最大 5 つまでアカウントが登録できます。
メンバーの招待¶
管理コンソールにログインできるアカウントは、Setting メニューの Member から招待できます。
アカウントが無い場合¶
招待されたメンバーが Sora Cloud のアカウントをまだ持っていない場合、 届いた確認メールから URL をクリックしてアカウント登録を行ってください。
アカウントがある場合¶
招待されたメンバーがすでに Sora Cloud のアカウントを持っていて別の組織に属している場合、 確認メールから URL をクリックすることで、ログイン時に新しく招待された組織が選択できるようになります。
メンバーのロール変更¶
重要
現時点では対応していません。今後対応予定です。
Owner¶
現在提供している唯一のロールです。すべての権限を保持しています。
認証¶
概要¶
Sora Cloud では JWT 形式のアクセストークンを
Sora の "type": "connect"
時の metadata
に access_token
を含めて認証を行います。
metadata¶
type: connnect
の metadata
に "access_token": "<JWT>"
を含めます。
{
"type": "connect",
"role": "sendrecv",
"channel_id": "sora-cloud@shiguredo#1490",
"multistream": "true",
"metadata": {
"access_token": "<JWT>"
}
}
JWT 仕様¶
- typ:
JWT
- alg:
HS256
JWT 利用の注意点¶
Sora Cloud で利用する特定のトークンの失効させる方法は API キーを再生成するしか方法がありません。
そのため、本番環境向けには必ず nbf
/ exp
を付けて短い時間しか利用できないトークンを発行するようにしてください。
Sora Cloud の認証では JWT 的なチェックのみで iss
の存在有無などのチェックは行いません。
認証ウェブフックを設定し、プロジェクト側でのチェックを行うようにしてください。
利用可能な登録済みクレーム¶
exp¶
- クレーム:
exp
- 型:
integer
- 要求:
オプション
- RFC:
トークンが利用できなくなる時間 (UTC) を指定できます。
nbf¶
- クレーム:
nbf
- 型:
integer
- 要求:
オプション
- RFC:
トークンが利用できるようになる時間 (UTC) を指定できます。
jti¶
- クレーム:
jti
- 型:
string
- 要求:
オプション
オプションプライベートクレーム¶
channel_id¶
危険
channel_id クレーム
を指定しない場合すべてのチャネルにアクセス可能になるため、本番環境では channel_id クレーム
を指定する実装にしてください。
- クレーム:
channel_id
- 型:
string
- 要求:
オプション
channel_id クレームが含まれていた場合、Sora Cloud が認証時に channel_id と一致しているかどうかを確認します。
role¶
- クレーム:
role
- 型:
string
- 要求:
オプション
role クレームが含まれていた場合、Sora Cloud が認証時に role と一致しているかどうかを確認します。
指定可能な文字列は sendrecv / recvonly / sendonly です。
max_channel_connections¶
- クレーム:
max_channel_connections
- 型:
integer
- 要求:
オプション
認証時にチェックするチャネルの最大接続数を指定できます。
参考¶
シーケンス図¶
アクセストークンでの認証成功¶
アクセストークン生成 API 利用あり
Sora 認証ウェブフックの設定あり
sequenceDiagram autonumber participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud participant app as アプリケーションサーバー app->>cloud: アクセストークン API<br> cloud-->>app: 200 OK<br>"access_token": "<JWT>" app->>client: Sora Cloud 認証用の JWT 払い出し client->>sora: "type": "connection"<br>"metadata": {"access_token": "<JWT>"} sora->>cloud: 認証ウェブフック note over cloud: アクセストークン検証成功 cloud->>app: 認証ウェブフック app-->>cloud: 200 OK<br>"allowed": true cloud-->>sora: 200 OK<br>"allowed": true sora->>client: "type": "offer" client->>sora: "type": "answer" note over client,sora: WebRTC 確立
ウェブフック¶
概要¶
Sora Cloud では Sora のウェブフックを利用可能です。指定した URL にウェブフックリクエストを飛ばします。
制限¶
1 プロジェクト 1 ウェブフック URL¶
ウェブフックの通知先 URL は 1 プロジェクト当たり、それぞれのウェブフックにつき 1 つずつです。
利用できるウェブフック送信先のポート番号¶
ウェブフック送信先が HTTP の場合に利用できるポート番号は 80 番のみ
ウェブフック送信先が HTTPS の場合に利用できるポート番号は 443 番のみ
タイムアウト¶
ウェブフックのタイムアウトは 10 秒です。これを超えた場合は送信側から切断を行います。 あからさまにタイムアウトが多い場合は一時的にウェブフックでの送信を停止する場合があります。
タイムアウトした場合は認証処理はエラーとして返します。
Sora 認証ウェブフック¶
戻りのステータスコードは
200 OK
を期待します
払い出し可能な項目¶
client_id
bundle_id
audio
audio_codec_type
audio_bit_rate
audio_opus_params
audio_lyra_params
video
video_codec_type
video_bit_rate
data_channel_signaling
ignore_disconnect_websocket
data_channels
metadata
event_metadata
signaling_notify
signaling_notify_metadata
signaling_notify_ice_connection_state
simulcast
simulcast_rid
simulcast_encodings
AV1 でサイマルキャストを利用した録画をする場合は
scalabilityMode
にL1T1
を設定してください
simulcast_multicodec
simulcast_codecs
spotlight
spotlight_number
この払い出しは非推奨です
Sora セッションウェブフックの
"type": "session.created"
の戻り値でspotlight_number
を払い出してください
spotlight_encodings
AV1 でスポットライトを利用した録画をする場合は
scalabilityMode
にL1T1
を設定してください
user_agent_stats
この払い出しは 2025 年 6 月末にて利用ができなくなります
rtc_stats
video_vp9_params
profile_id
video_av1_params
profile
video_h264_params
profile_level_id
b_frame
video_h265_params
level_id
b_frame
forwarding_filter
2025 年 12 月 1 日に廃止します
代わりに
forwarding_filters
を利用してください
forwarding_filters
recording_block
turn_tcp_only
turn_tls_only
connection_lifetime
playout_delay_min_delay
playout_delay_max_delay
cluster_affinity
Sora セッションウェブフック¶
戻りのステータスコードは 200 OK
を期待します。
払い出し可能な項目¶
セッションウェブフックの "type": "session.created"
の戻り値で以下の項目を払い出すことが可能です。
session_metadata
session_lifetime
forwarding_filter
2025 年 12 月 1 日に廃止します
代わりに
forwarding_filters
を利用してください
forwarding_filters
spotlight_number
trial_max_connections
この機能は実験的機能のトライアル中です
recording
recording_metadata
recording_expire_time
recording_split_duration
recording_split_only
recording_format
注意
録画機能の 制限 に該当する指定を行っていた場合、録画は開始されません。
Sora イベントウェブフック¶
戻りのステータスコードは
200 OK
を期待します
Sora 統計ウェブフック¶
戻りのステータスコードは
200 OK
を期待します
Sora Cloud ウェブフック¶
録画ファイルアップロード時のウェブフック送信¶
戻りのステータスコードは
200 OK
を期待します
recording-report.uploaded¶
Sora Cloud が録画レポートファイルのアップロード完了時に通知します。
archive.uploaded¶
Sora Cloud が単一録画時の録画ファイルとメタデータファイルのアップロード完了時に通知します。
split-archive.uploaded¶
Sora Cloud が分割録画時の分割録画ファイルとメタデータファイルのアップロード完了時に通知します。
split-archive-end.uploaded¶
Sora Cloud が分割録画時の録画終了ファイルのアップロード完了時に通知します。
Hisui Cloud のウェブフック通知¶
戻りのステータスコードは
200 OK
を期待します
hisui-cloud-job.started¶
録画合成開始時に通知します。
hisui-cloud-job.composited¶
録画合成成功時に通知します。
hisui-cloud-job.uploaded¶
録画合成ファイルのアップロード成功時に通知します。
hisui-cloud-job.completed¶
録画合成処理が完了時に通知します。
hisui-cloud-job.canceled¶
処理キャンセル時に通知します。
hisui-cloud-job.failed¶
処理失敗時に通知します。
ウェブフックの IP アドレス¶
Sora Cloud のウェブフックは Cloudflare Wokers を利用して実現しています。
そのため Cloudflare の IP アドレス範囲 からウェブフックを通知します。
署名¶
Sora Cloud が通知する Sora のウェブフックの HTTP ヘッダーにはそのウェブフックの署名が付与されています。
HTTP ヘッダー名 sora-cloud-signature
にそのウェブフックの生成時間と JSON ペイロードに対する署名が入っています。
署名の検証¶
- t:
タイムスタンプ
- v1:
署名
sora-cloud-signature:
t=1692774577,
v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
署名ペイロード¶
重要
署名には必ずプライマリー API Key が利用されます。
タイムスタンプ (文字列)
文字 .
JSON ペイロード (リクエストボディ)
署名疑似コード:
signature = hmac(sha256, primary_api_key, "<Timestamp>.<JSON>").hexgiest()
signature と v1 の値を比較することで署名の検証が可能になります。
タイムスタンプは Unix time を利用しています。
署名検証サンプルコード¶
Python¶
import hashlib
import hmac
import http.server
import json
import socketserver
# プロジェクトのプライマリー API キーを指定してください
API_KEY = 'api-key'
PORT = 8000
class AuthWebhookResponder(http.server.BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['content-length'])
sora_cloud_sig = self.headers['sora-cloud-signature']
json_string = self.rfile.read(content_length).decode('utf-8')
body = json.loads(json_string)
print(sora_cloud_sig)
print(json_string)
print(json.dumps(body, indent=2))
verify_signature(API_KEY, sora_cloud_sig, json_string)
# 認証を許可する JSON を返す
allowed = {"allowed": True}
s = json.dumps(allowed)
self.send_response(200)
self.send_header('Content-Length', len(s))
self.end_headers()
self.wfile.write(s.encode())
def verify_signature(api_key, sora_cloud_signature_header_value, request_json_string):
# sora-cloud-signature ヘッダーの値からタイムスタンプと署名を取り出す
splited = sora_cloud_signature_header_value.split(',')
signagure_timestamp = splited[0].split('=')[1]
header_signature_value = splited[1].split('=')[1]
# 署名する文字列を生成する
# <タイムスタンプ>.<リクエストJSON>
msg = f'{signagure_timestamp}.{request_json_string}'
# 署名する
signature = hmac \
.new(
key=bytes(api_key,'utf-8'),
msg=bytes(msg, 'utf-8'),
digestmod=hashlib.sha256) \
.hexdigest()
# ヘッダーの値と署名した値が一致することを確認する
assert(header_signature_value == signature)
with socketserver.TCPServer(("", PORT), AuthWebhookResponder) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
ローカル開発環境へウェブフックを飛ばす¶
ローカルの開発環境に Sora Cloud からウェブフックを直接飛ばすことはネットワーク的にできません。 そのため ngrok を利用することをお勧めします。 ngrok は無料で使い始められます。
ngrok を利用する¶
- URL:
ngrok アカウントが必要です。 また、固定したエンドポイント URL を利用するには、 Pro プラン ($20/月) 以上のプランに入る必要があります。
シーケンス図¶
Sora 関連ウェブフック¶
Sora 認証ウェブフック
Sora セッションウェブフック
session.created
session.destroyed
Sora イベントウェブフック
connection.created
connection.updated
connection.destroyed
sequenceDiagram participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud participant app as アプリケーションサーバー client->>sora: "type": "connect" sora->>+cloud: 認証ウェブフック note over cloud: アクセストークンを確認 cloud->>+app: 認証ウェブフック app-->>-cloud: 200 OK<br>"allowed": true cloud-->>-sora: 200 OK<br>"allowed": true sora->>client: "type": "offer" client->>sora: "type": "answer" note over client,sora: WebRTC 確立 sora->>+cloud: セッションウェブフック<br>"type": "session.created" cloud->>+app: セッションウェブフック<br>"type": "session.created" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK sora->>+cloud: イベントウェブフック<br>"type": "connection.created" cloud->>+app: イベントウェブフック<br>"type": "connection.created" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK note over client,sora: 1 分経過 sora->>+cloud: イベントウェブフック<br>"type": "connection.updated" cloud->>+app: イベントウェブフック<br>"type": "connection.updated" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK client->>sora: "type": "disconnect" sora->>+cloud: イベントウェブフック<br>"type": "connection.destroyed" cloud->>+app: イベントウェブフック<br>"type": "connection.destroyed" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK sora->>client: シグナリング切断
Sora Cloud 関連ウェブフック¶
Sora イベントウェブフック
recording.started
recording.report
archive.started
archive.avaiable
Sora Cloud ウェブフック
archive.uploaded
recording-report.uploaded
sequenceDiagram autonumber participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud participant app as アプリケーションサーバー participant s3 as オブジェクトストレージ note over client,sora: WebRTC 確立 app->>+cloud: StartRecording API cloud->>+sora: StartRecording API sora-->>-cloud: 200 OK cloud-->>-app: 200 OK note over sora: 録画開始 sora->>+cloud: イベントウェブフック<br>"type": "recording.started" cloud->>+app: イベントウェブフック<br>"type": "recording.started" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK app->>+cloud: StopRecording API cloud->>+sora: StopRecording API sora-->>-cloud: 200 OK cloud-->>-app: 200 OK note over sora: 録画終了 par sora->>+cloud: イベントウェブフック<br>"type": "archive.avaiable" cloud->>+app: イベントウェブフック<br>"type": "archive.avaiable" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK sora->>s3: 録画ファイルアップロード cloud->>+app: Sora Cloud ウェブフック<br>"type": "archive.uploaded" app-->>-cloud: 200 OK and sora->>+cloud: イベントウェブフック<br>"type": "recording.report" cloud->>+app: イベントウェブフック<br>"type": "recoding.report" app-->>-cloud: 200 OK cloud-->>-sora: 200 OK sora->>s3: 録画レポートアップロード cloud->>+app: Sora Cloud ウェブフック<br>"type": "recording-report.uploaded" app-->>-cloud: 200 OK end
録画¶
概要¶
Sora Cloud では Sora の録画機能を利用することができます。録画機能を利用するにあたり、追加料金などは不要です。
録画ファイルはご用意いただいた AWS S3 または S3 互換オブジェクトストレージ (以降オブジェクトストレージ) にアップロードします。
録画機能を利用する前に¶
重要
録画機能を利用するにはプロジェクトにオブジェクトストレージの設定をしてある必要があります。
オブジェクトストレージの設定がされていない場合は Sora の録画開始 API を呼び出しても実行されません。
オブジェクトレージの設定について¶
Sora Cloud では管理コンソールからプロジェクトの設定画面でオブジェクトストレージの設定を行います。 その際、設定の接続確認でファイルのアップロードと削除を行います。 そのため Sora Cloud 側に設定するアクセスキーパーミッションは Put と Delete が必要です。 また、Hisui Cloud を利用する際には Get の権限も必要になります。
また Google Cloud Storage に関しては、Access Key ID および Secret Access Key は名称が他のオブジェクトストレージと異なります。
そのため、後述する S3 互換ストレージのエンドポイント
および Google Cloud Storage の設定例
を確認の上、設定を行ってください。
制限¶
一括と分割録画の制限¶
Sora Cloud では録画方式は一括または分割のどちらかしか選択できません。
一括録画の時間制限¶
Sora Cloud では一括録画は最大で 3 時間までしか録画できません。
録画機能(セッション単位)分割録画の有効期限設定の制限¶
Sora Cloud では録画機能(セッション単位)で分割録画を行う際に有効期限を指定できますが、最大で 3 時間までしか指定できません。
録画機能の有効期限設定¶
expire_time
の値は 10800 秒(3 時間) 以内である必要があります。
セッション録画の場合
expire_time
に 1 以上、10800 以下の値を設定してくださいsplit_only
を指定し、セッションの終了まで録画を行う場合はexpire_time
の設定は不要です
レガシー録画の場合
split_only
を指定しない場合expire_time
に 1 以上、10800 以下の値を設定してくださいsplit_only
を指定した場合expire_time
は 0 を設定してください
オブジェクトストレージへのアップロード¶
プロジェクト設定画面で指定したオブジェクトストレージに録画関連ファイルをアップロードします。
それぞれのファイルのアップロードが終わり次第、アップロード完了のウェブフックリクエストを飛ばします。
対応オブジェクトストレージ¶
AWS S3
MinIO
GCP GCS
Vultr Object Storage
Linode Object Storage
DigitalOcean Spaces
Cloudflare R2
未検証オブジェクトストレージ¶
Wasabi
ウェブフック通知¶
Sora Cloud では録画ファイルのアップロードが完了するとウェブフックで通知を行います。
Sora Cloud ウェブフック recording-report.uploaded¶
- sora-cloud-webhook-type:
recording-report.uploaded
s3_uri
s3://<bucket-name>/<file-path>
{
"id": "<Base32-UUIDv4>",
"type": "recording-report.uplaoded",
"timestamp": "<RFC3339>",
"org_id": "<UUID>",
"project_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"filename": "<Recording-ID>/report-<Connection-ID>.json",
"s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
Sora Cloud ウェブフック archive.uploaded¶
- sora-cloud-webhook-type:
archive.uploaded
s3_uri
s3://<bucket-name>/<file-path>
metadata_s3_uri
s3://<bucket-name>/<file-path>
{
"id": "<Base32-UUIDv4>",
"type": "archive.uploaded",
"timestamp": "<RFC3339>",
"recording_id": "<Base32-UUIDv4>",
"org_id": "<UUID>",
"project_id": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>",
"metadata_s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
Sora Cloud ウェブフック split-archive.uploaded¶
- sora-cloud-webhook-type:
split-archive.uploaded
{
"id": "<Base32-UUIDv4>",
"type": "archive.uploaded",
"timestamp": "<RFC3339>",
"recording_id": "<Base32-UUIDv4>",
"org_id": "<UUID>",
"project_id": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>",
"metadata_s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
Sora Cloud ウェブフック split-archive-end.uploaded¶
- sora-cloud-webhook-type:
split-archive-end.uploaded
{
"id": "<Base32-UUIDv4>",
"type": "split-archive-end.uploaded",
"timestamp": "<RFC3339>",
"recording_id": "<Base32-UUIDv4>",
"org_id": "<UUID>",
"project_id": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
録画関連ファイルの Sora との差分¶
*_path
系の値がすべて"REDACTED"
という文字列に置き換わりますevent_metadata
の値がすべて"REDACTED"
という文字列に置き換わります
イベントウェブフックの Sora との差分¶
イベントウェブフック recording.report¶
Sora Cloud の録画ウェブフック recording.report
は Sora と仕様が一部が異なります。
Sora では録画終了時のウェブフックにレポートと録画とメタデータのファイルローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "recording.report",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"timestamp": "<UTC RFC3339 Timestamp>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"metadata": "<JSON-Object>",
"split_only": "<Boolean>",
"file_written": "<Boolean>",
"created_at": "<UNIX-Time>",
"expire_time": "<Integer>",
"expired_at": "<UNIX-Time>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"file_path": "REDACTED",
"filename": "<String>",
"failed_archives": [],
"archives": [
{
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"label": "<String>",
"node_name": "<String>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
},
{
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"label": "<String>",
"node_name": "<String>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
}
]
}
}
イベントウェブフック archive.available¶
Sora Cloud の録画ウェブフック archive.available
は Sora と仕様が一部が異なります。
Sora では録画ファイルが利用可能になった際のウェブフックに、録画ファイルとメタデータのローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "archive.available",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"timestamp": "<UTC RFC3339 Timestamp>",
"event_metadata": "<JSON>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"session_id": "<String or Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"created_at": "<UNIX-Time>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_filename": "<String>",
"metadata_file_path": "REDACTED",
"size": "<Integer>",
"audio": "<Boolean>",
"audio_codec_type": "<String>",
"video": "<Boolean>",
"video_codec_type": "<String>",
"video_bit_rate": "<Integer>",
"video_height": "<Integer>",
"video_width": "<Integer>"
"stats": {},
"start_time": "<UNIX-Time>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time": "<UNIX-Time>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>"
}
}
イベントウェブフック split-archive.available¶
Sora Cloud の録画ウェブフック split-archive.available
は Sora と仕様が一部が異なります。
Sora では録画ファイルが利用可能になった際のウェブフックに、録画ファイルとメタデータのローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "split-archive.available",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"timestamp": "<UTC RFC3339 Timestamp>",
"event_metadata": "<JSON>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"split_index": "<String>",
"session_id": "<String or Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"created_at": "<UNIX-Time>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_filename": "<String>",
"metadata_file_path": "REDACTED",
"size": "<Integer>",
"audio": "<Boolean>",
"audio_codec_type": "<String>",
"video": "<Boolean>",
"video_codec_type": "<String>",
"video_bit_rate": "<Integer>",
"video_height": "<Integer>",
"video_width": "<Integer>"
"stats": {},
"start_time": "<UNIX-Time>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time": "<UNIX-Time>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>"
}
}
イベントウェブフック split-archive.end¶
Sora Cloud の録画ウェブフック split-archive.end
は Sora と仕様が一部が異なります。
Sora では録画ファイルが利用可能になった際のウェブフックに、録画ファイルとメタデータのローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "split-archive.end",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"timestamp": "<UTC RFC3339 Timestamp>",
"event_metadata": "<JSON>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"split_last_index": "<String>",
"session_id": "<String or Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"filename": "<String>",
"file_path": "REDACTED",
"audio": "<Boolean>",
"audio_codec_type": "<String>",
"video": "<Boolean>",
"video_codec_type": "<String>",
"video_bit_rate": "<Integer>",
"stats": {},
"start_time": "<UNIX-Time>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time": "<UNIX-Time>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>"
}
}
セッションウェブフックの Sora との差分¶
セッションウェブフック recording.report¶
Sora Cloud のセッションウェブフック recording.report
は Sora と仕様が一部が異なります。
Sora では録画終了時のウェブフックにレポートと録画とメタデータのファイルローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "recording.report",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<String",
"session_metadata": "<JSON>",
"timestamp": "<UTC RFC3339 Timestamp>",
"data": {
"channel_id": "<String>",
"session_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"recording_metadata": "<JSON-Object>",
"split_only": "<Boolean>",
"split_duration": "<Integer>",
"created_at": "<UNIX-Time>",
"expire_time": "<Integer>",
"expired_at": "<UNIX-Time>",
"file_path": "<String>",
"filename": "<String>",
"file_written": "<Boolean>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"archives": [
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"file_path": "REDACTED",
"filename": "<String>",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
},
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"file_path": "REDACTED",
"filename": "<String>",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
}
],
"failed_archives": [
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>"
},
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>"
}
]
}
}
S3 または S3 互換オブジェクトストレージのエンドポイント¶
Google Cloud Storage¶
- endpoint:
storage.googleapis.com
Akamai Connected Cloud (Linode Object Storage)¶
- endpoint:
<region>.linodeobjects.com
Vultr Object Storage¶
- endpoint:
<region>.vultrobjects.com
region は以下を参考にしてください。
Cloudflare R2¶
- endpoint:
<account-id>.r2.cloudflarestorage.com
account-id は以下を参考にしてください。
https://developers.cloudflare.com/fundamentals/get-started/basic-tasks/find-account-and-zone-ids/
Sora Cloud での Google Cloud Storage の利用方法¶
Google Cloud Storage を録画機能で利用する際の設定例です。
Google Cloud の IAM から Sora Cloud から使用するサービスアカウントを作成します
Sora Cloud から Google Cloud Storage の接続検証時には
Storage オブジェクトユーザー (roles/storage.objectUser)
のロールを使用していますファイル書き込みと削除、録画ファイルを保存する際に録画 ID でフォルダを作成するための権限が最低限必要になります
Hisui Cloud を利用する場合はファイル取得の権限も必要になります
録画ファイル保存先のバケットを作成します
バケット名は S3 互換の命名規則に従い設定を行います
3-63 文字の範囲
英字小文字、数字、ハイフンのみ
その他の規則は S3 互換の命名規則 を参照してください
Google Cloud Storage の設定から相互運用性のタブを開きます
サービスアカウント HMAC から
サービスアカウント用にキーを作成
をクリックし、作成したサービスアカウントを選択しますアクセスキーとシークレットが表示されます
それぞれ Sora Cloud 管理コンソール上の Object Storage Access Key ID と Object Storage Secret Access Key として使用するため控えておきます
Sora Cloud のプロジェクト設定画面でオブジェクトストレージの設定を行います
Object Storage Endpoint: storage.googleapis.com
Object Storage Access Key ID: 作成した HMAC アクセスキー
Object Storage Secret Access Key: 作成した HMAC シークレット
Object Storage Bucket Name: 作成したバケット名
Hisui Cloud¶
この機能は現時点でアルファ版のため、正式リリース時と仕様が異なる場合があります。
概要¶
- Hisui バージョン:
2023.2.1
Hisui Cloud は時雨堂がオープンソースで公開している録画合成ツール Hisui のクラウド版です。 Sora Cloud の機能の一つとして提供しています。Sora Cloud で録画したファイルを合成することができます。
注意¶
分割録画ファイルには非対応¶
Hisui Cloud では分割録画ファイルには非対応です。
注釈
将来的には分割録画ファイルに対応する予定です。
MP4 形式の録画ファイルには非対応¶
Hisui Cloud では Sora 2024.2.0 から利用可能な MP4 形式の録画ファイルには非対応です。
注釈
将来的には MP4 形式の録画ファイルに対応する予定です。
オブジェクトストレージのエグレス料金¶
Hisui Cloud ではオブジェクトストレージにアップロードした録画ファイルを再度ダウンロードします。 そのため、利用しているオブジェクトストレージのエグレス料金がかかる場合があります。
注釈
将来的には Sora Cloud にて録画ストレージを提供することでエグレス料金がかからない仕組みを提供する予定です。
録画ファイル取得先のオブジェクトストレージ設定¶
オブジェクトストレージの設定はプロジェクトの設定で行い、録画機能と同じオブジェクトストレージ設定を使用します。 Hisui Cloud を使用する場合はオブジェクトストレージ設定に設定したアクセスキーに対してファイルの取得権限も必要です。
合成機能機能¶
録画したファイルを合成します。アルファ版の段階ではレイアウトは指定できず出力されるファイルは固定となります。 ベータ版にてレイアウトを指定可能にする予定です。正式リリース時にはレイアウトエディターを提供予定です。
アルファ版で提供する機能¶
プロファイルは正式版では変更予定です
一括合成ファイルのみ
出力されるファイルのプロファイルを選択可能
デフォルトは 0 です
profile_id: 0
映像は VP9
音声は Opus
コンテナは MP4
解像度は 720p (1280x720)
ビットレートは 1000 Kbps
profile_id: 1
映像は VP9
音声は Opus
コンテナは MP4
解像度は 1080p (1920x1080)
ビットレートは 1500 Kbps
profile_id: 2
映像は AV1
音声は Opus
コンテナは MP4
解像度は 1080p (1920x1080)
ビットレートは 1000 Kbps
料金¶
Hisui Cloud を利用するのに追加料金は不要です。
注釈
将来的に合成ジョブを優先的に処理をするにためのプランを用意する予定です。
管理コンソール¶
重要
Hisui Cloud は追加料金なしで利用できます。
Hisui Cloud の録画合成を開始する¶
管理コンソールの Past recordings
から合成したい録画 ID をクリックします。
Recording details
で 右上の Go to Hisui Cloud Jobs
をクリックしてください。

Hisui Cloud Jobs
で Create job
をクリックします。

ポップアップが表示されるのでプロファイルを選択し Create Job
をクリックします。

これで Hisui Cloud の録画合成が開始します。
API¶
プロジェクト Hisui Cloud API をご確認ください。
ウェブフック¶
Sora Cloud ウェブフック hisui-cloud-job.started¶
録画合成開始時に通知されます。
{
"id": "<Base32-UUIDv4>",
"type": "hisui-job.started",
"hisui_job_id": "<Base32-UUIDv4>",
"timestamp": "<RFC3339>",
"status": "started",
"project_id": "<String>",
"org_id": "<UUID>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"queued_timestamp": "<RFC3339>",
"started_timestamp": "<RFC3339>",
"output_audio_codec_type": "<String>",
"output_audio_bit_rate": "<Integer>",
"output_video_codec_type": "<String>",
"output_video_bit_rate": "<Integer>",
"output_container_type": "<String>",
"output_resolution": "<String>",
"recording_duration_s": "<Integer>",
"output_duration_s": "<Integer>"
}
Sora Cloud ウェブフック hisui-cloud-job.composited¶
録画合成成功時に通知されます。
{
"id": "<Base32-UUIDv4>",
"hisui_job_id": "<Base32-UUIDv4>",
"timestamp": "<RFC3339>",
"type": "hisui-job.composited",
"status": "composited",
"project_id": "<String>",
"org_id": "<UUID>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"queued_timestamp": "<RFC3339>",
"started_timestamp": "<RFC3339>",
"composited_timestamp": "<RFC3339>",
"output_audio_codec_type": "<String>",
"output_audio_bit_rate": "<Integer>",
"output_video_codec_type": "<String>",
"output_video_bit_rate": "<Integer>",
"output_container_type": "<String>",
"output_resolution": "<String>",
"recording_duration_s": "<Integer>",
"output_duration_s": "<Integer>"
}
Sora Cloud ウェブフック hisui-cloud-job.uploaded¶
録画合成ファイルのアップロード成功時に通知されます。
{
"id": "<Base32-UUIDv4>",
"hisui_job_id": "<Base32-UUIDv4>",
"timestamp": "<RFC3339>",
"type": "hisui-job.uploaded",
"status": "uploaded",
"project_id": "<String>",
"org_id": "<UUID>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"queued_timestamp": "<RFC3339>",
"started_timestamp": "<RFC3339>",
"composited_timestamp": "<RFC3339>",
"uploaded_timestamp": "<RFC3339>",
"output_audio_codec_type": "<String>",
"output_audio_bit_rate": "<Integer>",
"output_video_codec_type": "<String>",
"output_video_bit_rate": "<Integer>",
"output_container_type": "<String>",
"output_resolution": "<String>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>",
"recording_duration_s": "<Integer>",
"output_duration_s": "<Integer>"
}
Sora Cloud ウェブフック hisui-cloud-job.completed¶
録画合成処理が完了時に通知されます。
{
"id": "<Base32-UUIDv4>",
"hisui_job_id": "<Base32-UUIDv4>",
"timestamp": "<RFC3339>",
"type": "hisui-job.completed",
"status": "completed",
"project_id": "<String>",
"org_id": "<UUID>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"queued_timestamp": "<RFC3339>",
"started_timestamp": "<RFC3339>",
"composited_timestamp": "<RFC3339>",
"uploaded_timestamp": "<RFC3339>",
"completed_timestamp": "<RFC3339>",
"output_audio_codec_type": "<String>",
"output_audio_bit_rate": "<Integer>",
"output_video_codec_type": "<String>",
"output_video_bit_rate": "<Integer>",
"output_container_type": "<String>",
"output_resolution": "<String>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>",
"recording_duration_s": "<Integer>",
"output_duration_s": "<Integer>"
}
Sora Cloud ウェブフック hisui-cloud-job.canceled¶
処理キャンセル時に通知されます。
{
"id": "<Base32-UUIDv4>",
"hisui_job_id": "<Base32-UUIDv4>",
"timestamp": "<RFC3339>",
"type": "hisui-job.canceled",
"status": "canceled",
"project_id": "<String>",
"org_id": "<UUID>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"queued_timestamp": "<RFC3339>",
"started_timestamp": "<RFC3339>",
"canceled_timestamp": "<RFC3339>",
"output_audio_codec_type": "<String>",
"output_audio_bit_rate": "<Integer>",
"output_video_codec_type": "<String>",
"output_video_bit_rate": "<Integer>",
"output_container_type": "<String>",
"output_resolution": "<String>",
"recording_duration_s": "<Integer>",
"output_duration_s": "<Integer>"
}
Sora Cloud ウェブフック hisui-cloud-job.failed¶
処理失敗時に通知されます。
{
"id": "<Base32-UUIDv4>",
"hisui_job_id": "<Base32-UUIDv4>",
"timestamp": "<RFC3339>",
"type": "hisui-job.failed",
"status": "failed",
"error_code": "<String>",
"project_id": "<String>",
"org_id": "<UUID>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"queued_timestamp": "<RFC3339>",
"started_timestamp": "<RFC3339>",
"failed_timestamp": "<RFC3339>",
"output_audio_codec_type": "<String>",
"output_audio_bit_rate": "<Integer>",
"output_video_codec_type": "<String>",
"output_video_bit_rate": "<Integer>",
"output_container_type": "<String>",
"output_resolution": "<String>",
"recording_duration_s": "<Integer>",
"output_duration_s": "<Integer>"
}
エラーメッセージ¶
概要¶
Sora Cloud が返却するエラーメッセージの内容は以下の通りです。
シグナリングエラー¶
Sora Cloud が返却するエラーメッセージのみを記載しています。 Sora が返却するエラーについては Sora ドキュメントのシグナリングエラー を参照してください。
切断時の reason に以下エラーメッセージが入ります。
reason |
内容 |
---|---|
INVALID-ACCESS-TOKEN |
access_token を元にした認証チェックエラー指定した
channel_id の形式が不正シグナリングパラメーターに
multistream : false を指定 |
NO-SUCH-ORG |
指定した
channel_id に Project ID が存在しないProject ID が無効になっている
|
ExternalAuthWebhookError |
認証サーバーのウェブフックから 200 以外のステータスコードが送られてきた
認証サーバーの戻り値が規定されている値と異なる
|
ExternalAuthWebhookTimeoutError |
認証サーバーが 10 秒以内に応答を返さなかった |
Hisui Cloud エラー¶
Hisui Cloud の処理失敗時にウェブフックによる返却およびコンソール画面に表示するエラーメッセージを記載します。
ウェブフックは Sora Cloud ウェブフック hisui-cloud-job.failed の error_code
にエラーメッセージが入ります。
error_code |
内容 |
---|---|
MISSING-OBJECT-STORAGE-SETTINGS |
オブジェクトストレージの設定内容が不正
プロジェクトのオブジェクトストレージの設定内容が正しいかを確認してください
|
OBJECT-STORAGE-WRITE-TESTING-ERROR |
オブジェクトストレージへの書き込みチェックエラー
オブジェクトストレージが書き込み可能となっているかを確認してください
|
RECORDING-ARCHIVE-DOWNLOAD-ERROR |
オブジェクトストレージへの読み込みチェックエラー
オブジェクトストレージが読み込み可能となっているかを確認してください
|
RECORDING-ARCHIVE-NOT-FOUND |
合成対象の録画ファイルがオブジェクトストレージに存在しない
録画時に配置されたディレクトリに録画ファイルが存在するかを確認してください
|
COMPOSITE-FILE-UPLOAD-ERROR |
合成した録画ファイルのアップロードに失敗
オブジェクトストレージの権限や容量の問題、通信エラーの可能性があります
|
INTERNAL-ERROR |
Hisui Cloud の内部エラー
録画 ID とジョブ ID を合わせてサポートにお問い合わせください
|
HISUI-COMMAND-ERROR |
Hisui Cloud の内部エラー
録画 ID とジョブ ID を合わせてサポートにお問い合わせください
|
WEBHOOK-SEND-ERROR |
Hisui Cloud の内部エラー
録画 ID とジョブ ID を合わせてサポートにお問い合わせください
|
WebRTC SFU Sora¶
概要¶
- Sora バージョン:
2024.2.1
Sora Cloud で提供している Sora についてまとめています。
Sora 最新バージョンの適用¶
メジャーアップデート版¶
Sora Cloud の Sora はパッケージ版の Sora が正式リリースされた 1 ヶ月以内に最新版が利用可能になります。
注釈
Sora パッケージ版のメジャーアップデートは基本的に 6 月と 12 月に行います。
メジャーアップデート版のリリース時にはサービス停止を伴うメンテナンスを行う場合があります。 その場合は 1 ヶ月以上前にメンテナンス計画を共有します。
メンテナンス時間は長くても 3 時間で 14:00~17:00 の間に行います。
バグフィックスアップデート版¶
Sora Cloud の Sora のバグフィックスアップデート版のデプロイはサイレントに行います。
サービス停止を伴うメンテナンスは基本的に行いません。
Sora の互換性¶
シグナリングやウェブフックの破壊的変更可能な限り行いません。
もし正式版の破壊的変更を行う場合は 1 年以上の移行期間をもうけます。
Sora の実験的機能¶
Sora Cloud では Sora の実験的機能を利用する際、ご連絡頂く必要はありません。
クラスター¶
リレー機能が有効になっています
クラスターアフィニティ機能が有効になっています
クラスター数¶
Sora のクラスターは少なくとも 5 ノード以上のクラスターで構築されています。
Sora API URL¶
- URL:
https://api.sora-cloud.shiguredo.app/sora-api
x-sora-target
ヘッダー利用する Sora API を指定してください
シグナリング URL¶
シグナリング URL は以下の URL を利用してください。
- URL:
wss://sora.sora-cloud.shiguredo.app/signaling
複数のシグナリング URL¶
複数のシグナリング URL を利用することもできます。
wss://0001.sora.sora-cloud.shiguredo.app/signaling
wss://0002.sora.sora-cloud.shiguredo.app/signaling
wss://0003.sora.sora-cloud.shiguredo.app/signaling
TURN URLs¶
これらの値を意識していただく必要はありません
turn://<シーケンス番号>.sora-turn.sora-cloud.shiguredo.app
turns://<シーケンス番号>.sora-turn.sora-cloud.shiguredo.app
WHIP¶
WHIP は TURN には非対応です
OBS が正式版で対応した場合に対応します
WHIP エンドポイント URL¶
Bearer Token にはアクセストークンを指定してください。
- URL:
https://sora.sora-cloud.shiguredo.app/whip/<channel-id>
WHIP リソース URL¶
これらの値を意識する必要はありません
現時点では DELETE メソッドのみに対応しています。
- URL:
https://sora.sora-cloud.shiguredo.app/whip-resource/<channel_id>/<secret>
WHEP¶
TURN には非対応です
OBS が正式版で対応した場合に対応します
WHEP エンドポイント URL¶
Bearer Token にはアクセストークンを指定してください。
以下のURL をご利用ください。
- URL:
https://sora.sora-cloud.shiguredo.app/whep/<channel-id>
WHEP リソース URL¶
これらの値を意識する必要はありません
現時点では DELETE メソッドのみに対応しています。
- URL:
https://sora.sora-cloud.shiguredo.app/whep-resource/<channel_id>/<secret>
ヘルスチェック URL¶
Sora Cloud で提供している Sora は接続するクライアントが 0 のタイミングでサイレントでメンテナンスを行うため、 Sora のヘルスチェック機能の利用は推奨していません。
それでも Sora のヘルスチェックが必要な場合はチケットを作成してください。
sora.conf¶
項目名 |
値 |
備考 |
---|---|---|
label |
設定済 |
|
ipv4_address |
設定済 |
|
ipv6 |
true |
|
ipv6_address |
設定済 |
|
devtools |
false |
https://sora-devtools.shiguredo.app/ をお使いください |
multistream_auto_sharing_video_bit_rate |
false |
そのままの帯域が利用されますのでご注意ください |
ウェブフック関連の設定¶
auth_webhook_url |
設定済 |
|
---|---|---|
session_webhook_url |
設定済 |
|
event_webhook_url |
設定済 |
|
webhook_basic_authn |
true |
|
webhook_basic_authn_user_id |
設定済 |
|
webhook_basic_authn_password |
設定済 |
|
ignore_connection_failed_webhook |
false |
シグナリング関連の設定¶
項目名 |
値 |
備考 |
---|---|---|
default_data_channel_signaling |
true |
|
data_channel_signaling_close_message |
true |
2024 年 12 月 18 日から true へ |
data_channel_messaging |
true |
|
data_channel_messaging_only |
true |
|
av1 |
true |
|
h265 |
true |
|
signaling_vp9_params |
true |
|
signaling_av1_params |
true |
|
signaling_h264_params |
true |
|
signaling_h265_params |
true |
|
h264_b_frame |
true |
|
h265_b_frame |
true |
|
whip |
true |
|
whep |
true |
|
whip_bearer_token_metadata_key |
access_token |
|
whep_bearer_token_metadata_key |
access_token |
|
signaling_forwarding_filter |
true |
|
signaling_bundle_id |
true |
|
simulcast_multicodec |
true |
録画関連の設定¶
項目名 |
値 |
備考 |
---|---|---|
archive_dir |
設定済 |
|
archive_tmp_dir |
設定済 |
|
legacy_recording |
true |
2025 年 12 月 1 日に廃止します |
recording_max_expire_time |
10800 s |
|
recording_max_split_duration |
10800 s |
|
recording_expire_time_required |
true |
|
recording_dual_output |
false |
TURN 関連の設定¶
項目名 |
値 |
備考 |
---|---|---|
turn_realm |
sora.sora-cloud.shiguredo.app |
|
turn_fqdn |
設定済 |
|
turn_tcp_port |
設定済 |
|
turn_tls |
true |
|
turn_tls_fqdn |
設定済 |
|
turn_tls_port |
443 |
クラスター関連の設定¶
項目名 |
値 |
備考 |
---|---|---|
cluster |
true |
|
cluster_relay |
true |
|
default_cluster_affinity |
true |
|
cluster_affinity_threshold |
5 |
|
node_name |
設定済 |
|
external_signaling_url |
設定済 |
|
external_api_url |
設定済 |
Sora Cloud API¶
概要¶
Sora Cloud では組織とプロジェクト向けの API を提供しています。
利用方法¶
- API ベース URL:
HTTP API を実行する例では httpie を利用しています。
重要
すべての API で POST
を利用します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-connections-this-month \
-vvv
Bearer トークンにはプロジェクトで作成した API キーを指定してください。
組織 API¶
組織 API を利用するにはプロジェクトでの API キーのパーミッションをプロジェクトと組織の両方を指定してください。
ステータス API¶
組織の現在のステータスを取得する API です。
トラフィック API¶
組織のトラフィック情報を取得する API です。
セッション API¶
組織のセッション情報を取得する API です。
ログ API¶
組織のログ情報を取得する API です。
録画ログ API¶
組織の録画ログ情報を取得する API です。
プロジェクト API¶
無効 (disabled) に設定されているプロジェクトでは利用できません。
アクセストークン API¶
アクセストークンを生成、管理する API です。
トラフィック API¶
プロジェクトのトラフィック情報を取得する API です。
セッション API¶
プロジェクトのセッション情報を取得する API です。
ログ API¶
プロジェクトのログ情報を取得する API です。
録画ログ API¶
プロジェクトの録画ログ情報を取得する API です。
シーケンス図¶
sequenceDiagram participant cloud as Sora Cloud participant app as アプリケーションサーバー app->>+cloud: 今月の合計コネクション数 API<br>/orgs/get-total-connections-this-month cloud-->>-app: 200 OK
Sora API¶
概要¶
Sora の API を実行します。
Sora との違い¶
パッケージ版の Sora とは違い一部利用できない API があります。
sora-api¶
Sora の API を実行します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/sora-api \
x-sora-target:'Sora_20151104.DisconnectChannel' \
channel_id='sora-cloud@SJW1TPPMQ3JGXM6XD0DTEH77RZDWX0N1' \
-vvv
利用可能な Sora API¶
詳細は Sora ドキュメント をご確認ください
-
2025-12 月リリース予定の Sora にて廃止します
-
2025-12 月リリース予定の Sora にて廃止します
Sora_20161101.GetStartedRecording
2025-12 月リリース予定の Sora にて廃止します
-
2025-12 月リリース予定の Sora にて廃止します
-
2025-12 月リリース予定の Sora にて廃止します
Sora_20200401.ListPauseRtpStreams
2025-12 月リリース予定の Sora にて廃止します
Sora_20211215.ListChannelUserAgentStats
2025-06 月リリース予定の Sora にて廃止します
Sora_20211215.ListChannelRtcStats をご利用ください
Sora_20211215.GetUserAgentStats
2025-06 月リリース予定の Sora にて廃止します
Sora_20211215.GetRtcStats をご利用ください
録画 API の制限¶
以下の録画 API はプロジェクトにてオブジェクトストレージ設定が行われていないと利用できません。
Sora_20161101.StartRecording
Sora_20161101.StopRecording
Sora_20231220.StartRecording
Sora_20231220.StopRecording
シーケンス図¶
sequenceDiagram autonumber participant sora as WebRTC SFU Sora participant cloud as Sora Cloud participant app as アプリケーションサーバー app->>+cloud: ListChannelConnections API cloud->>+sora: ListChannelConnections API sora-->>-cloud: 200 OK cloud-->>-app: 200 OK
組織 ステータス API¶
概要¶
今月の現時点までの利用合計を取得できます。
今月の合計コネクション数¶
組織の今月の合計コネクション数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-connections-this-month \
-vvv
POST /orgs/get-total-connections-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 3
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
32
今月の合計セッション数¶
今月の合計セッション数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-sessions-this-month \
-vvv
POST /orgs/get-total-sessions-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 3
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
19
今月の合計接続時間(分)¶
今月の合計接続時間(分)を取得します。 1 接続時間が 1 分に満たない場合は 0 分とした上で集計します。0 分未満で複数回接続して合計接続時間が 1 分を超えた場合も結果は 0 分となります。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-duration-min-this-month \
-vvv
POST /orgs/get-total-duration-min-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 3
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
62
今月の合計トラフィック¶
今月の合計転送量(バイト)を取得します
Ingress は受信
Egress は送信
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-traffic-this-month \
-vvv
POST /orgs/get-total-traffic-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 41
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"ingress": 334802932,
"egress": 271316192
}
今月の最大同時接続数¶
今月の最大同時接続数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-max-concurrent-connections-this-month \
-vvv
POST /orgs/get-max-concurrent-connections-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
2
今月の最大利用帯域 (Mbps)¶
今月の最大帯域を取得します。 1 Mbps に満たない場合は 0 を返却します (切り捨て) 。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-max-bandwidth-mbps-this-month \
-vvv
POST /orgs/get-max-bandwidth-mbps-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
2
今月の API リクエスト数¶
今月の API リクエスト数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-api-requests-this-month \
-vvv
POST /orgs/get-total-api-requests-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 5
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
1418
今月の Sora API リクエスト数¶
今月の Sora API リクエスト数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-sora-api-requests-this-month \
-vvv
POST /orgs/get-total-sora-api-requests-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 3
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
22
今月のウェブフックリクエスト数¶
今月のウェブフックリクエスト数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-webhook-requests-this-month \
-vvv
POST /orgs/get-total-webhook-requests-this-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 4
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
400
組織 トラフィック API¶
概要¶
指定した期間の同時接続数や帯域の情報が取得できます。
指定月トラフィック¶
組織単位での指定した月のトラフィックを取得します。
最大同時接続数
最大帯域
転送量 (Ingress / Egress)
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-traffics-for-month \
year:=<YEAR> \
month:=<MONTH> \
-vvv
POST /orgs/get-traffics-for-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 27
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"year": 2023,
"month": 12
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"date": "2023-12-01T00:00:00Z",
"max_concurrent_connections": 2,
"max_bandwidth_mbps": 2,
"ingress": 203222648,
"egress": 149065812
},
{
"date": "2023-12-02T00:00:00Z",
"max_concurrent_connections": 2,
"max_bandwidth_mbps": 2,
"ingress": 124288260,
"egress": 122220468
},
{
"date": "2023-12-03T00:00:00Z",
"max_concurrent_connections": 0,
"max_bandwidth_mbps": 0,
"ingress": 0,
"egress": 0
},
{
"date": "2023-12-04T00:00:00Z",
"max_concurrent_connections": 1,
"max_bandwidth_mbps": 1,
"ingress": 7292024,
"egress": 29912
},
...
]
組織 セッション API¶
概要¶
プロジェクトの API Key を利用してセッション情報を取得できます。
セッション情報は直近 30 日間分の最大 100 件取得できます。
現在の合計同時接続数¶
現在の同時接続数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-live-concurrent-connections \
-vvv
POST /orgs/get-total-live-concurrent-connections HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
5
現在の合計セッション数¶
現在のセッション数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/get-total-live-sessions \
-vvv
POST /orgs/get-total-live-sessions HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
2
現在のセッション一覧¶
現在のセッション一覧を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/list-live-sessions \
-vvv
POST /orgs/list-live-sessions HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 255
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"node_name": "sora1@sora-cloud1",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DCO9",
"session_id": "DM2ASQDRF90H9DPS5S5ABKWTKM",
"channel_connections": 1,
"start_timestamp": "2023-12-21T10:13:21.732601Z",
"last_active_timestamp": "2023-12-21T10:13:21.941259Z"
},
{
"node_name": "sora2@sora-cloud2",
"channel_id": "channel-2@A5J467N5AWTQHFSA2VIKVNGDB2VK2DCO9",
"session_id": "ZM2ASQDRF90H9DPS5S5ABKWTKM",
"channel_connections": 1,
"start_timestamp": "2023-12-21T10:13:21.732601Z",
"last_active_timestamp": "2023-12-21T10:13:21.941259Z"
}
...
]
組織 ログ API¶
概要¶
ログに関する API です。過去のセッションやコネクションのログを確認できます。
セッションログ一覧¶
直近 3 日間分のセッションを最大 1000 件取得します。利用転送量の単位はバイトです。
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/list-session-logs \
project_id=<PROJECT-ID> \
-vvv
POST /orgs/list-session-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 50
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:13:59.947433Z",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "DM2ASQDRF90H9DPS5S5ABKWTKM",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-21T10:13:21.731452Z",
"destroyed_timestamp": "2023-12-21T10:13:59.947058Z",
"duration_min": 0
},
{
"timestamp": "2023-12-21T08:05:21.073115Z",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "4HW0G1Y65H57519CFEHTGP5ZG0",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-21T08:03:24.052625Z",
"destroyed_timestamp": "2023-12-21T08:05:21.072713Z",
"duration_min": 1
},
...
]
コネクションログ一覧¶
直近 3 日間分のコネクション情報を最大 1000 件取得します。利用転送量の単位はバイトです。
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/list-connection-logs \
project_id=<PROJECT-ID> \
-vvv
POST /orgs/list-connection-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 50
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:13:42.909631Z",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "DM2ASQDRF90H9DPS5S5ABKWTKM",
"client_id": "96NA2SW34N4HB948FZQATMKNV0",
"bundle_id": "96NA2SW34N4HB948FZQATMKNV0",
"connection_id": "96NA2SW34N4HB948FZQATMKNV0",
"total_received_bytes": 1500758,
"total_sent_bytes": 2272,
"created_timestamp": "2023-12-21T10:13:21.938754Z",
"destroyed_timestamp": "2023-12-21T10:13:42.909534Z",
"duration_min": 0
},
{
"timestamp": "2023-12-21T08:05:04.017143Z",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "4HW0G1Y65H57519CFEHTGP5ZG0",
"client_id": "J7DSDH13392X797FS0Z8A35R34",
"bundle_id": "J7DSDH13392X797FS0Z8A35R34",
"connection_id": "J7DSDH13392X797FS0Z8A35R34",
"total_received_bytes": 7200849,
"total_sent_bytes": 10596,
"created_timestamp": "2023-12-21T08:03:24.262361Z",
"destroyed_timestamp": "2023-12-21T08:05:04.016977Z",
"duration_min": 1
},
...
]
API ログ一覧¶
直近 3 日間分の API ログを最大 1000 件取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/list-api-logs \
project_id=<PROJECT-ID> \
-vvv
POST /orgs/list-api-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 50
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:19:57.8Z",
"url": "https://api.sora-cloud.shiguredo.app/orgs/list-connection-logs",
"status": 200,
"elapsed_time_ms": 6
},
{
"timestamp": "2023-12-21T10:19:57.784Z",
"url": "https://api.sora-cloud.shiguredo.app/orgs/list-session-logs",
"status": 200,
"elapsed_time_ms": 5
},
{
"timestamp": "2023-12-21T10:19:57.769Z",
"url": "https://api.sora-cloud.shiguredo.app/project/get-past-connection",
"status": 400,
"elapsed_time_ms": 5
},
...
]
Sora API ログ一覧¶
直近 3 日間分の API ログを最大 1000 件取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/list-sora-api-logs \
project_id=<PROJECT-ID> \
-vvv
POST /orgs/list-sora-api-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 50
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-19T07:28:23.248Z",
"sora_target": "Sora_20230628.TerminateSession",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status": 200,
"elapsed_time_ms": 2130
},
{
"timestamp": "2023-12-19T04:12:05.857Z",
"sora_target": "Sora_20161101.StopRecording",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status": 200,
"elapsed_time_ms": 5
},
...
]
ウェブフックログ一覧¶
直近 3 日間分のウェブフックログを最大 1000 件取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/orgs/list-webhook-logs \
project_id=<PROJECT-ID> \
-vvv
POST /orgs/list-webhook-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 50
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:19:50.009Z",
"type": "connection.created",
"url": "https://example.com/event",
"status": 200,
"elapsed_time_ms": 4
},
{
"timestamp": "2023-12-21T10:19:49.792Z",
"type": "session.created",
"url": "https://example.com/session",
"status": 200,
"elapsed_time_ms": 3
},
...
]
組織 録画ログ API¶
概要¶
組織単位での録画ログに関する API です。過去の録画やアーカイブログを確認できます。
録画情報は直近 30 日間分の最大 1000 件取得できます。
録画レポートログ一覧¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/list-recording-report-logs \
project_id=<PROJECT_ID> \
-vvv
POST /orgs/list-recording-report-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 50
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-18T06:05:30.025051Z",
"id": "5HE8MHYN1S3K37H0PPJMKA4TY4",
"recording_id": "2Q29SF936S2T503EDJKSTPM8HW",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"start_timestamp": "2023-12-18T06:04:43.63Z",
"stop_timestamp": "2023-12-18T06:05:30.023Z",
"split_only": false,
"split_duration": null,
"expire_time": 180,
"filename": "report-2Q29SF936S2T503EDJKSTPM8HW.json"
},
{
"timestamp": "2023-12-18T06:25:37.466685Z",
"id": "MX4BKSBSAX1CDD3JF66XP013P0",
"recording_id": "4V4V4QHNNH51K3CDKQWFVKQWJM",
"channel_id": "channel-2@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"start_timestamp": "2023-12-18T06:22:35.437Z",
"stop_timestamp": "2023-12-18T06:25:35.437Z",
"split_only": false,
"split_duration": null,
"expire_time": 180,
"filename": "report-4V4V4QHNNH51K3CDKQWFVKQWJM.json"
},
...
]
アーカイブログ一覧¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/list-archive-logs \
project_id=<PROJECT_ID> \
recording_id=<RECORDING-ID> \
-vvv
POST /orgs/list-archive-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 96
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T04:50:44.277233Z",
"id": "30RM380EGN5AK3G365BFAA4518",
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"client_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"start_timestamp": "2023-12-22T04:47:42.42749Z",
"stop_timestamp": "2023-12-22T04:50:42.433113Z",
"filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.webm",
"metadata_filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.json"
},
...
]
アーカイブログ詳細¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/get-archive-log \
project_id=<PROJECT_ID> \
recording_id=<RECORDING-ID> \
connection_id=<CONNECTION-ID> \
-vvv
POST /orgs/get-archive-log HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 143
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T04:50:44.277233Z",
"id": "30RM380EGN5AK3G365BFAA4518",
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"client_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"video_height": 480,
"video_width": 640,
"size": 11972663,
"start_timestamp": "2023-12-22T04:47:42.42749Z",
"stop_timestamp": "2023-12-22T04:50:42.433113Z",
"filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.webm",
"metadata_filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.json"
}
]
分割アーカイブログ一覧¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/list-split-archive-logs \
project_id=<PROJECT_ID> \
recording_id=<RECORDING-ID> \
-vvv
POST /orgs/list-split-archive-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 96
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T08:11:05.912378Z",
"id": "GGQCGN36D54FBCZ4XV96DQTRZ0",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"split_last_index": "0008",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "50SFC8S97S6PVBHDCSCBMN52H4",
"client_id": "FB9GZV0FE137Q4PABS2VH92094",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"start_timestamp": "2023-12-22T08:03:57.061822Z",
"stop_timestamp": "2023-12-22T08:11:03.881563Z",
"filename": "split-archive-end-FB9GZV0FE137Q4PABS2VH92094.json"
},
...
]
分割アーカイブログ詳細¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/orgs/get-split-archives-log \
project_id=<PROJECT_ID> \
recording_id=<RECORDING-ID> \
connection_id=<CONNECTION-ID> \
-vvv
POST /orgs/get-split-archives-log HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 143
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"project_id": "A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T08:04:57.057286Z",
"id": "JAKSXCQRCH6HFCANAKA2CG8K0G",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"split_index": "0001",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "50SFC8S97S6PVBHDCSCBMN52H4",
"client_id": "FB9GZV0FE137Q4PABS2VH92094",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"video_height": 480,
"video_width": 640,
"size": 2691827,
"start_timestamp": "2023-12-22T08:03:57.062942Z",
"stop_timestamp": "2023-12-22T08:04:37.03447Z",
"filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0001.webm",
"metadata_filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0001.json"
},
{
"timestamp": "2023-12-22T08:05:57.063581Z",
"id": "GHDX8EYHMN75314M8WMD299ZX8",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"split_index": "0002",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "50SFC8S97S6PVBHDCSCBMN52H4",
"client_id": "FB9GZV0FE137Q4PABS2VH92094",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"video_height": 480,
"video_width": 640,
"size": 4072474,
"start_timestamp": "2023-12-22T08:04:37.039673Z",
"stop_timestamp": "2023-12-22T08:05:37.035789Z",
"filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0002.webm",
"metadata_filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0002.json"
},
...
]
プロジェクト アクセストークン API¶
概要¶
プロジェクトの API Key を利用してそのプロジェクトの JWT を作成できます。
アクセストークン生成¶
アクセストークンを指定できます。
すべての指定はオプションです。
channel_id¶
オプション
- 型:
string
Sora のチャネル ID を指定します。
チャネル ID は <チャネル名>@<プロジェクト ID>
です。
チャネル名には好きな文字列を指定可能です。
role¶
オプション
- 型:
string
Sora のロール (sendrecv / sendonly / recvonly) を指定します。
max_channel_connections¶
オプション
- 型:
integer
- 範囲:
0-5000
チャネルの最大同時接続数を指定します。この設定は接続単位で影響します。
例えばこの設定が 1 のトークンを利用した接続はチャネルに 1 接続以上存在する場合は接続ができなくなります。
また、この設定が 0 のトークンを利用した場合、必ず接続に失敗します。
not_before¶
オプション
- 型:
RFC 3339
- URL:
JWT が有効になる日時を指定します。数値ではなく RFC 3339 フォーマットで指定してください。
expiration_time¶
オプション
- 型:
RFC 3339
- URL:
JWT の有効期限を指定します。数値ではなく RFC 3339 フォーマットで指定してください。
jwt_id¶
オプション
- 型:
string (UUID)
- URL:
jwt_id
を指定する場合は UUID を指定する必要があります。
jwt_id
を指定しなくても自動で UUID を生成し jti Claim を付与して JWT を生成します。
実行例¶
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/create-access-token \
channel_id=<Channel-ID> \
-vvv
POST /projects/create-access-token HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 60
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"channel_id": "<Channel-ID>"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 375
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6I..."
}
アクセストークンに有効期限を設定する場合の実行例
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/create-access-token \
channel_id=<Channel-ID> \
not_before='2022-10-20T10:00:00+09:00' \
expiration_time='2023-10-27T10:00:00+09:00' \
-vvv
アクセストークンに最大同時接続数を設定する場合の実行例
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/create-access-token \
channel_id=<Channel-ID> \
max_channel_connections:=10 \
-vvv
プロジェクト トラフィック API¶
概要¶
プロジェクトの API Key を利用してそのプロジェクトのトラフィック情報を取得します。
以下の項目が取得できます。
最大同時接続数 (Max concurrent connections)
最大利用帯域 (Max bandwidth)
最大イングレス (Ingress)
最大エグレス (Egress)
直近 1 年のトラフィックを取得する¶
直近 1 年のトラフィックを 1 ヶ月単位で取得します。利用転送量の単位はバイトです。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-traffics-last-year \
-vvv
POST /projects/list-traffics-last-year HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2022-12-01T00:00:00Z",
"max_concurrent_connections": 2,
"max_bandwidth_mbps": 2,
"ingress": 336327052,
"egress": 271330208
},
{
"timestamp": "2023-01-01T00:00:00Z",
"max_concurrent_connections": 0,
"max_bandwidth_mbps": 0,
"ingress": 0,
"egress": 0
},
{
"timestamp": "2023-02-01T00:00:00Z",
"max_concurrent_connections": 0,
"max_bandwidth_mbps": 0,
"ingress": 0,
"egress": 0
},
...
]
直近 1 ヶ月のトラフィックを取得する¶
直近 1 ヶ月のトラフィックを 1 日単位で取得します。利用転送量の単位はバイトです。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-traffics-last-month \
-vvv
POST /projects/list-traffics-last-month HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-11-21T00:00:00Z",
"max_concurrent_connections": 2,
"max_bandwidth_mbps": 2,
"ingress": 124288260,
"egress": 122220468
},
{
"timestamp": "2023-11-22T00:00:00Z",
"max_concurrent_connections": 0,
"max_bandwidth_mbps": 0,
"ingress": 0,
"egress": 0
},
{
"timestamp": "2023-11-23T00:00:00Z",
"max_concurrent_connections": 1,
"max_bandwidth_mbps": 1,
"ingress": 8816144,
"egress": 43928
}
...
]
直近 1 週間のトラフィックを取得する¶
直近 1 週間トラフィックを 1 日単位で取得します。利用転送量の単位はバイトです。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-traffics-last-week \
-vvv
POST /projects/list-traffics-last-week HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-14T00:00:00Z",
"max_concurrent_connections": 2,
"max_bandwidth_mbps": 2,
"ingress": 203222648,
"egress": 149065812
},
{
"timestamp": "2023-12-15T00:00:00Z",
"max_concurrent_connections": 2,
"max_bandwidth_mbps": 2,
"ingress": 124288260,
"egress": 122220468
},
{
"timestamp": "2023-12-16T00:00:00Z",
"max_concurrent_connections": 0,
"max_bandwidth_mbps": 0,
"ingress": 0,
"egress": 0
},
...
]
直近 1 日のトラフィックを取得する¶
直近 1 日のトラフィックを 1 時間単位で取得します。利用転送量の単位はバイトです。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-traffics-last-day \
-vvv
POST /projects/list-traffics-last-day HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-20T10:00:00Z",
"max_concurrent_connections": 1,
"max_bandwidth_mbps": 1,
"ingress": 7292024,
"egress": 29912
},
{
"timestamp": "2023-12-20T11:00:00Z",
"max_concurrent_connections": 0,
"max_bandwidth_mbps": 0,
"ingress": 0,
"egress": 0
},
{
"timestamp": "2023-12-20T12:00:00Z",
"max_concurrent_connections": 1,
"max_bandwidth_mbps": 0,
"ingress": 1524120,
"egress": 14016
},
...
]
プロジェクト セッション API¶
概要¶
プロジェクトの API Key を利用してそのプロジェクトのセッション情報を取得できます。
セッション情報は直近 30 日間分の最大 100 件取得できます。
現在の同時接続数¶
現在の同時接続数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/get-total-live-concurrent-connections \
-vvv
POST /projects/get-total-live-concurrent-connections HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
5
現在のセッション合計数¶
現在のセッション合計数を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/get-total-live-sessions \
-vvv
POST /projects/get-total-live-sessions HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
2
現在のセッション一覧¶
現在のセッション一覧を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-live-sessions \
-vvv
POST /projects/list-live-sessions HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"start_timestamp": "2023-12-21T10:19:49.779719Z",
"node_name": "sora-1@sora-cloud1",
"channel_id": "channel-2@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "MDND1JPYF55EB54V2C72GCYFZ4",
"channel_connections": 1,
"last_active_timestamp": "2023-12-21T10:19:49.986033Z"
}
{
"start_timestamp": "2023-12-21T10:19:49.779719Z",
"node_name": "sora-2@sora-cloud2",
"channel_id": "channel-2@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "MDND1JPYF55EB54V2C72GCYFZ4",
"channel_connections": 2,
"last_active_timestamp": "2023-12-21T10:19:49.986033Z"
}
...
]
現在の指定したセッションを取得¶
指定した現在のセッション情報を取得します
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/get-live-session \
session_id=<Session-ID> \
-vvv
POST /projects/get-live-session HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 44
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 253
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"start_timestamp": "2023-12-22T04:47:42.177097Z",
"node_name": "sora1@sora-cloud1",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"channel_connections": 1,
"last_active_timestamp": "2023-12-22T04:49:42.398167Z"
}
現在のコネクション一覧¶
プロジェクトの現在の指定したセッションのコネクション一覧を取得します
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-live-connections \
session_id=<Session-ID> \
-vvv
POST /projects/list-live-connections HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 44
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"status": "Active",
"sora_version": "2023.2.0",
"node_name": "sora1@sora-cloud1",
"role": "sendrecv",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"client_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"bundle_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"multistream": true,
"simulcast": false,
"audio": true,
"audio_codec_type": "OPUS",
"audio_bit_rate": null,
"video": true,
"video_codec_type": "VP9",
"video_bit_rate": 500,
"duration_min": 2,
"total_received_bytes": 8509508,
"total_sent_bytes": 12680,
"turn_transport_type": "tcp",
"created_timestamp": "2023-12-22T04:47:42.393212Z",
"destroyed_timestamp": null
},
...
]
現在の指定したコネクション詳細¶
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/get-live-connection \
session_id=<Session-ID> \
connection_id=<Connection-ID> \
-vvv
POST /projects/get-live-connection HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 91
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 651
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"status": "Active",
"sora_version": "2023.2.0",
"node_name": "sora1@sora-cloud1",
"role": "sendrecv",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"client_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"bundle_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"multistream": true,
"simulcast": false,
"audio": true,
"audio_codec_type": "OPUS",
"audio_bit_rate": null,
"video": true,
"video_codec_type": "VP9",
"video_bit_rate": 500,
"duration_min": 2,
"total_received_bytes": 8509508,
"total_sent_bytes": 12680,
"turn_transport_type": "tcp",
"created_timestamp": "2023-12-22T04:47:42.393212Z",
"destroyed_timestamp": null
}
過去のセッション一覧¶
プロジェクトの過去のセッション一覧を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-past-sessions \
-vvv
POST /projects/list-past-sessions HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:13:59.947433Z",
"node_name": "sora1@sora-cloud1",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "DM2ASQDRF90H9DPS5S5ABKWTKM",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-21T10:13:21.731452Z",
"destroyed_timestamp": "2023-12-21T10:13:59.947058Z",
"duration_min": 0
},
{
"timestamp": "2023-12-21T08:05:21.073115Z",
"node_name": "sora1@sora-cloud1",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "4HW0G1Y65H57519CFEHTGP5ZG0",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-21T08:03:24.052625Z",
"destroyed_timestamp": "2023-12-21T08:05:21.072713Z",
"duration_min": 1
},
...
]
過去のセッション詳細¶
指定したセッション ID の過去のセッション情報を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/get-past-session \
session_id=<Session-ID> \
-vvv
POST /projects/get-past-session HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 44
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"session_id": "HWQ9DYPC0D05S9YDSTJSS3PSAR"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 331
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"timestamp": "2023-12-22T04:46:43.132317Z",
"node_name": "sora1@sora-cloud1",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "HWQ9DYPC0D05S9YDSTJSS3PSAR",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-22T04:34:19.866827Z",
"destroyed_timestamp": "2023-12-22T04:46:43.131931Z",
"duration_min": 12
}
過去のコネクション一覧¶
過去の指定したセッション ID のコネクション一覧を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-past-connections \
session_id=<Session-ID> \
-vvv
POST /projects/list-past-connections HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 44
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"session_id": "HWQ9DYPC0D05S9YDSTJSS3PSAR"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T04:46:28.129771Z",
"node_name": "sora1@sora-cloud1",
"role": "sendrecv",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "HWQ9DYPC0D05S9YDSTJSS3PSAR",
"client_id": "JX0FD6323X58D1XKDPNW4G47A8",
"bundle_id": "JX0FD6323X58D1XKDPNW4G47A8",
"connection_id": "JX0FD6323X58D1XKDPNW4G47A8",
"total_received_bytes": 50773444,
"total_sent_bytes": 76816,
"created_timestamp": "2023-12-22T04:34:20.070429Z",
"destroyed_timestamp": "2023-12-22T04:46:28.129613Z",
"duration_min": 12
},
...
]
過去のコネクション詳細¶
指定したコネクション ID の過去のコネクション情報を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/get-past-connection \
session_id=<Session-ID> \
connection_id=<Connection-ID> \
-vvv
POST /projects/get-past-connection HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 91
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"session_id": "HWQ9DYPC0D05S9YDSTJSS3PSAR",
"connection_id": "JX0FD6323X58D1XKDPNW4G47A8"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 491
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"timestamp": "2023-12-22T04:46:28.129771Z",
"node_name": "sora1@sora-cloud1",
"role": "sendrecv",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "HWQ9DYPC0D05S9YDSTJSS3PSAR",
"client_id": "JX0FD6323X58D1XKDPNW4G47A8",
"bundle_id": "JX0FD6323X58D1XKDPNW4G47A8",
"connection_id": "JX0FD6323X58D1XKDPNW4G47A8",
"total_received_bytes": 50773444,
"total_sent_bytes": 76816,
"created_timestamp": "2023-12-22T04:34:20.070429Z",
"destroyed_timestamp": "2023-12-22T04:46:28.129613Z",
"duration_min": 12
}
プロジェクト ログ API¶
概要¶
プロジェクトの API Key を利用してそのプロジェクトの直近 3 日分の最大 1000 件のログを取得できます。
セッションログ一覧¶
セッションログの一覧を取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-session-logs \
-vvv
POST /projects/list-session-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:13:59.947433Z",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "DM2ASQDRF90H9DPS5S5ABKWTKM",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-21T10:13:21.731452Z",
"destroyed_timestamp": "2023-12-21T10:13:59.947058Z",
"duration_min": 0
},
{
"timestamp": "2023-12-21T08:05:21.073115Z",
"channel_id": "channel-2@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "4HW0G1Y65H57519CFEHTGP5ZG0",
"total_connections": 1,
"max_connections": 1,
"created_timestamp": "2023-12-21T08:03:24.052625Z",
"destroyed_timestamp": "2023-12-21T08:05:21.072713Z",
"duration_min": 1
},
...
]
コネクションログ一覧¶
コネクションログを取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-connection-logs \
-vvv
POST /projects/list-connection-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:13:42.909631Z",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "DM2ASQDRF90H9DPS5S5ABKWTKM",
"client_id": "96NA2SW34N4HB948FZQATMKNV0",
"bundle_id": "96NA2SW34N4HB948FZQATMKNV0",
"connection_id": "96NA2SW34N4HB948FZQATMKNV0",
"total_received_bytes": 1500758,
"total_sent_bytes": 2272,
"created_timestamp": "2023-12-21T10:13:21.938754Z",
"destroyed_timestamp": "2023-12-21T10:13:42.909534Z",
"duration_min": 0
},
{
"timestamp": "2023-12-21T08:05:04.017143Z",
"channel_id": "channel-2@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "4HW0G1Y65H57519CFEHTGP5ZG0",
"client_id": "J7DSDH13392X797FS0Z8A35R34",
"bundle_id": "J7DSDH13392X797FS0Z8A35R34",
"connection_id": "J7DSDH13392X797FS0Z8A35R34",
"total_received_bytes": 7200849,
"total_sent_bytes": 10596,
"created_timestamp": "2023-12-21T08:03:24.262361Z",
"destroyed_timestamp": "2023-12-21T08:05:04.016977Z",
"duration_min": 1
},
...
]
API ログ一覧¶
API ログを取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-api-logs \
-vvv
POST /projects/list-api-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:19:58.216Z",
"url": "https://api.sora-cloud.shiguredo.app/projects/list-connection-logs",
"status": 200,
"elapsed_time_ms": 4
},
{
"timestamp": "2023-12-21T10:19:58.202Z",
"url": "https://api.sora-cloud.shiguredo.app/projects/list-session-logs",
"status": 200,
"elapsed_time_ms": 6
},
...
]
Sora API ログ一覧¶
Sora API ログを取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-sora-api-logs \
-vvv
POST /projects/list-sora-api-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-19T07:28:23.248Z",
"sora_target": "Sora_20230628.TerminateSession",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status": 200,
"elapsed_time_ms": 2130
},
{
"timestamp": "2023-12-19T04:12:05.857Z",
"sora_target": "Sora_20161101.StopRecording",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status": 200,
"elapsed_time_ms": 5
},
{
"timestamp": "2023-12-19T04:08:37.131Z",
"sora_target": "Sora_20161101.StartRecording",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status": 200,
"elapsed_time_ms": 8
},
...
]
ウェブフックログ一覧¶
ウェブフックログを取得します。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-webhook-logs \
-vvv
POST /projects/list-webhook-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-21T10:19:50.009Z",
"type": "connection.created",
"url": "https://example.com/event",
"status": 200,
"elapsed_time_ms": 4
},
{
"timestamp": "2023-12-21T10:19:49.817Z",
"type": "recording.started",
"url": "https://example.com/session",
"status": 200,
"elapsed_time_ms": 4
},
...
]
プロジェクト 録画ログ API¶
概要¶
プロジェクト単位での録画ログに関する API です。過去の録画やアーカイブログを確認できます。
録画情報は直近 30 日間分の最大 1000 件取得できます。
録画レポートログ一覧¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/projects/list-recording-report-logs \
-vvv
POST /projects/list-recording-report-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-18T06:05:30.025051Z",
"id": "5HE8MHYN1S3K37H0PPJMKA4TY4",
"recording_id": "2Q29SF936S2T503EDJKSTPM8HW",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"start_timestamp": "2023-12-18T06:04:43.63Z",
"stop_timestamp": "2023-12-18T06:05:30.023Z",
"split_only": false,
"split_duration": null,
"expire_time": 180,
"filename": "report-2Q29SF936S2T503EDJKSTPM8HW.json"
},
{
"timestamp": "2023-12-18T06:25:37.466685Z",
"id": "MX4BKSBSAX1CDD3JF66XP013P0",
"recording_id": "4V4V4QHNNH51K3CDKQWFVKQWJM",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"start_timestamp": "2023-12-18T06:22:35.437Z",
"stop_timestamp": "2023-12-18T06:25:35.437Z",
"split_only": false,
"split_duration": null,
"expire_time": 180,
"filename": "report-4V4V4QHNNH51K3CDKQWFVKQWJM.json"
},
...
]
アーカイブログ一覧¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/projects/list-archive-logs \
recording_id=<RECORDING-ID> \
-vvv
POST /projects/list-archive-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 46
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T04:50:44.277233Z",
"id": "30RM380EGN5AK3G365BFAA4518",
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"client_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"start_timestamp": "2023-12-22T04:47:42.42749Z",
"stop_timestamp": "2023-12-22T04:50:42.433113Z",
"filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.webm",
"metadata_filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.json"
},
...
]
アーカイブログ詳細¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/projects/get-archive-log \
recording_id=<RECORDING-ID> \
connection_id=<CONNECTION-ID> \
-vvv
POST /projects/get-archive-log HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 93
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 619
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T04:50:44.277233Z",
"id": "30RM380EGN5AK3G365BFAA4518",
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "8XWBNGXG8S60B8K5XEBHSK1BRM",
"client_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"connection_id": "7AXCNHPTVH1HH6TQ74ZH9FPRHC",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"video_height": 480,
"video_width": 640,
"size": 11972663,
"start_timestamp": "2023-12-22T04:47:42.42749Z",
"stop_timestamp": "2023-12-22T04:50:42.433113Z",
"filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.webm",
"metadata_filename": "archive-7AXCNHPTVH1HH6TQ74ZH9FPRHC.json"
}
]
分割アーカイブログ一覧¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/projects/list-split-archive-logs \
recording_id=<RECORDING-ID> \
-vvv
POST /projects/list-split-archive-logs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 46
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"recording_id": "17G3WD0SDD69NFDQ21MN488X68"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T08:11:05.912378Z",
"id": "GGQCGN36D54FBCZ4XV96DQTRZ0",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"split_last_index": "0008",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "50SFC8S97S6PVBHDCSCBMN52H4",
"client_id": "FB9GZV0FE137Q4PABS2VH92094",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"start_timestamp": "2023-12-22T08:03:57.061822Z",
"stop_timestamp": "2023-12-22T08:11:03.881563Z",
"filename": "split-archive-end-FB9GZV0FE137Q4PABS2VH92094.json"
},
...
]
分割アーカイブログ詳細¶
$ https -A bearer -a <API-KEY> \
POST https://api.sora-cloud.shiguredo.app/projects/get-split-archives-log \
recording_id=<RECORDING-ID> \
connection_id=<CONNECTION-ID> \
-vvv
POST /projects/get-split-archives-log HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 93
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"timestamp": "2023-12-22T08:04:57.057286Z",
"id": "JAKSXCQRCH6HFCANAKA2CG8K0G",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"split_index": "0001",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "50SFC8S97S6PVBHDCSCBMN52H4",
"client_id": "FB9GZV0FE137Q4PABS2VH92094",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"video_height": 480,
"video_width": 640,
"size": 2691827,
"start_timestamp": "2023-12-22T08:03:57.062942Z",
"stop_timestamp": "2023-12-22T08:04:37.03447Z",
"filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0001.webm",
"metadata_filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0001.json"
},
{
"timestamp": "2023-12-22T08:05:57.063581Z",
"id": "GHDX8EYHMN75314M8WMD299ZX8",
"recording_id": "17G3WD0SDD69NFDQ21MN488X68",
"split_index": "0002",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"session_id": "50SFC8S97S6PVBHDCSCBMN52H4",
"client_id": "FB9GZV0FE137Q4PABS2VH92094",
"connection_id": "FB9GZV0FE137Q4PABS2VH92094",
"audio_codec_type": "OPUS",
"video_codec_type": "VP9",
"video_height": 480,
"video_width": 640,
"size": 4072474,
"start_timestamp": "2023-12-22T08:04:37.039673Z",
"stop_timestamp": "2023-12-22T08:05:37.035789Z",
"filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0002.webm",
"metadata_filename": "split-archive-FB9GZV0FE137Q4PABS2VH92094_0002.json"
},
...
]
プロジェクト Hisui Cloud API¶
概要¶
プロジェクトの API Key を利用してそのプロジェクトの録画ファイルを Hisui を利用して合成する API です。
Hisui ジョブをキューに送信する¶
録画合成ジョブをキューに送信します。
recording_id
必須
profile_id
オプション
デフォルトは 0
0
映像は H.264
音声は Opus
コンテナは MP4
解像度は 720p (1280x720)
ビットレートは 1000 Kbps
1
映像は VP9
音声は Opus
コンテナは MP4
解像度は 1080p (1920x1080)
ビットレートは 1500 Kbps
2
映像は AV1
音声は Opus
コンテナは MP4
解像度は 1080p (1920x1080)
ビットレートは 1000 Kbps
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/submit-hisui-job \
recording_id=<Recording-ID> \
profile_id:=1 \
-vvv
POST /projects/submit-hisui-job HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 63
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"recording_id": "0CVR4THQ4938H92ENEGB6RJYGG",
"profile_id": 1
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Content-Length: 370
Date: Fri, 22 Dec 2023 09:18:38 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"id":"N5DRH87MEH1QD44ME2WVVD7C0G",
"recording_id":"0CVR4THQ4938H92ENEGB6RJYGG",
"channel_id":"channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status":"queued",
"error_code":null,
"queued_timestamp":"2023-12-22T09:18:38.490066Z",
"output_audio_codec_type":"Opus",
"output_audio_bit_rate":64000,
"output_video_codec_type":"VP9",
"output_video_bit_rate":1500,
"recording_duration_s":180
}
管理コンソール¶
この API は管理コンソールから GUI で実行する事ができます。
Hisui ジョブをキャンセルします¶
録画合成ジョブをキャンセルします。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/cancel-hisui-job \
hisui_job_id=<Hisui-Job-ID> \
-vvv
POST /projects/cancel-hisui-job HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 46
Content-Type: application/json
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
{
"hisui_job_id": "XM0RX7730D4SVCPS5WGPM6APZ4"
}
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Content-Length: 196
Date: Fri, 22 Dec 2023 09:24:02 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
{
"id":"XM0RX7730D4SVCPS5WGPM6APZ4",
"recording_id":"0CVR4THQ4938H92ENEGB6RJYGG",
"channel_id":"channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"status":"waiting",
"canceled":false,
"canceled_timestamp":null
}
管理コンソール¶
この API は管理コンソールから GUI で実行する事ができます。
Hisui ジョブ一覧を取得する¶
録画合成ジョブの一覧を取得します。
直近に登録した 100 件を取得できます。
$ https -A bearer -a <API-KEY> \
POST api.sora-cloud.shiguredo.app/projects/list-hisui-jobs \
-vvv
POST /projects/list-hisui-jobs HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Authorization: Bearer <API-KEY>
Connection: keep-alive
Content-Length: 0
Host: api.sora-cloud.shiguredo.app
User-Agent: HTTPie/3.2.0
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Thu, 21 Dec 2023 09:35:10 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Transfer-Encoding: chunked
Vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
[
{
"id": "8VWEP6MT7S7C7A99NNA5E79THM",
"status": "failed",
"recording_id": "2Q29SF936S2T503EDJKSTPM8HW",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"queued_timestamp": "2023-12-22T04:50:31.929676Z",
"started_timestamp": "2023-12-22T04:50:40.57687Z",
"canceled_timestamp": null,
"completed_timestamp": null,
"failed_timestamp": "2023-12-22T04:50:40.641998Z",
"output_audio_codec_type": "Opus",
"output_audio_bit_rate": 64000,
"output_video_codec_type": "VP9",
"output_video_bit_rate": 1500,
"output_container_type": "MP4",
"canceled": false
},
{
"id": "VY8NZDENCD6JZF0VXWY5RYQ784",
"status": "failed",
"recording_id": "2Q29SF936S2T503EDJKSTPM8HW",
"channel_id": "channel-1@A5J467N5AWTQHFSA2VIKVNGDB2VK2DC9",
"queued_timestamp": "2023-12-22T07:36:43.27188Z",
"started_timestamp": "2023-12-22T07:37:10.799462Z",
"canceled_timestamp": null,
"completed_timestamp": null,
"failed_timestamp": "2023-12-22T07:37:10.860303Z",
"output_audio_codec_type": "Opus",
"output_audio_bit_rate": 64000,
"output_video_codec_type": "VP9",
"output_video_bit_rate": 1500,
"output_container_type": "MP4",
"canceled": false
},
...
]
管理コンソール¶
この API は管理コンソールから GUI で実行する事ができます。