Sora Cloud ドキュメント

サービスのお問い合わせなどは sora-cloud at shiguredo.jp までお願いいたします。 (このメールアドレスへの特定電子メールの送信を拒否いたします)

Sora Cloud に関する情報は 時雨堂 Discord サーバー#sora-cloud-announce で共有しています。 障害情報などもこちらで共有しておりますので、ご利用の際はご参加ください。

廃止機能情報

2024 年 12 月 1 日廃止

  • なし

2025 年 6 月 1 日廃止

  • 認証ウェブフックの user_agent_stats 払い出し

2025 年 12 月 1 日廃止

  • レガシー録画機能

  • RTP ストリーム停止/再開 API

    • 代わりに転送フィルター機能を利用してください

  • 認証成功時とセッション生成時の払い出しでの forwarding_filter の指定

    • 代わりに forwarding_filters を利用してください

  • シグナリング接続時に forwarding_filter の指定

    • 代わりに forwarding_filters を利用してください

開発ログ

Sora Cloud の開発ログを公開しています

時雨堂 Sora Cloud 開発ログ

このドキュメントについて

概要

Sora CloudWebRTC 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 クライアント

HTTPiecurl などの CLI から利用可能なツールです

Sora 開発ツール

https://sora-devtools.shiguredo.jp/

Sora Cloud を利用する準備をする

プロジェクトを作成する

管理コンソールから Projects タブをクリックし、 Create project ボタンを押し、プロジェクトを作成してください。

https://i.gyazo.com/06a5f0458669ea2509080f55c87c2716.png

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

https://i.gyazo.com/5e02672eb083b55ac7f783cf81ccc60a.png

Sora へ繋いでみる

前提

ブラウザは最新のブラウザを利用してください。 Chrome や Edge をお勧めします。

Sora 開発ツールを使った動作確認

プロジェクトの ... をクリックして Create Access Token をクリックしてください。

https://i.gyazo.com/f98ab2e1baba285bdae6b9e4663a9909.png

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

https://i.gyazo.com/896bdfcb147e168ac8686ee5e7fc8839.png

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

https://i.gyazo.com/9504b4257a7c9573ed24b92042b2bc70.png

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

https://i.gyazo.com/a832740c092f2a173c0129740e43caa8.png

後は、connect を押すことで接続されます。もう一つタブを開いて同じように connect を押してみてください。 それぞれの音声や映像が配信されたら成功です。

注意

Sora 開発ツールの録画開始・停止やサイマルキャストの rid 切り替えなど、Sora API を利用する一部の機能は使用できません。

同時接続数を確認する

3 つの接続を繋いだまま Sora Cloud の API で今どのくらいの同時接続数があるか確認してみます。

API キーはプロジェクトから ... をクリックして Edit Project をクリックしてください。

https://i.gyazo.com/76acd683ffc648815b04454dc2f17bce.png

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

