NAV Navbar

Introduction

TwitCastingのAPIv2ドキュメントです。

変更点については、Change Log をご覧下さい。

Twitter @twitcasting_dev での情報発信も行っております。

Registration

Get Access Token

Authorization Code Grant

サーバサイドで多くの処理を行うアプリケーション向けの認可フローです。

Step1

以下のURLにブラウザでアクセスし、アプリ許可確認画面で「連携アプリを許可」または「キャンセル」を選択します。

URL

https://apiv2.twitcasting.tv/oauth2/authorize?client_id={YOUR_CLIENT_ID}&response_type=code&state={CSRF_TOKEN}

Parameters
key description limitation required
client_id アプリケーションのClientID - yes
response_type レスポンス形式 "code" を指定 yes
state 任意のCSRFトークン - no

Redirect

許可またはキャンセルが選択され、コールバックにそれぞれパラメータを付加してリダイレクトされます。

Allowed

{YOUR_CALLBACK_URL}?code={CODE}&state={CSRF_TOKEN}

Canceled

{YOUR_CALLBACK_URL}?result=denied

Step2

許可後にコールバックに渡された code パラメータを使用してユーザのアクセストークンを取得します。

Request

POST /oauth2/access_token

Sample Request


curl -X POST "https://apiv2.twitcasting.tv/oauth2/access_token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "code={CODE}" \
-d "grant_type=authorization_code" \
-d "client_id={CLIENT_ID}" \
-d "client_secret={CLIENT_SECRET}" \
-d "redirect_uri={REDIRECT_URI}"

Parameters
key description limitation required
code コールバックに渡された code の値 - yes
grant_type OAuthの認可種別 "authorization_code"を指定 yes
client_id アプリケーションのClientID - yes
client_secret アプリケーションのClientSecret - yes
redirect_uri リダイレクトURI アプリケーション登録時に設定したCallback URLと同一のものを指定 yes

Response

Sample Response (HTTP/1.1 200 OK)


{
  "token_type": "Bearer",
  "expires_in": 15552000,
  "access_token": "{ACCESS_TOKEN}"
}

key type description
token_type string 固定値 "Bearer"
expires_in int トークンが失効するまでの秒数
access_token string アクセストークン

Error Responses

このAPIは Validation Error, Bad Request を返す可能性があります。

Implicit

スマートフォンアプリなど、サーバレスアプリケーション向けの認可フローです。

Step1

以下のURLにブラウザでアクセスし、アプリ許可確認画面で「連携アプリを許可」または「キャンセル」を選択します。

URL

https://apiv2.twitcasting.tv/oauth2/authorize?client_id={YOUR_CLIENT_ID}&response_type=token&state={CSRF_TOKEN}

Parameters
key description limitation required
client_id アプリケーションのClientID - yes
response_type レスポンス形式 "token" を指定 yes
state 任意のCSRFトークン - no

Redirect

許可またはキャンセルが選択され、コールバックにそれぞれパラメータを付加してリダイレクトされます。

Allowed

{YOUR_CALLBACK_URL}#access_token={ACCESS_TOKEN}&token_type=bearer&expires_in=15552000&state={CSRF_TOKEN}

key type description
token_type string 固定値 "bearer"
expires_in int トークンが失効するまでの秒数
access_token string アクセストークン
state string 任意のCSRFトークン
Canceled

{YOUR_CALLBACK_URL}#result=denied

Request Formats

Base URL

すべてのAPIリソースのBase URLは https://apiv2.twitcasting.tv です。

Request Headers

APIへのリクエストの際、原則として以下のヘッダが必要です。

key description required
X-Api-Version APIのバージョンを指定。現在は 2.0 のみ利用可能です。 yes
Authorization Access Token の値を指定します。 yes
Accept-Encoding gzip を指定可能です。レスポンスのサイズが一定以上の場合のみ圧縮を行います。 no

Access Token

GET ACCESS TOKEN で取得したアクセストークンを Authorization ヘッダーに指定します。

ユーザ単位でのAPI実行

Authorization: Bearer {ACCESS_TOKEN}

前手順で取得した access_token を使用してAPIへリクエストが可能です。 リクエストヘッダの Authorization ヘッダに Bearer {ACCESS_TOKEN} の形式で指定します。

アプリケーション単位でのAPI実行

Authorization: Basic {BASE64_ENCODED_STRING}

また、ClinetIDClientSecret を使用してリクエストすることも可能です。 {ClientID}:{ClientSecret} をBase64エンコードした値を、 Authorization: Basic {BASE64_ENCODED_STRING} の形式で指定します。

ただし、これらは Get Live Thumbnail Image へのリクエストには必要ありません。

Response Formats

Response Headers

key description
X-RateLimit-Limit APIの実行上限回数
X-RateLimit-Remaining APIの残り実行可能回数
X-RateLimit-Reset APIの残り実行可能回数がリセットされる時刻のUnixTimestamp

ただし、 Get Live Thumbnail Image のレスポンスには含まれません。

X-RateLimit-* APIの実行回数は、ユーザ単位もしくはアプリケーション単位で計算されます。 各単位については Access Token をご覧ください。

Common Error Responses

全てのAPIは Invalid Token, Execution Count Limitation, Application Disabled, Internal Server Error を返す可能性があります。

User

Get User Info

ユーザ情報を取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /users/:user_id

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_jp" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "user":{
        "id":"182224938",
        "screen_id":"twitcasting_jp",
        "name":"ツイキャス公式",
        "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
        "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
        "level":24,
        "last_movie_id":"189037369",
        "is_live":false,
        "supporter_count": 0,
        "supporting_count": 0,
        "created": 0
    },
    "supporter_count": 10,
    "supporting_count": 24
}

key type description
user object Userオブジェクト
supporter_count int ユーザーのサポーターの数
supporting_count int ユーザーがサポートしている数

User object

ユーザを表すオブジェクト

