エンドポイント
OmniScout Cloud APIエンドポイントリファレンス。
ベースURL:https://api.omniscout.xyz(またはデプロイ先URL)。
すべてのレスポンスにはデバッグ・サポート用のrequest_id(UUID)が含まれます。
POST /v0/search
独自インデックスに対するセマンティック検索。
リクエスト
{
"query": "rust async runtimes",
"limit": 10
}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
query | string | はい | 検索クエリ(1~500文字) |
limit | integer | いいえ | 最大件数(1~20、デフォルト10) |
レスポンス
{
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"query": "rust async runtimes",
"count": 10,
"hits": [
{
"url": "https://tokio.rs/",
"title": "Tokio - An asynchronous Rust runtime",
"snippet": "...",
"source": "common_crawl",
"score": 0.94,
"rank": 1
}
]
}パイプライン
- Qdrant Cloudに対するハイブリッドベクトル+BM25クエリ
omniscout.engines.search.rerankでリランク- スコア付き上位ヒットを返す
POST /v0/answer
Webソースに基づく一文の根拠付き回答。
リクエスト
{
"query": "What is the latest stable Rust version?"
}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
query | string | はい | 質問(1~500文字) |
レスポンス
{
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"query": "What is the latest stable Rust version?",
"answer": "Rust 1.85.0 is the latest stable release as of February 2025.",
"status": "answered",
"confidence": 0.87,
"sources": [
{ "url": "https://blog.rust-lang.org/", "title": "Rust Blog" }
]
}根拠が不十分な場合、statusはinsufficient_information、answerはnullになります。
パイプライン
- 上位3件のインデックス検索+リランク
- URLコンテンツを抽出(omniscoutまたはtrafilatura)
- Vercel AI Gatewayで統合
- 出典・信頼度付きの回答を返す
セッションAPI概要
POST /v0/searchとPOST /v0/answerは変更なしです。セッションエンドポイントは同じURLパスですが、利用者は次に注意してください:
| トピック | 以前 | 現在 |
|---|---|---|
| 作成レスポンス | session_id、expires_at | session_secret(保存すること)とcapabilitiesも含む |
| コマンド認証 | APIキー+x-session-secret | 同じ — 明示的に記載。シークレットは作成時のみ表示 |
| コンピューター+ブラウザ | 別セッション/VM | コンピューターセッションIDで両ルートに対応 |
| ブラウザアクション | navigate、screenshot、… | 変更なし(素のアクション名) |
| コンピューターアクション | computer.*プレフィックス | 変更なし |
| スクリーンショット/ファイル | Sprite上のパスのみ | バイトのダウンロードにはGET /v0/sessions/{id}/filesを使用 |
| ブラウザへのアップロード | Sprite上のパスのみ | まずPOST /v0/sessions/{id}/files、次にuploadアクション |
| 有効期限 | 作成時からの固定TTL | 非アクティブ基準のスライド式(デフォルト30分)、最大2時間 |
| セッション削除 | APIキー | APIキーのみ(x-session-secret不要) |
ブラウザセッション
POST /v0/browser/sessions
ブラウザ専用Fly Spriteセッションを作成します(軽量Chromium VM)。
認証:Authorization: Bearer os_live_...
{
"request_id": "...",
"session_id": "j57abc...",
"type": "browser",
"capabilities": ["browser"],
"expires_at": 1710000000000,
"sprite_url": "https://omniscout-sprites.fly.dev",
"session_secret": "48-char-hex-secret-returned-once"
}セッションは非アクティブ後(SESSION_INACTIVITY_MS、デフォルト30分)またはハードTTL到達時(SESSION_MAX_TTL_MS、デフォルト2時間)に期限切れになります。各コマンドで非アクティブ枠が延長されます。
POST /v0/browser/sessions/{id}
デーモンコマンドをセッションにプロキシします。
ヘッダー:Authorization: Bearer os_live_...とx-session-secret: <作成時のsecret>
{
"action": "navigate",
"args": { "url": "https://example.com" },
"session": "default"
}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
action | string | はい | ブラウザアクション名(例:navigate、snapshot、screenshot) — browser.プレフィックスなし |
args | object | いいえ | アクション固有の引数 |
session | string | いいえ | デーモンタブグループ名(デフォルトdefault) |
timeout_ms | integer | いいえ | コマンドタイムアウト(ミリ秒) |
capabilities: ["browser", "computer"]を持つコンピューターセッションも、同じsession_idでこのルートのブラウザコマンドを受け付けます。
ブラウザ専用セッションはcomputer.*アクションを400で拒否します。
DELETE /v0/browser/sessions/{id}
セッションを破棄してFly Machineを解放します。
ヘッダー:Authorization: Bearer os_live_...のみ(セッションシークレット不要)。
コンピューターセッション
統合Fly Spriteセッションは、同じVM上でデスクトップ自動化とブラウザ自動化の両方を含みます。
| メソッド | パス | 説明 |
|---|---|---|
POST | /v0/computer/sessions | 統合Spriteを作成(capabilities: ["browser", "computer"]) |
POST | /v0/computer/sessions/{id} | コマンドをプロキシ(computer.*アクション) |
DELETE | /v0/computer/sessions/{id} | セッションを破棄(APIキーのみ) |
コマンド用ヘッダー:Authorization+x-session-secret(ブラウザコマンドと同じ)。
コンピューターコマンドはcomputer.プレフィックスを使います:
{
"action": "computer.type",
"args": { "text": "hello" },
"session": "default"
}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
action | string | はい | computer.で始まること(例:computer.type、computer.screenshot) |
args | object | いいえ | アクション固有の引数 |
session | string | いいえ | デーモンセッション名(デフォルトdefault) |
同じsession_idは/v0/browser/sessions/{id}経由のブラウザコマンドにも使えます — 2つ目のブラウザセッションは不要です。
セッションファイル
Spriteファイルシステムとのファイルのアップロード・ダウンロード。
| メソッド | パス | 説明 |
|---|---|---|
POST | /v0/sessions/{id}/files | マルチパートアップロード(fileフィールド、任意のsession名) |
GET | /v0/sessions/{id}/files?path=... | ファイルバイトをダウンロード |
GET | /v0/sessions/{id}/files?path=...&format=base64 | base64ペイロード付きJSONでダウンロード |
両ルートともAuthorizationとx-session-secretが必要です。
アップロード — fileフィールド付きmultipart/form-data。任意のsessionフィールドでデーモンセッション名を設定します(デフォルトdefault)。
curl -X POST "https://api.omniscout.xyz/v0/sessions/$SESSION_ID/files" \
-H "Authorization: Bearer $OMNISCOUT_API_KEY" \
-H "x-session-secret: $SESSION_SECRET" \
-F "file=@./document.pdf"ダウンロード — クエリパラメータpath(screenshotなどのコマンド結果から取得):
curl "https://api.omniscout.xyz/v0/sessions/$SESSION_ID/files?path=/tmp/...&format=base64" \
-H "Authorization: Bearer $OMNISCOUT_API_KEY" \
-H "x-session-secret: $SESSION_SECRET"典型的なスクリーンショットワークフロー:
{"action":"screenshot","args":{}}でPOST /v0/browser/sessions/{id}GET /v0/sessions/{id}/files?path={返却パス}&format=base64
典型的なブラウザアップロードワークフロー:
- ファイルバイトを
POST /v0/sessions/{id}/files {"action":"upload","args":{"selector":"@e1","files":["/path/from/step-1"]}}でPOST /v0/browser/sessions/{id}
OpenAPI
完全なOpenAPI 3.1仕様はこちら:
- 対話式エクスプローラー:api.omniscout.xyz/docs
- JSON:api.omniscout.xyz/api/openapi
仕様はZodルートスキーマから生成され、ライブAPIと同期しています。