https://i.gyazo.com/edc43949da40807a5291e676539dec9c.png
$ 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] multistreamspotlight が既存セッションと異なる場合の挙動を変更しました

  • [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 日に廃止します

  • [CHANGE] 認証成功時とセッション生成時の払い出しでの forwarding_filter の指定を 2025 年 12 月 1 日に廃止します

    • 代わりに forwarding_filters を利用してください

  • [CHANGE] シグナリング接続時に forwarding_filter の指定を 2025 年 12 月 1 日に廃止します

    • 代わりに forwarding_filters を利用してください

  • [CHANGE] 認証成功時の転送フィルターの払い出しがエラーになった場合、接続が失敗するように変更しました

    • WebSocket 切断時の reasonINTERNAL-ERROR エラーです

  • [CHANGE] セッション生成時の転送フィルターの払い出しがエラーになった場合、セッションを破棄するように変更しました

    • WebSocket 切断時の reasonINTERNAL-ERROR エラーです

  • [CHANGE] 統計情報に含まれる total_received_intra_frametotal_received_key_frame に変更しました

  • [CHANGE] H.264 のプロファイルレベル ID のデフォルト値を 42e01f から 42e02a へ変更しました

    • Chrome / Edge がデフォルト値を変更した事への追従です

  • [ADD] マルチ転送フィルター機能に対応しました

    • 1 チャネルや 1 コネクションに対して複数の転送フィルターを指定できる機能です

  • [ADD] ICE コネクションステート変更のシグナリング通知機能に対応しました

    • 認証成功時の払い出しで signaling_notify_ice_connection_statetrue に設定することで有効になります

  • [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_connections0 の場合は誰も接続することができなくなります

  • [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 日間保存されます

    • https://sora-doc.shiguredo.jp/LOG#83b87f

2024-01-19

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 API

      • Sora_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 API

      • Sora_20230628.CreateChannelForwardingFilter API

      • Sora_20230628.UpdateChannelForwardingFilter API

      • Sora_20230628.DeleteChannelForwardingFilter API

      • Sora_20230628.CreateConnectionForwardingFilter API

      • Sora_20230628.UpdateConnectionForwardingFilter API

      • Sora_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 で値を指定してください。

https://i.gyazo.com/09423a6f4095c61d4ac6b3798a10846f.png

この値はこのプロジェクトで利用するチャネル毎の最大同時接続数を設定可能です。

この値を超えて接続することはできません。 もしアクセストークンで 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_signalingignore_websocket_disconnecttrue にすることお勧めします。

この設定を有効にすることで 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 をクリックしてください。

https://i.gyazo.com/d2720b951901dfc555043b17f1613500.jpg https://i.gyazo.com/3ea6fe692155a11826a4f64a941187b3.png
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" 時の metadataaccess_token を含めて認証を行います。

metadata

type: connnectmetadata"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:

4.1.4. "exp" (Expiration Time) Claim

トークンが利用できなくなる時間 (UTC) を指定できます。

nbf

クレーム:

nbf

:

integer

要求:

オプション

RFC:

4.1.5. "nbf" (Not Before) Claim

トークンが利用できるようになる時間 (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 でサイマルキャストを利用した録画をする場合は scalabilityModeL1T1 を設定してください

  • simulcast_multicodec

  • simulcast_codecs

  • spotlight

  • spotlight_number

    • この払い出しは非推奨です

    • Sora セッションウェブフックの "type": "session.created" の戻り値で spotlight_number を払い出してください

  • spotlight_encodings

    • AV1 でスポットライトを利用した録画をする場合は scalabilityModeL1T1 を設定してください

  • 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 のウェブフック通知

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:

https://ngrok.com/

ngrok アカウントが必要です。 また、固定したエンドポイント URL を利用するには、 Pro プラン ($20/月) 以上のプランに入る必要があります。

https://ngrok.com/docs/getting-started

シーケンス図

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 は以下を参考にしてください。

https://docs.vultr.com/vultr-object-storage/

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 をクリックしてください。

https://i.gyazo.com/c37e2e92c316bf05b78edf4cdf6dd001.png

Hisui Cloud JobsCreate job をクリックします。

https://i.gyazo.com/7fab2da0a32c6ce46a68ea7cf6e2dea9.png

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

https://i.gyazo.com/efc9c1ee7d08c330eabdbaf3552d46f7.png

これで 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.failederror_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:

https://api.sora-cloud.shiguredo.app

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

組織のログ情報を取得する API です。

録画ログ API

組織 録画ログ API

組織の録画ログ情報を取得する API です。

プロジェクト API

無効 (disabled) に設定されているプロジェクトでは利用できません。

アクセストークン API

プロジェクトアクセストークン API

アクセストークンを生成、管理する API です。

トラフィック API

プロジェクトトラフィック API

プロジェクトのトラフィック情報を取得する 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

API URL:

https://api.sora-cloud.shiguredo.app/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 ドキュメント をご確認ください

録画 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

概要

今月の現時点までの利用合計を取得できます。

今月の合計コネクション数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-connections-this-month

組織の今月の合計コネクション数を取得します。

$ 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

今月の合計セッション数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-sessions-this-month

今月の合計セッション数を取得します。

$ 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

今月の合計接続時間(分)

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-duration-min-this-month

今月の合計接続時間(分)を取得します。 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

今月の合計トラフィック

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-traffic-this-month

今月の合計転送量(バイト)を取得します

  • 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
}

今月の最大同時接続数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-max-concurrent-connections-this-month

今月の最大同時接続数を取得します。

$ 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)

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-max-bandwidth-mbps-this-month

今月の最大帯域を取得します。 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 URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-api-requests-this-month

今月の 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 リクエスト数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-sora-api-requests-this-month

今月の 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

今月のウェブフックリクエスト数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-webhook-requests-this-month

今月のウェブフックリクエスト数を取得します。

$ 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

概要

指定した期間の同時接続数や帯域の情報が取得できます。

指定月トラフィック

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-traffics-for-month

組織単位での指定した月のトラフィックを取得します。

  • 最大同時接続数

  • 最大帯域

  • 転送量 (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 件取得できます。

現在の合計同時接続数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-live-concurrent-connections

現在の同時接続数を取得します。

$ 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

現在の合計セッション数

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-total-live-sessions

現在のセッション数を取得します。

$ 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

現在のセッション一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-live-sessions

現在のセッション一覧を取得します。

$ 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 です。過去のセッションやコネクションのログを確認できます。

セッションログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-session-logs

直近 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
    },
    ...
]

コネクションログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-connection-logs

直近 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 ログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-api-logs

直近 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 ログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-sora-api-logs

直近 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
    },
    ...
]

ウェブフックログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-webhook-logs

直近 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 件取得できます。

録画レポートログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-recording-report-logs

$ 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"
    },
    ...
]

アーカイブログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-archive-logs

$ 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"
    },
    ...
]

アーカイブログ詳細

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-archive-log

$ 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"
    }
]

分割アーカイブログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/orgs/list-split-archive-logs

$ 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"
    },
    ...
]

分割アーカイブログ詳細

API URL:

https://api.sora-cloud.shiguredo.app/orgs/get-split-archives-log

$ 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 を作成できます。

アクセストークン生成

API URL

https://api.sora-cloud.shiguredo.app/projects/create-access-token

アクセストークンを指定できます。

すべての指定はオプションです。

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 nbf

JWT が有効になる日時を指定します。数値ではなく RFC 3339 フォーマットで指定してください。

expiration_time

オプション

:

RFC 3339

URL:

JWT exp

JWT の有効期限を指定します。数値ではなく RFC 3339 フォーマットで指定してください。

jwt_id

オプション

:

string (UUID)

URL:

JWT jti

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 年のトラフィックを取得する

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-traffics-last-year

直近 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 ヶ月のトラフィックを取得する

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-traffics-last-month

直近 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 週間のトラフィックを取得する

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-traffics-last-week

直近 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 日のトラフィックを取得する

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-traffics-last-day

直近 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 件取得できます。

現在の同時接続数

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-total-live-concurrent-connections

現在の同時接続数を取得します。

$ 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

現在のセッション合計数

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-total-live-sessions

現在のセッション合計数を取得します。

$ 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

現在のセッション一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-live-sessions

現在のセッション一覧を取得します。

$ 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"
    }
    ...
]

現在の指定したセッションを取得

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-live-session

指定した現在のセッション情報を取得します

$ 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"
}

現在のコネクション一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-live-connections

プロジェクトの現在の指定したセッションのコネクション一覧を取得します

$ 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
    },
    ...
]

現在の指定したコネクション詳細

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-live-connection

$ 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
}

過去のセッション一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-past-sessions

プロジェクトの過去のセッション一覧を取得します。

$ 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
    },
    ...
]

過去のセッション詳細

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-past-session

指定したセッション 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
}

過去のコネクション一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-past-connections

過去の指定したセッション 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
    },
    ...
]

過去のコネクション詳細

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-past-connection

指定したコネクション 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 件のログを取得できます。

セッションログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-session-logs

セッションログの一覧を取得します。

$ 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
    },
    ...
]

コネクションログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-connection-logs

コネクションログを取得します。

$ 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 URL:

https://api.sora-cloud.shiguredo.app/projects/list-api-logs

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 ログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-sora-api-logs

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
    },
    ...
]

ウェブフックログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-webhook-logs

ウェブフックログを取得します。

$ 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 件取得できます。

録画レポートログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-recording-report-logs

$ 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"
    },
    ...
]

アーカイブログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-archive-logs

$ 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"
    },
    ...
]

アーカイブログ詳細

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-archive-log

$ 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"
    }
]

分割アーカイブログ一覧

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-split-archive-logs

$ 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"
    },
    ...
]

分割アーカイブログ詳細

API URL:

https://api.sora-cloud.shiguredo.app/projects/get-split-archives-log

$ 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 ジョブをキューに送信する

API URL:

https://api.sora-cloud.shiguredo.app/projects/submit-hisui-job

録画合成ジョブをキューに送信します。

  • 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 ジョブをキャンセルします

API URL:

https://api.sora-cloud.shiguredo.app/projects/cancel-hisui-job

録画合成ジョブをキャンセルします。

$ 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 ジョブ一覧を取得する

API URL:

https://api.sora-cloud.shiguredo.app/projects/list-hisui-jobs

録画合成ジョブの一覧を取得します。

直近に登録した 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 で実行する事ができます。

© Copyright 2024, Shiguredo Inc. Created using Sphinx 8.2.3