key type description
id string ユーザID
screen_id string id同様にユーザを特定する識別子ですが、screen_idはユーザによって変更される場合があります。
name string ヒューマンリーダブルなユーザの名前
image string ユーザアイコンのURL
profile string プロフィール文章
level int ユーザのレベル
last_movie_id string|null ユーザが最後に配信したライブのID
is_live bool 現在ライブ配信中かどうか
supporter_count(deprecated) int このパラメータは非推奨となり、固定値 0 を返します。
supporting_count(deprecated) int このパラメータは非推奨となり、固定値 0 を返します。
created(deprecated) int このパラメータは非推奨となり、固定値 0 を返します。

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found を返す可能性があります。

Verify Credentials

アクセストークンを検証し、ユーザ情報を取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /verify_credentials

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/verify_credentials" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "app":{
      "client_id": "182224938.d37f58350925d568e2db24719fe86f11c4d14e0461429e8b5da732fcb1917b6e",
      "name": "サンプルアプリケーション",
      "owner_user_id": "182224938"
    },
    "user":{
        "id":"182224938",
        "screen_id":"twitcasting_jp",
        "name":"ツイキャス公式",
        "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
        "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
        "level":24,
        "last_movie_id":"189037369",
        "is_live":false,
        "supporter_count": 0,
        "supporting_count": 0,
        "created": 0
    },
    "supporter_count": 10,
    "supporting_count": 24
}

key type description
app object アクセストークンに紐づくアプリケーション情報 Appオブジェクト
user object アクセストークンに紐づくユーザ情報 Userオブジェクト
supporter_count int ユーザーのサポーターの数
supporting_count int ユーザーがサポートしている数

App object

アプリケーションを表すオブジェクト

key type description
client_id string アプリケーションのクライアントID
name string アプリケーション名
owner_user_id string アプリケーション開発者のユーザID

Live Thumbnail

Get Live Thumbnail Image

配信中のライブのサムネイル画像を取得する。

Limit

制限無し

Request

GET /users/:user_id/live/thumbnail

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -LX GET "https://apiv2.twitcasting.tv/users/twitcasting_jp/live/thumbnail?size=small&position=latest"

Parameters

key description limitation required
size 画像サイズ "large" or "small" no (default:"small")
position ライブ開始時点または最新を指定可能 "beginning" or "latest" no (default:"latest")

Response

画像(Content-Type image/jpeg or image/png)、またはステータスコード302で画像リソースへのリダイレクトレスポンスを返却します。

なお、ユーザーが配信中でない場合はオフライン画像を返します。

Movie

Get Movie Info

ライブ(録画)情報を取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /movies/:movie_id

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/movies/189037369" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "movie":{
        "id":"189037369",
        "user_id":"182224938",
        "title":"ライブ #189037369",
        "subtitle": "ライブ配信中!",
        "last_owner_comment": "もいもい",
        "category": "girls_jcjk_jp",
        "link":"http://twitcasting.tv/twitcasting_jp/movie/189037369",
        "is_live":false,
        "is_recorded":false,
        "comment_count":2124,
        "large_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1.jpg",
        "small_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1-s.jpg",
        "country":"jp",
        "duration":1186,
        "created":1438500282,
        "is_collabo":false,
        "is_protected":false,
        "max_view_count":1675,
        "current_view_count":20848,
        "total_view_count":20848,
        "hls_url":"https://twitcasting.tv/twitcasting_jp/metastream.m3u8/?video=1"
    },
    "broadcaster":{
        "id":"182224938",
        "screen_id":"twitcasting_jp",
        "name":"ツイキャス公式",
        "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
        "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
        "level":24,
        "last_movie_id":"189037369",
        "is_live":true,
        "supporter_count": 0,
        "supporting_count": 0,
        "created": 0
    },
    "tags":["人気", "コンティニュー中", "レベル40+", "初見さん大歓迎", "まったり", "雑談"]
}

key type description
movie object Movieオブジェクト
broadcaster object 配信者のユーザ情報 Userオブジェクト
tags array 設定されているタグの配列

Movie object

ライブ(録画)を表すオブジェクト

key type description
id string ライブID
user_id string ライブ配信者のユーザID
title string タイトル
subtitle string|null テロップ
last_owner_comment string|null ライブ配信者の最新コメントの文章
category string|null カテゴリID
link string ライブ(録画)へのリンクURL
is_live bool ライブ配信中かどうか
is_recorded bool 録画が公開されているかどうか
comment_count int 総コメント数
large_thumbnail string サムネイル画像(大)のURL
small_thumbnail string サムネイル画像(小)のURL
country string 配信地域(国コード)
duration int 配信時間(秒)
created int 配信開始日時のunixタイムスタンプ
is_collabo bool コラボ配信かどうか
is_protected bool 合言葉配信かどうか
max_view_count int 最大同時視聴数(配信中の場合0)
current_view_count int 現在の同時視聴者数(配信中ではない場合0)
total_view_count int 総視聴者数
hls_url string|null HTTP Live Streaming再生用のURL

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found を返す可能性があります。

Get Movies by User

ユーザーが保有する過去ライブ(録画)の一覧を作成日時の降順で取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /users/:user_id/movies

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_jp/movies?offset=10&limit=20" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
offset 先頭からの位置 min:0, max:1000 no (default:0)
limit 最大取得件数(場合により、指定件数に満たない数の動画を返す可能性があります) min:1, max:50 no (default:20)
slice_id このID以前のMovieを取得します。このパラメータを指定した場合はoffsetは無視されます。 min:1 no (default:none)

Response

Sample Response (HTTP/1.1 200 OK)

