NAV

Introduction

TwitCastingのAPIv2(β)ドキュメントです。 現在β版のため、予告なく仕様変更が行われる可能性がありますのでご了承下さい。

Registration

Get Access Token

Authorization Code Grant

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

Step1

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

URL

https://apiv2.twitcasting.tv/oauth2/authorize?client_id={YOUR_CLINET_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" \
-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 アクセストークン

Implicit

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

Step1

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

URL

https://apiv2.twitcasting.tv/oauth2/authorize?client_id={YOUR_CLINET_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の実行回数は、ユーザ単位もしくはアプリケーション単位で計算されます。 各単位についてはGet Access Token Step3をご覧ください。

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,
        "created":1282620640
    }
}

key type description
user object Userオブジェクト

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 現在ライブ配信中かどうか
created int ユーザ作成日時のunixタイムスタンプ

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,
        "created":1282620640
    }
}

key type description
app object アクセストークンに紐づくアプリケーション情報 Appオブジェクト
user object アクセストークンに紐づくユーザ情報 Userオブジェクト

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 )

ユーザーが配信中でない場合、オフライン画像を取得する。

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":"http://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,
        "created":1282620640
    },
    "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 最大同時視聴数
current_view_count int 現在の同時視聴者数(配信中ではない場合0)
total_view_count int 総視聴者数
hls_url string 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 no (default:0)
limit 取得件数 min:1, max:50 no (default:20)

Response

Sample Response (HTTP/1.1 200 OK)

{
    "total_count": 5,
    "movies":[
        {
            "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":"http://twitcasting.tv/twitcasting_jp/metastream.m3u8/?video=1"
        },
        {
            "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":"http://twitcasting.tv/twitcasting_pr/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":"http://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,
        "created":1282620640
    },
    "tags":["人気", "コンティニュー中", "レベル40+", "初見さん大歓迎", "まったり", "雑談"]
}

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

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は無視される。 - 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,
                "created":1282620640
            },
            "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 SNSへの同時投稿(ユーザーがTwitterまたはFacebookと連携しているときのみ有効)。"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,
            "created":1282620640
        },
        "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 を返す可能性があります。

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_jp/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,
    "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": "キャスマーケットの公式アカウントです。キャスマに関するサポート対応、キャスマに並んでいる商品の紹介をしています。",
        "last_movie_id": null,
        "is_live": false,
        "created": 1282620640
    }
}

key type description
is_supporting bool サポーターかどうか
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_jp/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",
            "last_movie_id":"189037369",
            "is_live":true,
            "created":1282620640,
            "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",
            "last_movie_id":"323387579",
            "is_live":false,
            "created":1414474646,
            "point": 30,
            "total_point": 45
        },
        ...
    ]
}

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

SupporterUser object

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

key type description
id string ユーザID
screen_id string id同様にユーザを特定する識別子ですが、screen_idはユーザによって変更される場合があります。
name string ヒューマンリーダブルなユーザの名前
image string ユーザアイコンのURL
profile string プロフィール文章
last_movie_id string|null ユーザが最後に配信したライブのID
is_live bool 現在ライブ配信中かどうか
created int ユーザ作成日時のunixタイムスタンプ
point int アイテム・スコア
total_point int 累計スコア

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_jp/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",
            "last_movie_id":"189037369",
            "is_live":true,
            "created":1282620640,
            "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",
            "last_movie_id":"323387579",
            "is_live":false,
            "created":1414474646,
            "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,
            "created":1282620640
        },
        {
            "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,
            "created":1414474646
        },
        ...
    ]
}
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: 50 no (default:10)
type 検索種別 “tag”, “word”, “category”, “new”, “recommend” yes
context type=tag or word → スペース区切りで複数単語のAND検索. type=category → カテゴリIDまたはサブカテゴリ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":"http://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,
                "created":1282620640
            },
            "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":"http://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,
                "created":1414474646
            },
            "tags":["人気", "コンティニュー中", "レベル40+", "初見さん大歓迎", "まったり", "雑談"]
        },
        ...
    ]
}
key type description
movies array /movies/:movie_id と同一のMovieオブジェクトの配列

Error Responses

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

Broadcasting

Get RTMP Url

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

Required Permission

Broadcast

Limit

60 requests / 60 sec

Request

GET /rtmp_url

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

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配信の際の推奨設定は以下の通りです。

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の場合のみ存在するフィールド

Validation Error (code: 1001)

バリデーションエラー時

Response (HTTP/1.1 400 Bad Request)


{
    "error":{
        "code":1001,
        "message":"Validation error",
        "details": {
            "type": ["required", "matchValue"]
        }
    }
}

Validation Error Details Object

バリデーションエラーの際、error.details にはエラーとなったパラメータのキーをフィールド名としたエラーコードの配列が渡されます。 レスポンス例は、必須かつ特定の文字列のみを受け入れる type パラメータがリクエストに存在しない場合のエラーレスポンスです。

Validation Error Code

code description
required 必須パラメータが指定されていない
notArray 配列型のパラメータが指定不可能なフィールドへ配列型のパラメータが指定されている
numeric 数字の文字列でない
alpha アルファベットの文字列でない
alphanum アルファベットと数字の組み合わせから成る文字列でない
numericMax 数字が閾値よりも大きい
numericMin 数字が閾値よりも小さい
maxLength 文字数が閾値よりも大きい
minLength 文字数が閾値よりも小さい
matchValue 文字列がホワイトリストにマッチしない
matchPattern 文字列が特定のパターンにマッチしない
floatString 小数点を含む数字の文字列でない
email emailの形式でない
fileMaxSize ファイルサイズが閾値よりも大きい
fileType ファイルのフォーマットが不正

Banned Words (code: 1002)

コメント投稿等でNGワードが含まれている。

Response (HTTP/1.1 400 Bad Request)


{
    "error":{
        "code":1002,
        "message":"Contains banned words"
    }
}

Invalid Token (code: 1000)

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

Response (HTTP/1.1 401 Unauthorized)


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

Forbidden (code: 403)

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

Response (HTTP/1.1 403 Forbidden)


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

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)

Read Onlyのアクセストークンで

Response (HTTP/1.1 403 Forbidden)


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

Bad Request (code: 400)

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

Response (HTTP/1.1 400 Bad Request)


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

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