APIリファレンス
AY-RobotsのREST APIはhttps://www.ay-robots.com/api配下にあり、リクエストとレスポンスの両方でJSONを使用します。このページでは、認証、レスポンスの規約、そしてプログラムから呼び出す可能性が高いルートについてはパラメータの完全なドキュメントを含め、すべてのエンドポイントを解説します。
最終更新日 2026-08-09
認証
Publicセクションに記載されているものを除き、すべてのエンドポイントには認証が必要です。APIは2種類の認証情報を受け付けており、どちらも渡し方は同じです。ダッシュボードがすでに送信しているセッションクッキーとして渡すか、BearerトークンとしてAuthorizationヘッダーで渡します。
| 方式 | 仕組み | 用途 |
|---|---|---|
| ブラウザセッション | ログイン中のアカウントのSupabaseセッショントークンを、クッキーまたはBearerトークンとして送信します | ダッシュボード自体、および認証済みブラウザコンテキストからの簡単な実験 |
| APIキー | ayr_live_というプレフィックスを持つキーを/dashboard/settingsで作成し、Bearerトークンとして送信します | スクリプト、サーバー、CI、そのほかブラウザログインに依存させたくないもの全般 |
| MCP | https://www.ay-robots.com/api/mcp(Streamable HTTP)にあるホスト型MCPサーバー | Model Context Protocolを話すLLMエージェントやツール |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'APIキーは/dashboard/settingsで作成・失効できます。パスワードと同様に扱い、サーバー側にのみ保管し、古いキーを失効させる前に新しいキーを作成してローテーションしてください。デスクトップCLIを使用している場合、コマンド1つでプラットフォームをローカルMCPサーバーとして公開することもできます。コマンドはay-robots mcpです。
レスポンスはJSONです。エラーは一貫した形式を取ります。人間が読めるメッセージを含む単一のerrorフィールドを持つJSONオブジェクトが、適切な4xxまたは5xxのステータスコードとともに返されます。成功レスポンスはリソースを直接返しますが、一部のエンドポイントはリストを名前付きフィールドでラップしており、それが重要な箇所については以下の例で示します。
認証エンドポイント
アカウントとプロフィールに関する基盤部分です。これらは主にダッシュボード自体が使用しますが、有効な認証情報であればどれでも動作します。
/api/auth/profileBearerセッショントークンまたは APIキー認証済みユーザーのプロフィールを返します。
/api/auth/profileBearerセッショントークンまたは APIキー表示名や通知設定などのプロフィール項目を更新します。
/api/auth/syncBearerセッショントークンSupabaseの認証ユーザーを、プラットフォームのユーザーレコードと同期します。
/api/auth/check-onboardingBearerセッショントークン認証済みユーザーがオンボーディングを完了しているかどうかを返します。
/api/auth/avatarBearerセッショントークン認証済みユーザーの新しいアバター画像をアップロードします。
クライアントエンドポイント
ロボット所有者が管理するすべてのもの、すなわち登録済みロボット、クライアントプロフィール、データセット、請求書、ダッシュボードの統計情報です。
/api/client/robotsBearerセッショントークンまたは APIキー(クライアントロール)認証済みクライアントが登録したロボットを、新しい順に最大50件まで一覧表示します。タイムスタンプはISO 8601形式です。last_onlineとlast_heartbeatは、ロボットが一度も接続していない間はnullになります。
curl https://www.ay-robots.com/api/client/robots \
-H 'Authorization: Bearer ayr_live_your_key_here'[
{
"id": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11",
"name": "Lab SO-100",
"robot_type": "SO-100",
"status": "AVAILABLE",
"control_url": "wss://robots.example.com/so100/control",
"stream_url": "https://robots.example.com/so100/stream",
"hardware_id": "board:local:usb-1",
"last_online": "2026-08-09T10:12:00.000Z",
"last_heartbeat": "2026-08-09T10:12:00.000Z",
"total_hours": 12.5,
"tags": ["lab"],
"notes": null,
"created_at": "2026-07-01T09:00:00.000Z"
}
]/api/client/robotsBearerセッショントークンまたは APIキー(クライアントロール)新しいロボットを登録し、そのidを返します。モーターボードのハードウェアIDは1台のロボットにしか属せません。衝突した場合はステータス409で拒否されます。
/api/client/profileBearerセッショントークンまたは APIキー(クライアントロール)認証済みユーザーのクライアントプロフィールを返します。
/api/client/profileBearerセッショントークンまたは APIキー(クライアントロール)クライアントプロフィールの項目を更新します。
/api/client/datasetsBearerセッショントークンまたは APIキー(クライアントロール)クライアントのクラウドデータセットを、エピソード数とサイズとともに一覧表示します。
/api/client/invoicesBearerセッショントークンまたは APIキー(クライアントロール)クライアントの月次請求書を一覧表示します。
/api/client/statsBearerセッショントークンまたは APIキー(クライアントロール)クライアントダッシュボード用の利用統計を返します。
オペレーターエンドポイント
オペレーター側の機能です。プロフィールと稼働可能状況、認定、スケジューリング、収益統計を扱います。
/api/operator/profileBearerセッショントークンまたは APIキー(オペレーターロール)認証済みユーザーのオペレータープロフィールを返します。
/api/operator/profileBearerセッショントークンまたは APIキー(オペレーターロール)オペレータープロフィールを作成または更新します。
/api/operator/available-robotsBearerセッショントークンまたは APIキー(オペレーターロール)現在利用可能で、そのオペレーターの認定と一致するロボットを一覧表示します。
/api/operator/certificationsBearerセッショントークンまたは APIキー(オペレーターロール)オペレーターの認定リクエストとそのステータスを一覧表示します。
/api/operator/certificationsBearerセッショントークンまたは APIキー(オペレーターロール)あるロボット機種の認定をリクエストします。
/api/operator/scheduleBearerセッショントークンまたは APIキー(オペレーターロール)オペレーターの週次稼働可能スケジュールを返します。
/api/operator/scheduleBearerセッショントークンまたは APIキー(オペレーターロール)週次稼働可能スケジュールを更新します。
/api/operator/availabilityBearerセッショントークンまたは APIキー(オペレーターロール)オペレーターの現在の稼働可能状況を返します。
/api/operator/statsBearerセッショントークンまたは APIキー(オペレーターロール)オペレーターダッシュボード用の収益とセッション統計を返します。
セッション
セッションはプラットフォームの中核リソースです。1つのセッションは、オペレーターとロボットの間で行われる1回の連続したテレオペレーションです。セッションのステータスは、PENDING、ACTIVE、PAUSED、COMPLETED、CANCELLEDの順に遷移します。
/api/sessionsBearerセッショントークンまたは APIキー認証済みユーザーのセッションを一覧表示します。オペレーターには自分が操作したセッションが、クライアントには自分のロボットで行われたセッションが表示されます。フィールド構成は2つのビューで若干異なり、クライアントビューにはepisodes_collectedとdata_collected_mbが、オペレータービューにはoperator_earnings_centsが含まれます。
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | 任意。セッションステータスで絞り込みます。例: ACTIVEやCOMPLETED。省略するとすべて一覧表示します。 |
| limit | query | number | 任意。1ページあたりの件数。デフォルト50、最大100。 |
| offset | query | number | 任意。ページネーションのオフセット。デフォルト0。 |
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
-H 'Authorization: Bearer ayr_live_your_key_here'{
"sessions": [
{
"id": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "COMPLETED",
"started_at": "2026-08-08T14:00:12.000Z",
"ended_at": "2026-08-08T14:47:31.000Z",
"duration_minutes": 47,
"client_charge_cents": 1175,
"episodes_collected": 23,
"data_collected_mb": 210.4,
"rating": 5,
"created_at": "2026-08-08T13:59:58.000Z",
"robot_id": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11",
"robot_name": "Lab SO-100",
"robot_type": "SO-100",
"operator_name": "Jane D."
}
]
}/api/sessionsBearerセッショントークンまたは APIキー(オペレーターロール)利用可能なロボットでテレオペレーションセッションを開始します。オペレーターロールが必要です。クライアントはセッションを開始できません。1人のオペレーターが同時に保持できるACTIVEまたはPAUSEDのセッションは最大1つで、対象のロボットは現在ステータスがAVAILABLEである必要があります。即座に開始すると、ロボットはIN_SESSIONに切り替わり、クライアントに通知されます。
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | 必須。操作するロボットのid。そのロボットはAVAILABLEである必要があります。 |
| operatorId | body | string | 任意。明示的なオペレーターid。省略時は認証済みのオペレーターになります。 |
| scheduledFor | body | string (ISO 8601) | 任意。即座に開始する代わりに、セッションを未来の時刻に予約します。 |
curl -X POST https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"robotId": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11"}'{
"sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "ACTIVE"
}/api/sessions/[id]Bearerセッショントークンまたは APIキー単一のセッションを詳細情報とともに返します。
/api/sessions/[id]Bearerセッショントークンまたは APIキーセッションのライフサイクルを更新します。一時停止、再開、終了、および関連する操作です。
/api/sessions/[id]/extendBearerセッショントークンまたは APIキー(クライアント、セッション所有者)セッションの延長をリクエストします。呼び出せるのはそのセッションを所有するクライアントのみで、セッションはACTIVEである必要があります。リクエストはセッションイベントとして記録され、オペレーターに通知が届きます。延長自体は、オペレーターがそれに応じて操作したときに実行されます。
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | セッションid。 |
| additionalMinutes | body | number | リクエストする延長時間(分)。 |
curl -X POST https://www.ay-robots.com/api/sessions/6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30/extend \
-H 'Authorization: Bearer ayr_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"additionalMinutes": 30}'{
"message": "Extension request sent to operator"
}/api/sessions/[id]/messagesBearerセッショントークンまたは APIキーセッションのチャットメッセージを一覧表示します。
/api/sessions/[id]/messagesBearerセッショントークンまたは APIキーセッションでチャットメッセージを送信します。
/api/sessions/[id]/rateBearerセッショントークンまたは APIキー(クライアント)完了したセッションを1から5の星で評価します。コメントは任意です。
/api/sessions/exportBearerセッショントークンまたは APIキーセッションデータをエクスポートします。
決済
すべての金銭のやり取りはStripeを通じて行われます。クライアントの請求には、保存済みの支払い方法を持つStripeカスタマーを使用し、オペレーターへの支払いにはStripe Connectを使用します。プラットフォーム自体がカード情報や銀行情報を保存することはありません。
/api/stripe/customerBearerセッショントークン(クライアントロール)クライアント請求に使用するStripeカスタマーを作成または取得します。
/api/stripe/connectBearerセッショントークン(オペレーターロール)オペレーターのStripe Connectアカウントのステータスを返します。
/api/stripe/connectBearerセッショントークン(オペレーターロール)オペレーターへの支払いのため、Stripe Connectのオンボーディングを開始します。
/api/stripe/setup-intentBearerセッショントークン(クライアントロール)支払い方法を保存するためのStripe SetupIntentを作成します。
/api/stripe/portalBearerセッショントークン(クライアントロール)支払い方法と請求書を管理するための、Stripe課金ポータルのセッションを作成します。
/api/stripe/payoutBearerセッショントークン(オペレーターロール)認証済みオペレーターの支払い情報を返します。
/api/stripe/payoutBearerセッショントークン(オペレーターロール)蓄積された収益の支払いをリクエストします。最低支払い額は10.00ユーロです。
/api/stripe/webhookStripe Webhook署名StripeのWebhookイベントを受信します。APIクライアントではなく、Stripeから呼び出されます。
パブリックエンドポイント
これらのエンドポイントは認証を必要としません。監視、マーケティングページ、ステータスプローブなどから安全に呼び出せます。
/api/healthAPIとそのデータベース接続のヘルスチェックです。両方とも問題なければ200を返します。データベースのチェックが失敗した場合は、statusとdbをerrorに設定した同じ形式のレスポンスが、HTTPステータス503とともに返されます。
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]サポートされているロボット機種の公開情報を返します。
/api/public/pricing現在の公開料金プランを返します。
/api/contactお問い合わせフォームのメッセージを送信します。メッセージはまず保存され、その後メールで配信されるため、一時的なメール障害があってもメッセージが失われることはありません。その場合、レスポンスにはstoredがtrue、deliveredがfalseとして報告され、配信は運用上リトライされます。
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | 必須。お名前。 |
| body | string | 必須。返信先として有効なメールアドレス。 | |
| category | body | string | 必須。次のいずれか1つ。General Inquiry、Bug Report、Feature Request、Sales & Pricing、Partnership、Career/Jobs、Technical Support、Billing & Payments、Press & Media、Other。 |
| subject | body | string | 必須。短い件名。 |
| message | body | string | 必須。メッセージ本文。 |
curl -X POST https://www.ay-robots.com/api/contact \
-H 'Content-Type: application/json' \
-d '{
"name": "Jane Doe",
"email": "jane@example.com",
"category": "Technical Support",
"subject": "SO-100 pairing question",
"message": "My arm shows as offline after pairing."
}'{
"success": true,
"message": "Message sent successfully",
"id": "b1f2c3d4-0000-0000-0000-000000000000",
"stored": true,
"delivered": true
}/api/robot-requestまだプラットフォームにないロボット機種のサポートをリクエストします。
/api/stats公開プラットフォーム統計を返します。