HTTP連携 API リファレンス
VRCPersonaのデータを外部ツール(OBS、オーバーレイ、Bot等)から読み書きするためのローカルHTTP APIです。
有料プラン限定機能
セットアップ
- 設定 → HTTPタブを開く
- 受信サーバー / 送信サーバーをそれぞれ有効にする
- 必要に応じてポートを変更(デフォルト: 受信 11020 / 送信 11021)
両サーバーは 127.0.0.1 のみバインド(ローカルアクセスのみ)。
送信サーバー(データ取得)
デフォルトポート: 11021
外部ツールがVRCPersonaのデータをGETで取得します。データは5秒間隔で更新されます。
GET /api/groups
グループ一覧を取得(サーバーグループ + ローカルグループ)。
curl http://127.0.0.1:11021/api/groups レスポンス例:
[
{
"id": "d7569eaf-9673-4d5b-922e-5d868a048593",
"name": "お気に入り",
"color": "#1e65d3",
"icon": null,
"storage": "server",
"statusColor": "blue",
"statusMessage": "だれでもおいで",
"memberIds": ["usr_xxx", "usr_yyy"]
},
{
"id": "local_0211fdf8-dbea-4f3b-a5b3-caca9d2c1d80",
"name": "ローカルグループ",
"color": "#c43fe0",
"icon": null,
"storage": "local",
"statusColor": null,
"statusMessage": null,
"memberIds": ["usr_aaa", "usr_bbb"]
}
] | フィールド | 型 | 説明 |
|---|---|---|
| id | string | グループID |
| name | string | グループ名 |
| color | string | null | グループカラー(HEX) |
| icon | string | null | グループアイコン |
| storage | string | null | "server" or "local" |
| statusColor | string | null | ステータスカラー(blue / green / orange / red / null) |
| statusMessage | string | null | ステータスメッセージ |
| memberIds | string[] | メンバーのVRChat User ID一覧 |
GET /api/friends
フレンド一覧を取得。
curl http://127.0.0.1:11021/api/friends レスポンス例:
[
{
"id": "usr_424cea49-7bf4-47be-bbab-51f4535ed093",
"displayName": "ユーザー名",
"status": "green",
"statusDescription": "遊んでるよ",
"location": "wrld_xxx:12345~private(usr_yyy)",
"groups": ["d7569eaf-9673-4d5b-922e-5d868a048593"],
"priority": 3.1,
"platform": "standalonewindows",
"avatarThumbnail": "https://api.vrchat.cloud/api/1/file/..."
}
] | フィールド | 型 | 説明 |
|---|---|---|
| id | string | VRChat User ID |
| displayName | string | 表示名 |
| status | string | VRChatステータス(blue / green / orange / red) |
| statusDescription | string | null | ステータスメッセージ |
| location | string | null | 現在のlocation(wrld_xxx:instanceId 形式) |
| groups | string[] | 所属グループID一覧 |
| priority | number | ソート優先度(小さいほど上位) |
| platform | string | null | プラットフォーム(standalonewindows / android / web 等) |
| avatarThumbnail | string | null | アバターサムネイルURL |
GET /api/notifications
VRChat通知一覧を取得。
curl http://127.0.0.1:11021/api/notifications レスポンス例:
[
{
"id": "not_xxx",
"type": "invite",
"senderUserId": "usr_xxx",
"senderUsername": "ユーザー名",
"message": "",
"details": {
"worldId": "wrld_xxx",
"worldName": "ワールド名",
"inviteMessage": "遊びにおいでよ!"
},
"created_at": "2026-03-20T17:52:28.263Z",
"seen": false
}
] GET /api/health
サーバーの稼働確認。
curl http://127.0.0.1:11021/api/health レスポンス:
{"status": "ok"} 受信サーバー(ステータス変更)
デフォルトポート: 11020
外部ツールからVRCPersonaのグループステータスを変更します。
PUT /api/groups/:groupId/status
グループステータス(カラー・メッセージ)を変更。
curl -X PUT http://127.0.0.1:11020/api/groups/{groupId}/status \
-H "Content-Type: application/json" \
-d '{"status_color":"blue","status_message":"配信中"}' リクエストボディ:
| フィールド | 型 | 説明 |
|---|---|---|
| status_color | string | null | "blue" / "green" / "orange" / "red" / null(解除) |
| status_message | string | null | ステータスメッセージ(省略可) |
レスポンス: 202 Accepted
{"ok": true} 変更はVRCPersonaサーバーに非同期で反映されます。
ステータスを解除する例:
curl -X PUT http://127.0.0.1:11020/api/groups/{groupId}/status \
-H "Content-Type: application/json" \
-d '{"status_color":null,"status_message":null}' GET /api/health
curl http://127.0.0.1:11020/api/health 注意事項
groupIdは送信サーバーのGET /api/groupsで取得できるidフィールドを使用- ステータス変更はサーバーグループのみ有効(ローカルグループはステータス共有非対応)
- 送信サーバーのデータは5秒間隔で更新されるため、最大5秒の遅延がある
- 有料プランが無効になるとサーバーは自動停止する
- ポートが他のアプリと競合する場合は設定画面で変更可能(1024〜65535)