🔧 API Veridy.ca

Scan de conformité Loi 25 en un seul appel. Conçu pour les bots, assistants IA, scripts et outils d'automatisation. Aucune clé API requise.

Base URL : https://veridy.ca/api  ·  Format : JSON  ·  Langue : fr-CA

← Retour à Veridy.ca
Table des matières

Démarrage rapide

Le plus simple : un seul appel POST bloque ~15-60s et retourne le résultat complet. Pas de polling.
# Scanner un site — 1 ligne, résultat complet
curl -s -X POST https://veridy.ca/api/v1/scan \
  -H "Content-Type: application/json" \
  -d '{"url": "example.ca"}' | python3 -m json.tool

POST /api/v1/scan — Scan synchrone

POST https://veridy.ca/api/v1/scan

Lance un scan Loi 25 et attend le résultat. Tout arrive en une seule réponse JSON.

Body (JSON)

ChampTypeRequisDescription
urlstringURL à scanner (example.ca ou https://example.ca)
forcebooleantrue = force un re-scan. Défaut: false

Réponse 200

{
  "url": "https://example.ca",
  "company_name": "Example Inc.",
  "loi25_grade": "C",
  "transparency_score": 62,
  "violations_count": 4,
  "violations": [ {"category": "cookies", ...}, ... ],
  "recommendations": [ {"priority": "high", ...}, ... ],
  "source": "live_scan",       // ou "db_cache"
  "cached": false,
  "audit_date": "2026-07-31T...",
  "scanner": {
    "technologies": ["Google Analytics", "Meta Pixel"],
    "privacy_policy": { "found": true, "url": "/confidentialite" }
  },
  "evidence": {
    "cmp": {}, "security_headers": {}, "infrastructure": {}
  },
  "rprp": {
    "name": "Jean Tremblay", "email": "jt@example.ca",
    "has_dpo": true, "email_provider": "Microsoft 365"
  }
}

Codes d'erreur

CodeCause
400URL manquante, invalide ou bloquée (IP privée, réseau social)
429Limite quotidienne atteinte (5 scans/jour/IP pour nouveaux sites)
502Le scanner n'a pas pu analyser le site (site hors-ligne, etc.)
504Timeout — le scan a dépassé 120 secondes

POST /api/scan/start — Scan asynchrone

POST https://veridy.ca/api/scan/start

Démarre un scan en arrière-plan. Retourne un job_id à poller avec /api/scan/status.

Body (JSON)

ChampTypeRequisDescription
urlstringURL à scanner
forcebooleantrue = bypass du cooldown

Réponse 200

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "remaining_today": 4,
  "max_per_day": 5
}

GET /api/scan/status — Statut d'un scan

GET https://veridy.ca/api/scan/status?job_id=...

Paramètres

ParamètreTypeRequisDescription
job_idstringJob ID obtenu via /api/scan/start

Le champ status passe de queuedrunningcompleted (ou failed). Quand completed, le résultat complet est dans result.

GET /api/companies/lookup

GET https://veridy.ca/api/companies/lookup?url=...

Recherche une entreprise dans le registre par URL (88 373 entreprises).

curl https://veridy.ca/api/companies/lookup?url=example.ca

GET /api/registre

GET https://veridy.ca/api/registre

Registre public des entreprises scannées (limite 100, triées par score).

curl https://veridy.ca/api/registre | python3 -m json.tool | head -30

GET /api/health

GET https://veridy.ca/api/health

{ "status": "ok", "db": "connected", "companies": 88373 }

Limites & règles

Ces limites protègent l'infrastructure (Playwright = 1 scan = 1 navigateur headless). Soyez respectueux.
RègleValeur
Nouveaux sites / jour / IP5
Cooldown re-scan même site1 heure
Scans simultanés1 max
Durée max d'un scan synchrone120 secondes
Sites déjà en DBIllimité (lecture cache)
BloquésIPs privées, localhost, Facebook/LinkedIn/Wikipedia

Exemples complets

Bash (1 appel)

curl -s -X POST https://veridy.ca/api/v1/scan \
  -H "Content-Type: application/json" \
  -d '{"url": "bouchardavocats.ca"}' | jq .loi25_grade
# → "C"

Python

import requests

resp = requests.post(
    "https://veridy.ca/api/v1/scan",
    json={"url": "bouchardavocats.ca"},
    timeout=120
)
data = resp.json()
print(f"Grade: {data['loi25_grade']} ({data['transparency_score']}/100)")
print(f"Violations: {data['violations_count']}")
print(f"Technologies: {data['scanner']['technologies']}")

Node.js

const res = await fetch("https://veridy.ca/api/v1/scan", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ url: "bouchardavocats.ca" })
});
const data = await res.json();
console.log(`Grade: ${data.loi25_grade} (${data.transparency_score}/100)`);

Veridy.ca — API sans clé, auto-hébergée au Québec. llms.txt · llms-full.txt · Méthodologie · Sous-traitants