{
    "total_count": 5,
    "movies":[
       {
            "id":"323387579",
            "user_id":"2880417757",
            "title":"ライブ #323387579",
            "subtitle": "ライブ配信中!",
            "last_owner_comment": "こんにちは",
            "category": "girls_jcjk_jp",
            "link":"http://twitcasting.tv/twitcasting_pr/movie/323387579",
            "is_live":false,
            "is_recorded":false,
            "comment_count":64,
            "large_thumbnail":"http://202-230-12-93.twitcasting.tv/image3/image.twitcasting.tv/image57_1/bb/80/134680bb-1.jpg",
            "small_thumbnail":"http://202-230-12-93.twitcasting.tv/image3/image.twitcasting.tv/image57_1/bb/80/134680bb-1-s.jpg",
            "country":"jp",
            "duration":995,
            "created":1479379075,
            "is_collabo":false,
            "is_protected":false,
            "max_view_count":22,
            "current_view_count":71,
            "total_view_count":71,
            "hls_url":"https://twitcasting.tv/twitcasting_pr/metastream.m3u8/?video=1"
        },
        {
            "id":"189037369",
            "user_id":"182224938",
            "title":"ライブ #189037369",
            "subtitle": "ライブ配信中!",
            "last_owner_comment": "もいもい",
            "category": "girls_jcjk_jp",
            "link":"http://twitcasting.tv/twitcasting_jp/movie/189037369",
            "is_live":false,
            "is_recorded":false,
            "comment_count":2124,
            "large_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1.jpg",
            "small_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1-s.jpg",
            "country":"jp",
            "duration":1186,
            "created":1438500282,
            "is_collabo":false,
            "is_protected":false,
            "max_view_count":1675,
            "current_view_count":20848,
            "total_view_count":20848,
            "hls_url":"https://twitcasting.tv/twitcasting_jp/metastream.m3u8/?video=1"
        },
        ...
    ]
}
key type description
total_count int 指定フィルター条件での総件数
movies array Movieオブジェクト の配列

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Get Current Live

ユーザーが配信中の場合、ライブ情報を取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /users/:user_id/current_live

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_jp/current_live" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "movie":{
        "id":"189037369",
        "user_id":"182224938",
        "title":"ライブ #189037369",
        "subtitle": "ライブ配信中!",
        "last_owner_comment": "もいもい",
        "category": "girls_jcjk_jp",
        "link":"http://twitcasting.tv/twitcasting_jp/movie/189037369",
        "is_live":true,
        "is_recorded":false,
        "comment_count":2124,
        "large_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1.jpg",
        "small_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1-s.jpg",
        "country":"jp",
        "duration":1186,
        "created":1438500282,
        "is_collabo":false,
        "is_protected":false,
        "max_view_count":1675,
        "current_view_count":20848,
        "total_view_count":20848,
        "hls_url":"https://twitcasting.tv/twitcasting_jp/metastream.m3u8/?video=1"
    },
    "broadcaster":{
        "id":"182224938",
        "screen_id":"twitcasting_jp",
        "name":"ツイキャス公式",
        "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
        "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
        "level":24,
        "last_movie_id":"189037369",
        "is_live":true,
        "supporter_count": 0,
        "supporting_count": 0,
        "created": 0
    },
    "tags":["人気", "コンティニュー中", "レベル40+", "初見さん大歓迎", "まったり", "雑談"]
}

key type description
movie object Movieオブジェクト
broadcaster object 配信者のユーザ情報 Userオブジェクト
tags array 設定されているタグの配列

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found を返す可能性があります。

Set Current Live Subtitle

ユーザーが配信中の場合、ライブのテロップを設定する。

Required Permission

Write

Limit

60 requests / 60 sec

Request

POST /movies/subtitle

Sample Request


curl -X POST "https://apiv2.twitcasting.tv/movies/subtitle" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{"subtitle": "初見さん大歓迎!"}'

Parameters

key description limitation required
subtitle テロップ 1〜34文字。全角は2文字、半角は1文字でカウントします。 yes

Response

Sample Response (HTTP/1.1 200 OK)


{
    "movie_id": "323387579",
    "subtitle": "初見さん大歓迎!"
}

key type description
movie_id string ライブID
subtitle string テロップ

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Unset Current Live Subtitle

ユーザーが配信中の場合、ライブのテロップを解除する。

Required Permission

Write

Limit

60 requests / 60 sec

Request

DELETE /movies/subtitle

Sample Request


curl -X DELETE "https://apiv2.twitcasting.tv/movies/subtitle" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "movie_id": "323387579",
    "subtitle": null
}

key type description
movie_id string ライブID
subtitle null テロップ

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found を返す可能性があります。

Set Current Live Hashtag

ユーザーが配信中の場合、ライブのハッシュタグを設定する。

Required Permission

Write

Limit

60 requests / 60 sec

Request

POST /movies/hashtag

Sample Request


curl -X POST "https://apiv2.twitcasting.tv/movies/hashtag" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{"hashtag": "#初見さん大歓迎"}'

Parameters

key description limitation required
hashtag ハッシュタグ 1〜26文字。記号や特殊文字を含めることはできません。 yes

Response

Sample Response (HTTP/1.1 200 OK)


{
    "movie_id": "323387579",
    "hashtag": "#初見さん大歓迎"
}

key type description
movie_id string ライブID
hashtag string ハッシュタグ

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Unset Current Live Hashtag

ユーザーが配信中の場合、ライブのハッシュタグを解除する。

Required Permission

Write

Limit

60 requests / 60 sec

Request

DELETE /movies/hashtag

Sample Request


curl -X DELETE "https://apiv2.twitcasting.tv/movies/hashtag" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "movie_id": "323387579",
    "hashtag": null
}

key type description
movie_id string ライブID
hashtag null ハッシュタグ

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found を返す可能性があります。

Comment

Get Comments

コメントを作成日時の降順で取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /movies/:movie_id/comments

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/movies/189037369/comments?offset=10&limit=10" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
offset 先頭からの位置 min:0 no (default:0)
limit 取得件数(場合により、指定件数に満たない数のコメントを返す可能性があります) min:1, max:50 no (default:10)
slice_id このコメントID以降のコメントを取得します。このパラメータを指定した場合はoffsetは無視されます。 min:1 no (default:none)

Response

Sample Response (HTTP/1.1 200 OK)

