SPHIOR · Référence API
Un endpoint. JSON en entrée, JSON en sortie.
L'API de sécurité SPHIOR vous permet d'analyser le code pour détecter les vulnérabilités et de transmettre un guide de correction déterministe à votre propre agent IA — depuis n'importe quel langage ou environnement.
Référence API
L'API de sécurité SPHIOR vous permet d'analyser le code pour détecter les vulnérabilités et de transmettre un guide de correction déterministe à votre propre agent IA — depuis n'importe quel langage ou environnement.
Authentification
Toutes les requêtes doivent inclure votre clé API dans l'en-tête Authorization en tant que jeton Bearer.
curl https://api.sphior.com/v1/scan \
-H "Authorization: Bearer sk_live_your_api_key_here" \
-H "Content-Type: application/json"/v1/scanAnalyser le code
Analyse un extrait de code pour détecter les vulnérabilités. Retourne les résultats avec la sévérité, le score CVSS, le numéro de ligne et une recommandation de correction. Entièrement déterministe (sans IA) : le même code produit toujours les mêmes résultats — reproductible et prêt pour l'audit.
Corps de la requête
| Paramètre | Type | Description |
|---|---|---|
| coderequired | string | Le code source à analyser. Taille max selon votre plan (10KB–10MB). |
| languagerequired | string | Langage: javascript, typescript, python, go, java, ruby, php, sql |
| policy_id | string | ID de politique personnalisée (plans Business+). OWASP par défaut. |
Exemple de requête
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"
}'Exemple de réponse
{
"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
}/v1/fixObtenir un guide de correction
À partir d'un finding ID d'une analyse précédente, retourne un guide de correction déterministe : pourquoi c'est important, étapes de remédiation, emplacement et instructions pour votre agent IA. SPHIOR n'écrit pas de correctifs et ne transmet pas votre code source ; votre propre IA (via MCP) applique la correction.
Corps de la requête
| Paramètre | Type | Description |
|---|---|---|
| scan_idrequired | string | ID retourné par un appel /v1/scan précédent. |
| finding_idrequired | string | Résultat spécifique pour lequel générer un correctif. |
| context | string | Contexte de code supplémentaire (fichier complet recommandé). |
Exemple de réponse
{
"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
}/v1/rulesLister les règles
Liste toutes les règles de sécurité actives disponibles pour votre plan. Retourne l'ID de règle, la catégorie, la sévérité et les langages applicables.
curl https://api.sphior.com/v1/rules \
-H "Authorization: Bearer sk_live_..." \
-G -d "language=javascript" -d "severity=critical"Paramètres de requête
| Paramètre | Type | Description |
|---|---|---|
| language | string | Filtrer par langage (ex. python, go). Omettre pour tous. |
| severity | string | Filtrer par sévérité: critical, high, medium, low, info |
| category | string | Filtrer par catégorie OWASP: injection, auth, crypto |
Webhooks
Enregistrez une URL de webhook dans la Console API pour recevoir des événements en temps réel lors de la fin d'analyse ou la détection de vulnérabilités critiques.
Types d'événements
scan.completedDéclenché à la fin d'une analyse. Contient scan_id, résumé et nombre de résultats.
scan.critical_foundDéclenché immédiatement lors de la détection d'une vulnérabilité critique.
spend_cap.reachedDéclenché lorsque les dépenses mensuelles atteignent le plafond configuré.
spend_cap.warningDéclenché lorsque les dépenses atteignent 80% du plafond.
Codes d'erreur
L'API SPHIOR utilise les codes d'état HTTP standard. Les réponses d'erreur sont en JSON avec les champs error et code.
| Statut | Code | Signification |
|---|---|---|
| 401 | unauthenticated | Clé API manquante ou invalide. |
| 403 | forbidden | La clé n'a pas la permission pour cette opération. |
| 400 | invalid_request | JSON malformé, champs requis manquants ou langage non supporté. |
| 413 | payload_too_large | La taille du code dépasse la limite de votre plan. |
| 429 | spend_cap_reached | Le plafond de dépenses mensuel est atteint. Seuls les résultats de règles sont retournés. |
| 429 | rate_limited | Trop de requêtes par seconde. Attendez et réessayez. |
| 500 | internal_error | Erreur serveur inattendue. Réessayez avec un backoff exponentiel. |
// Error response shape
{
"error": "Missing required field: language",
"code": "invalid_request",
"status": 400
}SDKs
Les SDKs officiels sont disponibles pour TypeScript/JavaScript et Python. Les deux encapsulent l'API REST avec des réponses typées, des relances automatiques et la gestion du plafond de dépenses.
TypeScript / Node.js
npm install @sphior/sdkimport { 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
pip install sphior-sdkfrom 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"])Tarifs
L'API facture des frais de plateforme simples pour l'accès. L'analyse et le guide de correction s'exécutent sur un moteur entièrement déterministe — sans facturation par appel IA. Les plans diffèrent par les limites de débit, de taille de code et le support.
| Plan | Platform fee | Scanning | Fix guidance |
|---|---|---|---|
| Free | $0/mo | Included | Included |
| Developer | $29/mo | Included | Included |
| Business | $99/mo | Included | Included |
| Enterprise | $299+/mo | Included | Included |
