docs.apiCtaBanner.title
docs.apiCtaBanner.description
APIエンドポイントリファレンス
利用可能なすべてのREST APIエンドポイントの完全なドキュメントです。
組織とイントロスペクション
現在のAPIコンテキストと組織に関する情報を取得します。
現在のコンテキストを取得
GET /api/v1/me
APIキー、組織、レート制限、利用可能な機能に関する情報を返します。このエンドポイントはレート制限にカウントされません。
リクエスト例:
curl -X GET "https://www.screenzzie.com/api/v1/me" \
-H "Authorization: Bearer sk_live_xxx"
レスポンス例:
{
"success": true,
"data": {
"apiKey": {
"id": "uuid",
"name": "My API Key",
"keyPrefix": "sk_live_abc123",
"scopes": ["screens:read", "screens:write", "playlists:read"],
"expiresAt": null,
"lastUsedAt": "2024-01-15T10:30:00Z"
},
"organization": {
"id": "uuid",
"name": "My Company",
"planId": "growth",
"subscriptionStatus": "active",
"trialEndsAt": null,
"maxScreensAllowed": 50,
"activeScreensCount": 12
},
"rateLimits": {
"limit": 100000,
"used": 45,
"remaining": 99955,
"resetAtMs": 1704153600000
},
"features": {
"sequences": true,
"schedules": true,
"api": true
}
}
}
組織一覧
GET /api/v1/organizations
APIキーでアクセス可能な組織を返します。現在、各APIキーは1つの組織に属しています。
クエリパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
page | number | ページ番号(デフォルト:1) |
limit | number | 1ページあたりのアイテム数(デフォルト:20、最大:100) |
リクエスト例:
curl -X GET "https://www.screenzzie.com/api/v1/organizations" \
-H "Authorization: Bearer sk_live_xxx"
レスポンス例:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "My Company",
"planId": "growth",
"subscriptionStatus": "active",
"maxScreensAllowed": 50,
"activeScreensCount": 12,
"createdAt": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1,
"hasMore": false
}
}
}
スクリーン
デジタルサイネージスクリーンを管理します。
スクリーン一覧
GET /api/v1/screens
クエリパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
page | number | ページ番号(デフォルト:1) |
limit | number | 1ページあたりのアイテム数(デフォルト:20、最大:100) |
isActive | boolean | アクティブステータスでフィルタ |
isOnline | boolean | オンラインステータスでフィルタ |
screenGroupId | uuid | スクリーングループでフィルタ |
workspaceId | uuid | ワークスペースでフィルタ |
リクエスト例:
curl -X GET "https://www.screenzzie.com/api/v1/screens?isOnline=true&limit=10" \
-H "Authorization: Bearer sk_live_xxx"
レスポンス例:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Lobby Display",
"description": "Main entrance screen",
"isActive": true,
"isOnline": true,
"lastSeenAt": "2024-01-01T12:00:00Z",
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Madrid",
"location": "Building A, Floor 1",
"cityName": "Madrid",
"latitude": 40.4168,
"longitude": -3.7038,
"workspaceId": "uuid",
"screenGroupId": null,
"currentPlaylistId": "uuid",
"currentSequenceId": null,
"defaultPlaylistId": "uuid",
"defaultSequenceId": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 25,
"totalPages": 3,
"hasMore": true
}
}
}
スクリーン取得
GET /api/v1/screens/:screenId
パスパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
screenId | uuid | スクリーンID |
レスポンス例:
一覧レスポンスと同じ構造の単一スクリーンオブジェクトを返します。
スクリーン作成
POST /api/v1/screens
リクエストボディ:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
name | string | はい | スクリーン名(最大100文字) |
description | string | いいえ | スクリーンの説明(最大500文字) |
orientation | string | いいえ | landscapeまたはportrait(デフォルト:landscape) |
rotation | string | いいえ | 0、90、180、または270(デフォルト:0) |
timezone | string | いいえ | IANAタイムゾーン(例:Europe/Madrid) |
location | string | いいえ | 物理的な場所の説明(最大200文字) |
screenGroupId | uuid | いいえ | スクリーングループへの所属 |
workspaceId | uuid | いいえ | ワークスペースの割り当て |
プレイリストとシーケンスの割り当ては作成時に設定できません。作成後にスクリーン更新エンドポイントを使用してコンテンツを割り当ててください。
リクエスト例:
curl -X POST "https://www.screenzzie.com/api/v1/screens" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Conference Room A",
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Madrid",
"location": "Building B, Room 101"
}'
レスポンス例:
{
"success": true,
"data": {
"id": "uuid",
"name": "Conference Room A",
"description": null,
"isActive": true,
"isOnline": false,
"lastSeenAt": null,
"orientation": "landscape",
"rotation": "0",
"timezone": "Europe/Madrid",
"location": "Building B, Room 101",
"cityName": null,
"latitude": null,
"longitude": null,
"workspaceId": null,
"screenGroupId": null,
"currentPlaylistId": null,
"currentSequenceId": null,
"defaultPlaylistId": null,
"defaultSequenceId": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}
スクリーン更新
PATCH /api/v1/screens/:screenId
すべてのフィールドはオプションです。更新したいフィールドのみ含めてください。
リクエストボディ:
| フィールド | タイプ | 説明 |
|---|---|---|
name | string | 新しいスクリーン名(最大100文字) |
description | string | 新しい説明(クリアする場合はnull) |
orientation | string | landscapeまたはportrait |
rotation | string | 0、90、180、または270 |
timezone | string | IANAタイムゾーン |
location | string | 物理的な場所(クリアする場合はnull) |
workspaceId | uuid | ワークスペースID(削除する場合はnull) |
screenGroupId | uuid | スクリーングループID(削除する場合はnull) |
currentPlaylistId | uuid | 現在のプレイリスト(削除する場合はnull) |
currentSequenceId | uuid | 現在のシーケンス(削除する場合はnull) |
defaultPlaylistId | uuid | デフォルトプレイリスト(削除する場合はnull) |
defaultSequenceId | uuid | デフォルトシーケンス(削除する場合はnull) |
リクエスト例:
curl -X PATCH "https://www.screenzzie.com/api/v1/screens/abc123" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Display Name",
"currentPlaylistId": "playlist-uuid"
}'
プレイリスト
スクリーン用のコンテンツプレイリストを管理します。
プレイリスト一覧
GET /api/v1/playlists
クエリパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
page | number | ページ番号(デフォルト:1) |
limit | number | 1ページあたりのアイテム数(デフォルト:20、最大:100) |
workspaceId | uuid | ワークスペースでフィルタ |
レスポンス例:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Main Content",
"description": "Primary playlist for lobby screens",
"itemCount": 5,
"totalDuration": 120,
"workspaceId": null,
"createdBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z"
}
],
"pagination": { ... }
}
}
プレイリスト取得
GET /api/v1/playlists/:playlistId
アイテム付きでプレイリストを返します。アイテムは常にレスポンスに含まれます。
パスパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
playlistId | uuid | プレイリストID |
レスポンス例:
{
"success": true,
"data": {
"id": "uuid",
"name": "Main Content",
"description": "Primary playlist for lobby screens",
"itemCount": 2,
"totalDuration": 45,
"workspaceId": null,
"createdBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T12:00:00Z",
"items": [
{
"id": "item-uuid-1",
"position": 0,
"duration": 15,
"itemType": "media",
"mediaId": "media-uuid",
"config": null,
"createdAt": "2024-01-01T00:00:00Z"
},
{
"id": "item-uuid-2",
"position": 1,
"duration": 30,
"itemType": "website",
"mediaId": null,
"config": { "url": "https://example.com" },
"createdAt": "2024-01-01T00:00:00Z"
}
]
}
}
プレイリスト作成
POST /api/v1/playlists
リクエストボディ:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
name | string | はい | プレイリスト名(最大100文字) |
description | string | いいえ | プレイリストの説明(最大500文字) |
workspaceId | uuid | いいえ | ワークスペースの割り当て |
リクエスト例:
curl -X POST "https://www.screenzzie.com/api/v1/playlists" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Holiday Promotions",
"description": "Seasonal content for December"
}'
プレイリスト更新
PATCH /api/v1/playlists/:playlistId
リクエストボディ:
| フィールド | タイプ | 説明 |
|---|---|---|
name | string | 新しいプレイリスト名 |
description | string | 新しい説明(クリアする場合はnull) |
workspaceId | uuid | ワークスペースID(削除する場合はnull) |
プレイリスト削除
DELETE /api/v1/playlists/:playlistId
成功時は204 No Contentを返します。
メディア
メディアライブラリのファイルにアクセスし、登録します。
メディア一覧
GET /api/v1/media
クエリパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
page | number | ページ番号(デフォルト:1) |
limit | number | 1ページあたりのアイテム数(デフォルト:20、最大:100) |
type | string | タイプでフィルタ:imageまたはvideo |
folderId | uuid | フォルダでフィルタ |
workspaceId | uuid | ワークスペースでフィルタ |
レスポンス例:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "promo-video.mp4",
"type": "video",
"fileUrl": "https://...",
"thumbnailUrl": "https://...",
"fileSize": 15728640,
"duration": 30,
"folderId": null,
"workspaceId": null,
"uploadedBy": "user-uuid",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
],
"pagination": { ... }
}
}
メディア取得
GET /api/v1/media/:mediaId
一覧レスポンスと同じ構造の単一メディアオブジェクトを返します。
メディア登録
POST /api/v1/media
既にストレージにアップロードされたメディアファイルを登録します。このエンドポイントはファイルのアップロードを直接処理しません - ファイルのアップロードにはウェブダッシュボードを使用してください。
リクエストボディ:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
name | string | はい | メディア名(最大200文字) |
type | string | はい | imageまたはvideo |
fileUrl | string | はい | アップロードされたファイルのURL |
thumbnailUrl | string | いいえ | サムネイルのURL |
fileSize | number | いいえ | ファイルサイズ(バイト) |
duration | number | いいえ | 動画の長さ(秒) |
folderId | uuid | いいえ | フォルダの割り当て |
workspaceId | uuid | いいえ | ワークスペースの割り当て |
リクエスト例:
curl -X POST "https://www.screenzzie.com/api/v1/media" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Company Logo",
"type": "image",
"fileUrl": "https://your-storage.com/logo.png",
"thumbnailUrl": "https://your-storage.com/logo-thumb.png",
"fileSize": 102400
}'
REST API経由での直接ファイルアップロードは利用できません。ウェブダッシュボードでファイルをアップロードするか、独自のストレージにアップロードしてこのエンドポイントでURLを登録してください。
メディア削除
DELETE /api/v1/media/:mediaId
成功時は204 No Contentを返します。
スケジュール
スケジュールはGrowthプラン以上でのみ利用可能です。
特定の時間にコンテンツを再生するスケジュールを設定します。
スケジュール一覧
GET /api/v1/schedules
クエリパラメータ:
| パラメータ | タイプ | 説明 |
|---|---|---|
page | number | ページ番号(デフォルト:1) |
limit | number | 1ページあたりのアイテム数(デフォルト:20、最大:100) |
workspaceId | uuid | ワークスペースでフィルタ |
screenId | uuid | スクリーンでフィルタ |
isActive | boolean | アクティブステータスでフィルタ |
レスポンス例:
{
"success": true,
"data": {
"items": [
{
"id": "uuid",
"name": "Weekend Promotions",
"playlistId": "playlist-uuid",
"sequenceId": null,
"screenId": null,
"screenGroupId": null,
"targetType": "all_screens",
"dayOfWeek": [0, 6],
"startTime": "09:00",
"endTime": "21:00",
"startDate": null,
"endDate": null,
"priority": 10,
"isActive": true,
"color": "#3B82F6",
"workspaceId": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
],
"pagination": { ... }
}
}
スケジュール取得
GET /api/v1/schedules/:scheduleId
一覧レスポンスと同じ構造の単一スケジュールオブジェクトを返します。
スケジュール作成
POST /api/v1/schedules
リクエストボディ:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
name | string | いいえ | スケジュール名(最大100文字) |
playlistId | uuid | いいえ* | スケジュールするプレイリスト |
sequenceId | uuid | いいえ* | スケジュールするシーケンス |
targetType | string | はい | screen、screen_group、all_screens、またはmultiple_screens |
screenId | uuid | 条件付き | targetTypeがscreenの場合は必須 |
screenGroupId | uuid | 条件付き | targetTypeがscreen_groupの場合は必須 |
dayOfWeek | number[] | いいえ | 曜日(0=日曜、6=土曜) |
startTime | string | いいえ | 開始時刻(HH:MM形式) |
endTime | string | いいえ | 終了時刻(HH:MM形式) |
startDate | string | いいえ | 開始日(ISO形式) |
endDate | string | いいえ | 終了日(ISO形式) |
priority | number | いいえ | 優先度0〜100(デフォルト:0) |
isActive | boolean | いいえ | アクティブかどうか(デフォルト:true) |
color | string | いいえ | 表示色(例:#3B82F6) |
workspaceId | uuid | いいえ | ワークスペースの割り当て |
*コンテンツをスケジュールするにはplaylistIdまたはsequenceIdを指定する必要があります。
ターゲットタイプの条件付き要件:
| targetType | 必須フィールド |
|---|---|
screen | screenId |
screen_group | screenGroupId |
all_screens | なし |
multiple_screens | なし(別のエンドポイントでスクリーンを追加) |
リクエスト例:
curl -X POST "https://www.screenzzie.com/api/v1/schedules" \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Weekend Promotions",
"playlistId": "abc123",
"targetType": "all_screens",
"dayOfWeek": [0, 6],
"startTime": "09:00",
"endTime": "21:00",
"priority": 10,
"color": "#3B82F6"
}'
スケジュール更新
PATCH /api/v1/schedules/:scheduleId
すべてのフィールドはオプションです。スケジュール作成と同じフィールド定義を使用します。
スケジュール削除
DELETE /api/v1/schedules/:scheduleId
成功時は204 No Contentを返します。
HTTPステータスコード
| コード | 説明 |
|---|---|
200 | 成功 |
201 | 作成完了 |
204 | コンテンツなし(削除成功) |
400 | 不正なリクエスト(バリデーションエラー) |
401 | 未認証(無効なAPIキー) |
403 | 禁止(権限またはプラン不足) |
404 | 見つからない |
429 | リクエストが多すぎる(レート制限) |
500 | 内部サーバーエラー |