{
    "movie_id":"189037369",
    "all_count":2124,
    "comments":[
        {
            "id":"7134775954",
            "message":"モイ!",
            "from_user":{
                "id":"182224938",
                "screen_id":"twitcasting_jp",
                "name":"ツイキャス公式",
                "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
                "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
                "level":24,
                "last_movie_id":"189037369",
                "is_live":false,
                "supporter_count": 0,
                "supporting_count": 0,
                "created": 0
            },
            "created":1479579471
        },
      ...
    ]
}
key type description
movie_id string ライブID
all_count int 総コメント数
comments array Commentオブジェクトの配列

Comment object

コメントを表すオブジェクト

key type description
id string コメントID
message string コメント本文
from_user object コメント投稿者の情報 Userオブジェクト
created int コメント投稿日時のunixタイムスタンプ

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Post Comment

コメントを投稿する。 ユーザ単位でのみ実行可能です。

Required Permission

Write

Limit

60 requests / 60 sec

Request

POST /movies/:movie_id/comments

Sample Request


curl -X POST "https://apiv2.twitcasting.tv/movies/189037369/comments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{"comment": "モイ!", "sns": "none"}'

Parameters

key description limitation required
comment 投稿するコメント文章 1〜140文字 yes
sns(deprecated) SNSへの同時投稿(現在機能停止中)。"reply" → 配信者へリプライする形式で投稿, "normal" → 通常の投稿, "none" → SNS投稿無し "reply", "normal" or "none" no(default: "none")

Response

Sample Response (HTTP/1.1 201 Created)

{
    "movie_id":"189037369",
    "all_count":2124,
    "comment":{
        "id":"7134775954",
        "message":"モイ!",
        "from_user":{
            "id":"182224938",
            "screen_id":"twitcasting_jp",
            "name":"ツイキャス公式",
            "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
            "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
            "level":24,
            "last_movie_id":"189037369",
            "is_live":false,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0
        },
        "created":1479579471
    }
}
key type description
movie_id string ライブID
all_count int 総コメント数
comment object Commentオブジェクト

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error, Protected, Out Of Scope, Forbidden を返す可能性があります。

Delete Comment

コメントを削除する。 ユーザ単位でのみ実行可能です。 なお、原則として削除できるコメントは、投稿者がアクセストークンに紐づくユーザと同一のものに限られます。 ただし、Movieのオーナーであるユーザーのアクセストークンを用いる場合は他ユーザが投稿したコメントを削除することが出来ます。

Required Permission

Write

Limit

60 requests / 60 sec

Request

DELETE /movies/:movie_id/comments/:comment_id

Sample Request


curl -X DELETE "https://apiv2.twitcasting.tv/movies/189037369/comments/123456" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)

{
    "comment_id":"123456"
}
key type description
comment_id string 削除したコメントのID

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error, Out Of Scope, Forbidden を返す可能性があります。

Gift

Get Gifts

アクセストークンに紐づくユーザに直近10秒程度の間に送信されたアイテムを取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /gifts

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/gifts?slice_id=2124" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
slice_id このアイテム送信ID以降に送信されたアイテムを取得します min:-1 no (default:-1)

Response

Sample Response (HTTP/1.1 200 OK)

{
    "slice_id":2124,
    "gifts":[
        {
            "id":"2125",
            "message":"モイ!",
            "item_image":"https://twitcasting.tv/img/item_tea.png",
            "item_id":"tea",
            "item_mp":"10",
            "item_name":"お茶",
            "user_image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
            "user_screen_id":"twitcasting_jp",
            "user_screen_name":"twitcasting_jp",
            "user_name":"ツイキャス公式",
        },
      ...
    ]
}
key type description
slice_id int 次にAPIを呼び出すときに指定する slice_id
gifts array Giftオブジェクトの配列

Gift object

アイテムを表すオブジェクト

key type description
id int アイテム送信ID
message string アイテム送信時のメッセージ本文
item_image string アイテム画像のURL
item_sub_image string|null アイテム送信時に選択された画像があれば画像のURL
item_id string アイテムのID
item_mp string アイテムのMP
item_name string アイテム名
user_image string ユーザアイコンのURL
user_screen_id string アイテムが送信された時点でのユーザーの screen_id
user_screen_name string ヒューマンリーダブルな screen_id
user_name string ヒューマンリーダブルなユーザの名前

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Supporter

Get Supporting Status

ユーザーが、ある別のユーザのサポーターであるかの状態を取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /users/:user_id/supporting_status

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_dev/supporting_status?target_user_id=casma_jp" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
target_user_id 対象ユーザの id または screen_id - yes

Response

Sample Response (HTTP/1.1 200 OK)


{
    "is_supporting": true,
    "supported": 1632716873,
    "target_user": {
        "id": "3160885238",
        "screen_id": "casma_jp",
        "name": "キャスマ公式",
        "image": "http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/590410593330311169/b_mp4n9v_normal.png",
        "profile": "キャスマーケットの公式アカウントです。キャスマに関するサポート対応、キャスマに並んでいる商品の紹介をしています。",
        "level": 26,
        "last_movie_id": null,
        "is_live": false,
        "supporter_count": 0,
        "supporting_count": 0,
        "created":  0
    }
}

key type description
is_supporting bool サポーターかどうか
supported int サポートした日時のunixタイムスタンプ
target_user object 対象ユーザ情報 Userオブジェクト

Error Responses

このAPIは 共通のエラーレスポンス以外に、Bad Request, Not Foundを返す可能性があります。

Support User

指定したユーザーのサポーターになる

Required Permission

Write

Limit

60 requests / 60 sec

Request

PUT /support

Sample Request


curl -X PUT "https://apiv2.twitcasting.tv/support" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{"target_user_ids": ["casma_jp", "twitcasting_pr"]}'

Parameters

key description limitation required
target_user_ids 対象ユーザの id または screen_id の配列 配列内の要素数 20 以下 yes

Response

Sample Response (HTTP/1.1 200 OK)


{
    "added_count": 2
}

