SPHIOR Logo
SPHIOR

SPHIOR · API リファレンス

1 つのエンドポイント。 JSON で入力、JSON で出力。

SPHIOR Security API を使えば、あらゆる言語・フレームワーク・環境のコードを脆弱性スキャンし、決定論的な修正ガイドをあなたの AI エージェントに渡せます。

https://api.sphior.comv1 (stable)REST / JSON
SPHIOR API

API リファレンス

SPHIOR Security API を使えば、あらゆる言語・フレームワーク・環境のコードを脆弱性スキャンし、決定論的な修正ガイドをあなたの AI エージェントに渡せます。

認証

認証

すべてのリクエストは Authorization ヘッダーに Bearer トークンとして API キーを含める必要があります。

bash
curl https://api.sphior.com/v1/scan \
  -H "Authorization: Bearer sk_live_your_api_key_here" \
  -H "Content-Type: application/json"
API キーをクライアントサイドのコードや公開リポジトリに公開しないでください。環境変数やシークレットマネージャーを使用してください。
API キーの生成と管理は API コンソールで行えます。アカウントあたり最大 5 つのアクティブキー。
POST/v1/scan

コードスキャン

コードスニペットのセキュリティ脆弱性を分析します。重大度、CVSS スコア、行番号、修正推奨を含む結果を返します。完全に決定論的(AI なし): 同じコードは常に同じ結果を返し、再現可能で監査に耐えます。

リクエストボディ

パラメータ説明
coderequiredstring分析対象のソースコード。最大サイズはプランに依存(10KB〜10MB)。
languagerequiredstringプログラミング言語: javascript, typescript, python, go, java, ruby, php, sql
policy_idstring適用するカスタムポリシー ID(Business+ プラン)。デフォルトは OWASP ルールセット。

リクエスト例

bash
curl -X POST https://api.sphior.com/v1/scan \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "code": "app.get(\"/user\", (req, res) => { db.query(\"SELECT * FROM users WHERE id=\" + req.query.id) })",
    "language": "javascript"
  }'

レスポンス例

json
{
  "scan_id": "scan_01j9x7z3k8q4b5c2d6e7f8g9h0",
  "status": "completed",
  "language": "javascript",
  "findings": [
    {
      "id": "find_001",
      "type": "sql_injection",
      "severity": "critical",
      "cvss": 9.8,
      "line": 2,
      "column": 11,
      "message": "Unsanitized user input passed directly to SQL query",
      "cwe": "CWE-89",
      "owasp": "A03:2021",
      "fix_hint": "Use parameterized queries: db.query('SELECT * FROM users WHERE id = ?', [req.query.id])"
    }
  ],
  "summary": {
    "critical": 1, "high": 0, "medium": 0, "low": 0, "info": 0
  },
  "ai_calls": 0,
  "cached": false,
  "latency_ms": 12
}
POST/v1/fix

修正ガイドを取得

前回のスキャンの finding ID を指定すると、決定論的な修正ガイド(なぜ問題か・修正手順・該当位置・AI エージェントへの指示)を返します。SPHIOR はパッチを書かずソースコードも送信しません。修正は顧客の AI(MCP 経由)が適用します。

リクエストボディ

パラメータ説明
scan_idrequiredstring前回の /v1/scan コールで返された ID。
finding_idrequiredstring修正を生成する対象の finding。
contextstring追加の周辺コードコンテキスト(最良の結果にはファイル全体を推奨)。

レスポンス例

json
{
  "fix_id": "fix_01j9x8a1b2c3d4e5f6g7h8i9j0",
  "scan_id": "scan_01j9x7z3k8q4b5c2d6e7f8g9h0",
  "finding_id": "find_001",
  "patched_code": null,
  "fix_context": {
    "finding_id": "find_001",
    "rule_id": "pattern.js.sql_concat",
    "severity": "critical",
    "cwe": "CWE-89",
    "owasp": "A03:2021",
    "why": "OS command / SQL injection: untrusted input reaches the query and can execute arbitrary statements.",
    "remediation_steps": [
      "Review the flagged code and identify the interpolated value.",
      "Use a parameterized query (e.g. WHERE id = ?) with bound parameters.",
      "Add a regression test covering the fixed behavior."
    ],
    "agent_instructions": "Open the file in your workspace and read the actual code yourself (it is NOT included here). Apply the remediation steps. A human must review your change before merge.",
    "data_boundary_note": "SPHIOR does not transmit your source code. This payload contains only finding metadata and deterministic remediation guidance."
  },
  "latency_ms": 9
}
GET/v1/rules

