Introduction
TwitCastingのAPIv2ドキュメントです。
変更点については、Change Log をご覧下さい。
Twitter @twitcasting_dev での情報発信も行っております。
Registration
- アプリケーション登録ページで必要な情報を入力し、アプリケーションを登録します。
- アクセストークンの取得には ClientID と ClientSecret が必要です
- ClientSecret は第三者に漏洩しないよう取扱にご注意下さい
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}
また、ClinetID
と ClientSecret
を使用してリクエストすることも可能です。
{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配信用キー |
Recommended Setting
RTMP配信の際の推奨設定は以下の通りです。
- 映像のフォーマット: h.264
- 音声のフォーマット: AAC
- 映像サイズ: 640x360
- フレームレート: 30fps
- ビットレート: Video+Audioで800kbp程度
- 1Mbpsを超えて一定時間配信が続くと、自動で切断されますのでご注意ください
- 最大映像サイズ: 900p/30fps or 720p/60fps (h264)、360p/30fps (h264以外)
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 |
Recommended Setting
Webm配信の際の推奨設定は以下の通りです。
- 映像のフォーマット: vp8, vp9 または h264
- 音声のフォーマット: opus または vorbis
- 映像サイズ: 640x360
- フレームレート: 30
- ビットレート: Video+Audioで2Mbps程度
- 2.5Mbpsを超えて一定時間配信が続くと、自動で切断されますのでご注意ください
- 最大映像サイズ: 900p/30fps
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"
}
}