key type description
added_count int サポーター登録を行った件数

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error を返す可能性があります。

Unsupport User

指定したユーザーのサポーター状態を解除する

Required Permission

Write

Limit

60 requests / 60 sec

Request

PUT /unsupport

Sample Request


curl -X PUT "https://apiv2.twitcasting.tv/unsupport" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{"target_user_ids": ["casma_jp", "twitcasting_pr"]}'

Parameters

key description limitation required
target_user_ids 対象ユーザの id または screen_id の配列 配列内の要素数 20 以下 yes

Response

Sample Response (HTTP/1.1 200 OK)


{
    "removed_count": 2
}

key type description
removed_count int サポーター解除を行った件数

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error を返す可能性があります。

Supporting List

指定したユーザーがサポートしているユーザーの一覧を取得する

Required Permission

Read

Limit

30 requests / 60 sec

Request

GET /users/:user_id/supporting

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_dev/supporting?offset=10&limit=20" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
offset 先頭からの位置 min:0 no (default:0)
limit 取得件数 min:1, max:20 no (default:20)

Response

Sample Response (HTTP/1.1 200 OK)


{
    "total": 1234,
    "supporting": [
        {
            "id":"182224938",
            "screen_id":"twitcasting_jp",
            "name":"ツイキャス公式",
            "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
            "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
            "level": 24,
            "last_movie_id":"189037369",
            "is_live":true,
            "supported":1632716873,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0,
            "point": 15,
            "total_point": 300
        },
        {
            "id":"2880417757",
            "screen_id":"twitcasting_pr",
            "name":"ツイキャス運営事務局",
            "image":"http://202-234-44-61.moi.st/image3s/pbs.twimg.com/profile_images/740857980137050112/4sIEkzV8_normal.jpg",
            "profile":"モイ! ツイキャスを運営しているモイ株式会社広報担当のアカウントです。公式アカウントはこちら! @twitcasting_jp",
            "level": 23,
            "last_movie_id":"323387579",
            "is_live":false,
            "supported":1632716873,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0,
            "point": 30,
            "total_point": 45
        },
        ...
    ]
}

key type description
total int 全レコード数(実際に取得できる件数と異なる場合があります)
supporting array SupporterUserオブジェクトの配列

SupporterUser object

サポーターユーザを表すオブジェクト (point, supported, total_point を除いて Userオブジェクト と同じです)

key type description
id string ユーザID
screen_id string id同様にユーザを特定する識別子ですが、screen_idはユーザによって変更される場合があります。
name string ヒューマンリーダブルなユーザの名前
image string ユーザアイコンのURL
profile string プロフィール文章
level int ユーザのレベル
last_movie_id string|null ユーザが最後に配信したライブのID
is_live bool 現在ライブ配信中かどうか
supported int サポートした日時のunixタイムスタンプ
supporter_count int ユーザをサポートしている人数
supporting_count int ユーザがサポートしている人数
point int アイテム・スコア
total_point int 累計スコア
created(deprecated) int このパラメータは非推奨となり、固定値 0 を返します。

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Supporter List

指定したユーザーをサポートしているユーザーの一覧を取得する。

Required Permission

Read

Limit

30 requests / 60 sec

Request

GET /users/:user_id/supporters

:user_id へ指定可能なものは、ユーザの id または screen_id のいずれかです。

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_dev/supporters?offset=10&limit=20&sort=ranking" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
offset 先頭からの位置 min:0 no (default:0)
limit 取得件数 min:1, max:20 no (default:20)
sort ソート順 新着順: "new", 貢献度順: "ranking" yes

Response

Sample Response (HTTP/1.1 200 OK)


{
    "total": 1234,
    "supporters": [
        {
            "id":"182224938",
            "screen_id":"twitcasting_jp",
            "name":"ツイキャス公式",
            "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
            "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
            "level": 24,
            "last_movie_id":"189037369",
            "is_live":true,
            "supported":1632716873,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0,
            "point": 15,
            "total_point": 300
        },
        {
            "id":"2880417757",
            "screen_id":"twitcasting_pr",
            "name":"ツイキャス運営事務局",
            "image":"http://202-234-44-61.moi.st/image3s/pbs.twimg.com/profile_images/740857980137050112/4sIEkzV8_normal.jpg",
            "profile":"モイ! ツイキャスを運営しているモイ株式会社広報担当のアカウントです。公式アカウントはこちら! @twitcasting_jp",
            "level": 23,
            "last_movie_id":"323387579",
            "is_live":false,
            "supported":1632716873,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0,
            "point": 30,
            "total_point": 45
        },
        ...
    ]
}

key type description
total int 全レコード数(実際に取得できる件数と異なる場合があります)
supporters array SupporterUserオブジェクトの配列

Error Responses

このAPIは 共通のエラーレスポンス以外に、Not Found, Validation Error を返す可能性があります。

Category

Get Categories

配信中のライブがあるカテゴリのみを取得する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /categories

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/categories?lang=ja" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
lang 検索対象の言語 "ja", "en" yes

Response

Sample Response (HTTP/1.1 200 OK)

{
    "categories":[
        {
            "id":"_channel",
            "name":"チャンネル",
            "sub_categories":[
                {"id":"_system_channel_5","name":"ミュージックch","count":100},
                {"id":"_system_channel_6","name":"ママch","count":49},
                {"id":"_system_channel_7","name":"アニメch","count":42}
            ]
        },
        {
            "id":"girls_jp",
            "name":"女子CAS",
            "sub_categories":[
                {"id":"girls_face_jp","name":"女子:顔出し","count":66},
                {"id":"girls_jcjk_jp","name":"女子:JCJK","count":17},
                {"id":"girls_ljk_jp","name":"女子:LJK","count":89}
            ]
        }
    ]
}
key type description
categories array Categoryオブジェクトの配列

Category object

配信カテゴリを表すオブジェクト

key type description
id string カテゴリID
name string カテゴリ名
sub_categories array Sub categoryオブジェクトの配列

Sub category object