ルール一覧

プランで利用可能なすべてのアクティブなセキュリティルールを一覧表示します。ルール ID、カテゴリ、重大度、対応言語を返します。Business+ プランではコンソールからカスタムルールを作成可能。

bash
curl https://api.sphior.com/v1/rules \
  -H "Authorization: Bearer sk_live_..." \
  -G -d "language=javascript" -d "severity=critical"

クエリパラメータ

パラメータ説明
languagestring言語でフィルタ(例: python, go)。省略で全言語。
severitystring重大度でフィルタ: critical, high, medium, low, info
categorystringOWASP カテゴリでフィルタ(例: injection, auth, crypto)

Webhook

API コンソールで Webhook URL を登録すると、スキャン完了時、重大な脆弱性検出時、支出上限到達時にリアルタイムイベントを受信できます。

イベントタイプ

scan.completed

スキャン完了時に発火。ペイロードに scan_id、サマリー、検出件数を含む。

scan.critical_found

重大度 Critical の脆弱性検出時に即座に発火。

spend_cap.reached

月間支出が設定した上限に達した時に発火。

spend_cap.warning

支出が上限の 80% に達した時に発火。

Webhook ペイロードは Webhook シークレットを使用して HMAC-SHA256 で署名されます。処理前に必ず X-SPHIOR-Signature ヘッダーを検証してください。

エラーコード

SPHIOR API は標準的な HTTP ステータスコードを使用します。エラーレスポンスは error と code フィールドを含む JSON です。

ステータスコード意味
401unauthenticatedAPI キーが未指定または無効です。
403forbiddenこのキーにはこの操作の権限がありません。
400invalid_request不正な JSON、必須フィールドの欠落、またはサポートされていない言語。
413payload_too_largeコードサイズがプランの上限を超えています。
429spend_cap_reached月間支出上限に達しました。ルールのみの結果が返されます。
429rate_limited1 秒あたりのリクエスト数が多すぎます。バックオフしてリトライしてください。
500internal_error予期しないサーバーエラー。指数バックオフでリトライしてください。
json
// Error response shape
{
  "error": "Missing required field: language",
  "code": "invalid_request",
  "status": 400
}

SDK

公式 SDK は TypeScript/JavaScript と Python で利用可能です。両方とも型付きレスポンス、自動リトライ、支出上限認識を備えた REST API ラッパーです。

TypeScript / Node.js

bash
npm install @sphior/sdk
typescript
import { SphiorClient } from "@sphior/sdk";

const sphior = new SphiorClient({ apiKey: process.env.SPHIOR_API_KEY });

const result = await sphior.scan({
  code: fs.readFileSync("./auth.ts", "utf8"),
  language: "typescript",
});

for (const finding of result.findings) {
  console.log(`${finding.severity.toUpperCase()}: ${finding.message} (line ${finding.line})`);
  console.log("Fix hint:", finding.fix_hint);
}

// Hand a finding to your own AI agent to fix (deterministic guidance, no code sent):
const guidance = await sphior.fix({ scan_id: result.scan_id, finding_id: result.findings[0].id });
console.log(guidance.fix_context.remediation_steps);

Python

bash
pip install sphior-sdk
python
from sphior import SphiorClient

client = SphiorClient(api_key=os.environ["SPHIOR_API_KEY"])

result = client.scan(
    code=open("app.py").read(),
    language="python",
)

for finding in result.findings:
    print(f"{finding.severity.upper()}: {finding.message} (line {finding.line})")
    print("Fix hint:", finding.fix_hint)

# Hand a finding to your own AI agent to fix (deterministic guidance, no code sent):
guidance = client.fix(scan_id=result.scan_id, finding_id=result.findings[0].id)
print(guidance.fix_context["remediation_steps"])

料金

SPHIOR Security API はアクセスに対するシンプルなプラットフォーム料金制です。スキャンと修正ガイドは完全決定論エンジンで動作し、AI コール従量課金はありません。プランはレート制限・コードサイズ上限・サポートで異なります。

PlanPlatform feeScanningFix guidance
Free$0/moIncludedIncluded
Developer$29/moIncludedIncluded
Business$99/moIncludedIncluded
Enterprise$299+/moIncludedIncluded
決定論エンジンによりコストは一定で予測可能です。秒間レート制限とコードサイズ上限はプランに応じて拡大します。API コンソールで設定できます。