ScanVibeScanVibe
REST API v1

Documentation API

Intégrez le scan de sécurité ScanVibe dans votre pipeline CI/CD. Détectez les vulnérabilités avant la mise en production.

Vue d'ensemble

L'API ScanVibe vous permet de scanner programmatiquement n'importe quelle URL pour détecter les vulnérabilités de sécurité. Conçue pour l'intégration CI/CD, elle retourne un rapport de sécurité structuré avec scores, notes et résultats par catégorie.

URL de base

https://scanvibe.dev/api/v1

Toutes les requêtes et réponses utilisent JSON. L'API suit les conventions REST.

Authentification

Toutes les requêtes API nécessitent un token Bearer. Générez votre token API depuis le tableau de bord ScanVibe dans Compte > Tokens API.

L'accès API nécessite un plan Business (29$/mois).

Incluez votre token dans l'en-tête Authorization :

Authorization: Bearer sv_live_your_token_here

Les tokens sont préfixés par sv_live_

Endpoints

POST/api/v1/scan

Soumettez une URL pour un scan de sécurité. Le scan s'exécute de manière synchrone et retourne le rapport complet.

curl

curl -X POST https://scanvibe.dev/api/v1/scan \
  -H "Authorization: Bearer sv_live_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://my-app.vercel.app",
    "threshold": 70
  }'

Corps de la requête

FieldTypeStatusDescription
urlstringrequisL'URL à scanner. Doit être une URL HTTP(S) valide et publiquement accessible.
thresholdnumberoptionnelScore minimum acceptable (0-100). Si le score du scan est inférieur à cette valeur, l'API retourne HTTP 422 au lieu de 200. Idéal pour les portes CI/CD.
multiPagebooleandéfaut: falseActiver le scan multi-pages. Explore et scanne les pages liées (fonctionnalité du plan Business).

Réponse

Succès (200)

Retourne le rapport de scan complet quand le score atteint ou dépasse le seuil (ou si aucun seuil n'est défini).

{
  "id": "clx1abc2d0001abcdef",
  "url": "https://my-app.vercel.app",
  "score": 74,
  "grade": "C",
  "results": [
    {
      "category": "ssl",
      "score": 100,
      "severity": "pass",
      "summary": "Valid SSL certificate with strong configuration"
    },
    {
      "category": "headers",
      "score": 45,
      "severity": "high",
      "summary": "Missing Content-Security-Policy and X-Frame-Options"
    },
    {
      "category": "secrets",
      "score": 60,
      "severity": "medium",
      "summary": "Supabase anon key found in client bundle"
    }
  ]
}
FieldDescription
idIdentifiant unique du scan
urlL'URL scannée
scoreScore de sécurité global (0-100)
gradeNote lettrée (A, B, C, D ou F)
resultsTableau de résultats par catégorie
.categoryCatégorie de sécurité (ex. : ssl, headers, secrets)
.scoreScore de la catégorie (0-100)
.severityNiveau de sévérité : critical, high, medium, low, info ou pass
.summaryRésumé lisible des résultats

Intégration CI/CD

Utilisez le paramètre threshold pour faire échouer votre pipeline CI quand le score de sécurité descend sous un seuil acceptable. L'API retourne HTTP 422 quand le score est inférieur au seuil.

Exemple GitHub Actions

Ajoutez cette étape à votre workflow GitHub Actions pour conditionner les déploiements à un score de sécurité minimum :

# .github/workflows/security.yml
name: Security Scan

on:
  push:
    branches: [main]
  pull_request:

jobs:
  scanvibe:
    runs-on: ubuntu-latest
    steps:
      - name: ScanVibe Security Gate
        run: |
          RESPONSE=$(curl -s -w "\n%{http_code}" \
            -X POST https://scanvibe.dev/api/v1/scan \
            -H "Authorization: Bearer ${{ secrets.SCANVIBE_TOKEN }}" \
            -H "Content-Type: application/json" \
            -d '{"url": "https://my-app.vercel.app", "threshold": 70}')

          HTTP_CODE=$(echo "$RESPONSE" | tail -1)
          BODY=$(echo "$RESPONSE" | head -n -1)

          if [ "$HTTP_CODE" -eq 422 ]; then
            echo "Security score below threshold!"
            echo "$BODY" | jq .
            exit 1
          elif [ "$HTTP_CODE" -ne 200 ]; then
            echo "Scan failed with HTTP $HTTP_CODE"
            echo "$BODY"
            exit 1
          fi

          echo "Security scan passed!"
          echo "$BODY" | jq '{score: .score, grade: .grade}'

Codes d'erreur

L'API utilise les codes HTTP standards. Les réponses d'erreur contiennent un corps JSON avec un champ message.

CodeSignification
200Scan terminé avec succès. Le score atteint le seuil.
400Corps de requête ou URL invalide.
401Token API manquant ou invalide.
403Token valide mais le compte n'est pas sur le plan Business.
422Score inférieur au seuil. Le corps contient le rapport complet pour inspecter les échecs.
429Limite de requêtes atteinte. Attendez et réessayez.
500Erreur interne du serveur. Réessayez ou contactez le support.

Limites de requêtes

Les tokens API du plan Business sont limités à 60 requêtes par minute et 500 requêtes par jour. Les en-têtes de limite sont inclus dans chaque réponse :

HeaderDescription
X-RateLimit-LimitVotre limite de requêtes par minute
X-RateLimit-RemainingRequêtes restantes dans la fenêtre actuelle
X-RateLimit-ResetSecondes avant la réinitialisation de la fenêtre

Ready to integrate?

Get your API token with a Business plan and start securing your CI/CD pipeline today.

View Pricing