配信サブカテゴリを表すオブジェクト

key type description
id string サブカテゴリID
name string サブカテゴリ名
count int サブカテゴリ配信数

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error を返す可能性があります。

Search

Search Users

ユーザを検索する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /search/users

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/search/users?words=ツイキャス+公式&lang=ja" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
words スペース区切りで複数単語のAND検索 - yes
limit 取得件数 min: 1, max: 50 no (default:10)
lang 検索対象のユーザの言語設定 現在 "ja" のみ対応 yes

Response

Sample Response (HTTP/1.1 200 OK)

{
    "users":[
        {
            "id":"182224938",
            "screen_id":"twitcasting_jp",
            "name":"ツイキャス公式",
            "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
            "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
            "level":24,
            "last_movie_id":"189037369",
            "is_live":true,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0
        },
        {
            "id":"2880417757",
            "screen_id":"twitcasting_pr",
            "name":"ツイキャス運営事務局",
            "image":"http://202-234-44-61.moi.st/image3s/pbs.twimg.com/profile_images/740857980137050112/4sIEkzV8_normal.jpg",
            "profile":"モイ! ツイキャスを運営しているモイ株式会社広報担当のアカウントです。公式アカウントはこちら! @twitcasting_jp",
            "level":24,
            "last_movie_id":"323387579",
            "is_live":false,
            "supporter_count": 0,
            "supporting_count": 0,
            "created": 0
        },
        ...
    ]
}
key type description
users array Userオブジェクトの配列

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error を返す可能性があります。

Search Live Movies

配信中のライブを検索する。

Required Permission

Read

Limit

60 requests / 60 sec

Request

GET /search/lives

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/search/lives?type=recommend&lang=ja" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Parameters

key description limitation required
limit 取得件数 min: 1, max: 100 no (default:10)
type 検索種別 "tag", "word", "category", "new", "recommend" yes
context type=tag or word → スペース区切りで複数単語のAND検索. type=category → サブカテゴリID. type=new or recommend → 不要 - yes (type=tag,word or category), no (type=new or recommend)
lang 検索対象のライブ配信者の言語設定 現在 "ja" のみ対応 yes

Response

Sample Response (HTTP/1.1 200 OK)

{
    "movies":[
        {
            "movie":{
                "id":"189037369",
                "user_id":"182224938",
                "title":"ライブ #189037369",
                "subtitle": "ライブ配信中!",
                "last_owner_comment": "もいもい",
                "category": "girls_jcjk_jp",
                "link":"http://twitcasting.tv/twitcasting_jp/movie/189037369",
                "is_live":true,
                "is_recorded":false,
                "comment_count":2124,
                "large_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1.jpg",
                "small_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1-s.jpg",
                "country":"jp",
                "duration":1186,
                "created":1438500282,
                "is_collabo":false,
                "is_protected":false,
                "max_view_count":1675,
                "current_view_count":20848,
                "total_view_count":20848,
                "hls_url":"https://twitcasting.tv/twitcasting_jp/metastream.m3u8/?video=1"
            },
            "broadcaster":{
                "id":"182224938",
                "screen_id":"twitcasting_jp",
                "name":"ツイキャス公式",
                "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
                "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
                "level":24,
                "last_movie_id":"189037369",
                "is_live":true,
                "supporter_count": 0,
                "supporting_count": 0,
                "created": 0
            },
            "tags":["人気", "コンティニュー中", "レベル40+", "初見さん大歓迎", "まったり", "雑談"]
        },
        {
            "movie":{
                "id":"323387579",
                "user_id":"2880417757",
                "title":"ライブ #323387579",
                "subtitle": "ライブ配信中!",
                "last_owner_comment": null,
                "category": "girls_jcjk_jp",
                "link":"http://twitcasting.tv/twitcasting_pr/movie/323387579",
                "is_live":true,
                "is_recorded":false,
                "comment_count":64,
                "large_thumbnail":"http://202-230-12-93.twitcasting.tv/image3/image.twitcasting.tv/image57_1/bb/80/134680bb-1.jpg",
                "small_thumbnail":"http://202-230-12-93.twitcasting.tv/image3/image.twitcasting.tv/image57_1/bb/80/134680bb-1-s.jpg",
                "country":"jp",
                "duration":995,
                "created":1479379075,
                "is_collabo":false,
                "is_protected":false,
                "max_view_count":22,
                "current_view_count":71,
                "total_view_count":71,
                "hls_url":"https://twitcasting.tv/twitcasting_pr/metastream.m3u8/?video=1"
            },
            "broadcaster":{
                "id":"2880417757",
                "screen_id":"twitcasting_pr",
                "name":"ツイキャス運営事務局",
                "image":"http://202-234-44-61.moi.st/image3s/pbs.twimg.com/profile_images/740857980137050112/4sIEkzV8_normal.jpg",
                "profile":"モイ! ツイキャスを運営しているモイ株式会社広報担当のアカウントです。公式アカウントはこちら! @twitcasting_jp",
                "level":24,
                "last_movie_id":"323387579",
                "is_live":true,
                "supporter_count": 0,
                "supporting_count": 0,
                "created": 0
            },
            "tags":["人気", "コンティニュー中", "レベル40+", "初見さん大歓迎", "まったり", "雑談"]
        },
        ...
    ]
}
key type description
movies array /movies/:movie_id と同一のMovieオブジェクトの配列

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error を返す可能性があります。

WebHook

Incoming WebHook

WebHook API を利用すると、特定の配信者の配信開始・終了イベントを予め指定した WebHook URL へ通知することが出来ます。

30x系のレスポンスによるリダイレクトには対応していません。

Format

Method

POST

Payload

{
    "signature": "09c7a17f60e7448d467b09722061223b",
    "movie":{
        "id":"189037369",
        "user_id":"182224938",
        "title":"ライブ #189037369",
        "subtitle": "ライブ配信中!",
        "last_owner_comment": "もいもい",
        "category": "girls_jcjk_jp",
        "link":"http://twitcasting.tv/twitcasting_jp/movie/189037369",
        "is_live":false,
        "is_recorded":false,
        "comment_count":2124,
        "large_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1.jpg",
        "small_thumbnail":"http://202-230-12-92.twitcasting.tv/image3/image.twitcasting.tv/image55_1/39/7b/0b447b39-1-s.jpg",
        "country":"jp",
        "duration":1186,
        "created":1438500282,
        "is_collabo":false,
        "is_protected":false,
        "max_view_count":1675,
        "current_view_count":20848,
        "total_view_count":20848,
        "hls_url":"https://twitcasting.tv/twitcasting_jp/metastream.m3u8/?video=1"
    },
    "broadcaster":{
        "id":"182224938",
        "screen_id":"twitcasting_jp",
        "name":"ツイキャス公式",
        "image":"http://202-234-44-53.moi.st/image3s/pbs.twimg.com/profile_images/613625726512705536/GLlBoXcS_normal.png",
        "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。なお、お問い合わせは https://t.co/4gCf7XVm7N までお願いします。公式Facebookページhttps://t.co/bxYVwpzTJB\n公式Instagram\nhttps://t.co/Bm2O2J2Kfs",
        "level":24,
        "last_movie_id":"189037369",
        "is_live":false,
        "supporter_count": 0,
        "supporting_count": 0,
        "created": 0
    }
}
key type description
signature string 正規のリクエストであることを証明するキー
movie object Movieオブジェクト
broadcaster object 配信者のユーザ情報 Userオブジェクト

Get WebHook List

アプリケーションに紐づく WebHook の一覧を取得する。

アプリケーション単位でのみ実行可能です。

Required Permission

Any

Limit

60 requests / 60 sec

Request

GET /webhooks

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/webhooks?limit=20&offset=5" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Basic {BASE64_ENCODED_STRING}"

Parameters

key description limitation required
limit 取得件数 min:1, max:50 no (default:50)
offset 先頭からの位置 min:0 no (default:0)
user_id 対象ユーザの id - no

limit 及び offset パラメータは、 user_id の指定が無い場合のみ有効です。

Response

Sample Response (HTTP/1.1 200 OK)

{
    "all_count": 2,
    "webhooks": [
      {"user_id":"7134775954","event":"livestart"},
      {"user_id":"7134775954","event":"liveend"}
    ]
}
key type description
all_count int 登録済みWebHook件数
webhooks array WebHookオブジェクト の配列

WebHook object

WebHookを表すオブジェクト

key type description
user_id string ユーザID
event string フックするイベント種別(ライブ開始:"livestart", ライブ終了:"liveend")

Error Responses

このAPIは 共通のエラーレスポンス以外に、Validation Error を返す可能性があります。

Register WebHook

WebHookを新規登録します。

このAPIを使用するためには、アプリケーションに WebHook URL が登録されている必要があります。

Required Permission

Any

Limit

60 requests / 60 sec

Request

POST /webhooks

Sample Request


curl -X POST "https://apiv2.twitcasting.tv/webhooks" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Basic {BASE64_ENCODED_STRING}" \
-d '{"user_id": "7134775954", "events": ["livestart", "liveend"]}'

Parameters

key description limitation required
user_id string ユーザID
events array フックするイベント種別(ライブ開始:"livestart", ライブ終了:"liveend")の配列

Response

Sample Response (HTTP/1.1 201 Created)

{
    "user_id": "7134775954",
    "added_events": ["livestart", "liveend"]
}

既に登録されておりレコードが1つも新規作成されなかった場合には 200 OK を返します

Sample Response (HTTP/1.1 200 OK)

{
    "user_id": "7134775954",
    "added_events": []
}
key type description
user_id string ユーザID
added_events array 登録されたイベント種別(ライブ開始:"livestart", ライブ終了:"liveend")の配列

Error Responses

このAPIは 共通のエラーレスポンス以外に、Invalid WebHook URL を返す可能性があります。

Remove WebHook

WebHookを削除する。

Required Permission

Any

Limit

60 requests / 60 sec

Request

DELETE /webhooks

Sample Request


curl -g -X DELETE "https://apiv2.twitcasting.tv/webhooks?user_id=7134775954&events[]=livestart&events[]=liveend" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Basic {BASE64_ENCODED_STRING}"

Parameters

key description limitation required
user_id string ユーザID
events array フックを削除するイベント種別(ライブ開始:"livestart", ライブ終了:"liveend")の配列

Response

Sample Response (HTTP/1.1 200 OK)

{
    "user_id": "7134775954",
    "deleted_events": ["livestart", "liveend"]
}
key type description
user_id string ユーザID
deleted_events array 削除されたイベント種別(ライブ開始:"livestart", ライブ終了:"liveend")の配列

Broadcasting

Get RTMP Url

アクセストークンに紐づくユーザの配信用のURL(RTMP)を取得する。

Required Permission

Broadcast

Limit

60 requests / 60 sec

Request

GET /rtmp_url

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/rtmp_url" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "enabled": true,
    "url": "rtmp://rtmp02.twitcasting.tv/publish_tool/twitcasting_jp?user=twitcasting_jp&key=this_is_secret_key&client_type=public_api&is_publisher_tool=1",
    "stream_key": "twitcasting_jp"
}

key type description
enabled bool RTMP配信が有効かどうか
url string|null RTMP配信用URL
stream_key string|null RTMP配信用キー

RTMP配信の際の推奨設定は以下の通りです。

Error Responses

このAPIは 共通のエラーレスポンス以外に、Email Unverified を返す可能性があります。

Get WebM Url

アクセストークンに紐づくユーザの配信用のURL (WebM, WebSocket)を取得する。

Required Permission

Broadcast

Limit

60 requests / 60 sec

Request

GET /webm_url

Sample Request


curl -X GET "https://apiv2.twitcasting.tv/webm_url" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

Response

Sample Response (HTTP/1.1 200 OK)


{
    "enabled": true,
    "url": "wss://webm01.twitcasting.tv/ws.app/reader/webm?user_id=twitcasting_jp&key=this_is_secret_key&client_type=public_api"
}

key type description
enabled bool WebM配信が有効かどうか
url string|null WebM配信用URL

Webm配信の際の推奨設定は以下の通りです。

Sample Code

ブラウザから配信するための最小コードの例です。

navigator.mediaDevices.getUserMedia({video: true, audio: true}).then(
    function (stream) {
        var websocket = new WebSocket("wss://webm01.twitcasting.tv/ws.app/reader/webm?user_id=twitcasting_jp&key=this_is_secret_key&client_type=public_api");
        websocket.onopen = function(e) {
            mediaRecorder = new MediaRecorder(stream,
                {
                    audioBitsPerSecond:64000,
                    videoBitsPerSecond:800000,
                    mimeType: 'video/webm;codecs="vp8,opus"'
                });
            mediaRecorder.ondataavailable = function (e) {
                websocket.send(e.data);
            };
            mediaRecorder.start(50)
        }
    }
);

Error Responses

このAPIは 共通のエラーレスポンス以外に、Email Unverified を返す可能性があります。

Realtime API

Lives

新着のライブをリアルタイムに WebSocket 経由で取得する。

Required Permission

Read

Limit

5 connections / access token

Request

認証は他のAPI同様、Access Token にある Authentication ヘッダーに含める方法と、Access Token を /lives?token=*** と GET パラメーターに含めて行う方法があります。

// `npm install --save ws` するなどして ws をインストールする必要があります
const WebSocket = require('ws');
const clientID = '***';
const clientSecret = '***';
const livesSocket = new WebSocket('wss://' + clientID + ':' + clientSecret + '@realtime.twitcasting.tv/lives');
livesSocket.on('message', function incoming(data, flags) {
    console.log(data);
});

ホスト名が realtime.twitcasting.tv で他の API と違うことに注意してください。WebSocket over SSL (wss://) が使用できます。

接続直後は {"hello":"Moi!"} を受信します。それ以降、ライブが開始された Movie が続々と流れてきます。

接続可能な時間に制限はありませんが、サーバーから切断する可能性もあるのでクライアント側で適宜、再接続してください。

Response

初回のみ、{"hello":"Moi!"} それ以降は Search Live Movies に同じ。

Error Responses

このAPIは共通のエラーレスポンスを返す可能性があります。

Errors

Response

key type description
error object Errorオブジェクト

Error object

key type description
code int エラー識別コード
message string ヒューマンリーダブルなエラーメッセージ
details object Validation Errorの場合のみ存在するフィールド

Invalid Token (code: 1000)

アクセストークンが不正な時

Response (HTTP/1.1 401 Unauthorized)


{
    "error":{
        "code":1000,
        "message":"Invalid token"
    }
}

Validation Error (code: 1001)

バリデーションエラー時

Response (HTTP/1.1 400 Bad Request)


{
    "error":{
        "code":1001,
        "message":"Validation error",
        "details": {
            "limit": ["intVal"],
            "offset": ["min"]
        }
    }
}

Validation Error Details Object

バリデーションエラーの際、error.details にはエラーとなったパラメータのキーをフィールド名としたエラーコードの配列が渡されます。 例は、limit に数字以外が入力され、offset に下限より小さい値が指定された場合のレスポンスです。 なお、配列内の値のバリデーション結果は、当該キーのリストにマージされます。

Validation Error Code

code description
key 必須パラメータが指定されていない
arrayType 配列型でない
stringType 文字列型でない
intVal 正数または数字の文字列でない
in 文字列がホワイトリストに含まれない
identical 入力値が期待する値と一致しない
length 文字列の長さが不正、または配列の長さが不正
max 数値が閾値よりも大きい
min 数値が閾値よりも小さい

Invalid WebHook URL (code: 1002)

WebHook URL の登録が必要なAPIで、URLが登録されていない または URLの形式が不正な時

Response (HTTP/1.1 400 Bad Request)


{
    "error":{
        "code":1002,
        "message":"Invalid webhook url"
    }
}

Execution Count Limitation (code: 2000)

API実行回数上限

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2000,
        "message":"Execution count limitation"
    }
}

Application Disabled (code: 2001)

アプリケーションが無効になっている時(サポートへお問い合わせください)

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2001,
        "message":"Application is disabled"
    }
}

Protected (code: 2002)

コンテンツが保護されている時 (合言葉配信等)

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2002,
        "message":"Protected"
    }
}

Duplicate (code: 2003)

多重投稿時 (連続で同じコメントを送信した時等)

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2003,
        "message":"Duplicate"
    }
}

Too Many Comments (code: 2004)

コメント数が上限に達している時 (一定数以上のコメントがある配信で、配信が終了している場合にこのエラーが発生することがあります)

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2004,
        "message":"Too many comments"
    }
}

Out Of Scope (code: 2005)

書込み・配信などの権限がない時

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2005,
        "message":"Out of scope"
    }
}

Email Unverified (code: 2006)

Emailの確認が済んでおらず機能が利用できない時

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":2006,
        "message":"Email is not verified"
    }
}

Bad Request (code: 400)

パラメータが不正な時 (バリデーション上問題ないが、パラメータで指定した対象が存在しない場合等)

Response (HTTP/1.1 400 Bad Request)


{
    "error":{
        "code":400,
        "message":"Bad Request"
    }
}

Forbidden (code: 403)

権限の無いリソースへのアクセス時

Response (HTTP/1.1 403 Forbidden)


{
    "error":{
        "code":403,
        "message":"Forbidden"
    }
}

Not Found (code: 404)

コンテンツが見つからない時

Response (HTTP/1.1 404 Not Found)


{
    "error":{
        "code":404,
        "message":"Not Found"
    }
}

Internal Server Error (code: 500)

その他エラー時

Response (HTTP/1.1 500 Internal Server Error)


{
    "error":{
        "code":500,
        "message":"Internal Server Error"
    }
}