Version stable

InspectAd API

Intégrez la vérification de conformité directement à votre chaîne de création publicitaire. Vérifiez textes, images et pages de destination au regard des règles publicitaires des plateformes en un seul appel d'API.

Offre Pro requise : L'accès à l'API est inclus dans l'offre Pro. Ouvrez Offres dans les réglages pour vous abonner.
Obtenir une clé d’API
Démarrage rapidebash
curl -X POST https://inspectad.com/api/v1/check-text \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Lose 30 lbs in 2 weeks!",
    "platforms": ["meta"]
  }'

Authentification

L'API InspectAd utilise des clés d’API pour l'authentification. Ajoutez votre clé dans l'en-tête Authorization sous forme de jeton Bearer.

Générez des clés depuis la page Paramètres → API. Les clés ne sont affichées qu'une seule fois, à leur création : conservez-les en lieu sûr.

Sécurité : N'exposez jamais vos clés d’API dans du code côté client, des dépôts publics ou des requêtes navigateur. Utilisez des variables d'environnement ou un gestionnaire de secrets.
Exemple de requêtebash
curl https://inspectad.com/api/v1/usage \
  -H "Authorization: Bearer sk_live_abc123def456..."

URL de base

Tous les endpoints de l'API sont relatifs à l'URL de base ci-dessous. Toutes les réponses sont au format JSON. Les en-têtes CORS sont inclus pour les échanges de serveur à serveur.

URL de basetext
https://inspectad.com/api/v1

Limites de requêtes

Les requêtes à l'API sont soumises à des limites de débit (requêtes par minute) et à des limites d'utilisation liées à votre offre (vérifications par mois). Chaque réponse contient un objet usage.

LimiteValeur
Requêtes à l'API300/min
Vérifications de texteSelon l'offre
Analyses d'imageSelon l'offre
Vérifications de page de destinationSelon l'offre
En-têtes de limite de requêtesjson
HTTP/1.1 429 Too Many Requests
Retry-After: 30

{
  "error": "rate_limited",
  "message": "Too many requests. Retry after 30s."
}

Vérifier un texte

Analyse un texte publicitaire au regard des règles publicitaires des plateformes. Renvoie les problèmes de conformité, une décision pass/warn/fail, un indice de confiance et des alternatives conformes générées par IA.

POST/api/v1/check-text

Paramètres

textobligatoire
string

Texte publicitaire à analyser (de 20 à 2 000 caractères)

platformsobligatoire
string[]

Plateformes cibles : "meta", "tiktok", "x", "youtube", "linkedin"

tone
string

Ton des suggestions : "Neutral", "Friendly", "Professional", "Playful" (par défaut : "Neutral")

Requêtebash
curl -X POST https://inspectad.com/api/v1/check-text \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Lose 30 lbs in 2 weeks with our miracle pill!",
    "platforms": ["meta", "tiktok"],
    "tone": "Neutral"
  }'
Réponsejson
{
  "decision": "fail",
  "confidence": 92,
  "findings": [
    {
      "severity": "Fail",
      "snippet": "Lose 30 lbs in 2 weeks",
      "reason": "Unrealistic weight loss claims violate Meta Ad Standards.",
      "platform": "meta"
    }
  ],
  "suggestions": [
    "Transform your wellness journey — sustainable results you'll love."
  ],
  "platforms": ["meta", "tiktok"],
  "tone": "Neutral",
  "usage": { "used": 12, "limit": 100, "remaining": 88 }
}

Analyser une image

Analyse les visuels publicitaires : problèmes de conformité, part de texte en surimpression et respect des spécifications des plateformes. Formats JPEG, PNG, WebP et GIF jusqu'à 4 Mo.

POST/api/v1/analyze-image

Paramètres

imageobligatoire
file

Fichier image (JPEG, PNG, WebP ou GIF, 4 Mo max.)

platforms
string

Plateformes séparées par des virgules (par défaut : "meta")

Requête (multipart/form-data)bash
curl -X POST https://inspectad.com/api/v1/analyze-image \
  -H "Authorization: Bearer sk_live_..." \
  -F "image=@ad-creative.png" \
  -F "platforms=meta,tiktok"
Réponsejson
{
  "overallScore": 85,
  "dimensions": { "width": 1080, "height": 1080 },
  "format": "png",
  "fileSize": 524288,
  "textOverlayPercent": 15,
  "textContent": "CINEMATIC IMMERSION — True 4K Brilliance",
  "visualDescription": "Product shot with gradient background...",
  "contentFindings": [...],
  "platforms": ["meta", "tiktok"],
  "usage": { "used": 5, "limit": 25, "remaining": 20 }
}

Analyser une page de destination

Vérifie la conformité d'une page de destination — SSL, politique de confidentialité, mentions obligatoires, compatibilité mobile et infractions aux règles de contenu.

POST/api/v1/analyze-landing-page

Paramètres

urlobligatoire
string

URL complète de la page de destination à analyser

Requêtebash
curl -X POST https://inspectad.com/api/v1/analyze-landing-page \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/offer" }'
Réponsejson
{
  "url": "https://example.com/offer",
  "overallScore": 72,
  "technicalChecks": {
    "hasSSL": true,
    "hasMobileFriendly": true,
    "hasPrivacyPolicy": false,
    "hasTermsOfService": true
  },
  "contentChecks": { ... },
  "issues": [
    {
      "severity": "high",
      "category": "Privacy",
      "message": "No privacy policy link found."
    }
  ],
  "usage": { "used": 2, "limit": -1, "remaining": "unlimited" }
}

Consulter l'utilisation

Renvoie votre utilisation du mois en cours et les limites de votre offre pour tous les types de ressources.

GET/api/v1/usage
Requêtebash
curl https://inspectad.com/api/v1/usage \
  -H "Authorization: Bearer sk_live_..."
Réponsejson
{
  "plan": "pro",
  "planName": "Pro",
  "period": "2026-02",
  "usage": {
    "textChecks":        { "used": 142, "limit": "unlimited", "remaining": "unlimited" },
    "imageChecks":       { "used": 35,  "limit": "unlimited", "remaining": "unlimited" },
    "landingPageChecks": { "used": 8,   "limit": "unlimited", "remaining": "unlimited" },
    "videoAnalyses":     { "used": 3,   "limit": 20,          "remaining": 17 },
    "bulkChecks":        { "used": 0,   "limit": 100,         "remaining": 100 }
  },
  "platformsPerCheck": 4
}

Plateformes

Utilisez ces valeurs pour indiquer les plateformes cibles dans vos appels d'API.

ValeurPlateforme
metaMeta (Facebook et Instagram)
tiktokTikTok
youtubeYouTube / Google Ads
linkedinLinkedIn
xX
Exemplejson
{
  "platforms": ["meta", "tiktok", "youtube"]
}

Codes d'erreur

Toutes les erreurs renvoient une enveloppe JSON homogène avec un code error et un message lisible.

StatutCodeDescription
401authentication_requiredEn-tête Authorization absent ou invalide
401invalid_api_keyLa clé d’API est invalide, expirée ou révoquée
403insufficient_scopeLa clé n'a pas l'autorisation d'utiliser cet endpoint
403plan_upgrade_requiredVotre offre n'inclut pas l'accès à l'API
400validation_errorParamètres de requête invalides
400invalid_jsonLe corps de la requête n’est pas un JSON valide
400invalid_requestFormat de requête incorrect (les vérifications d’image demandent du multipart/form-data avec un champ "image")
400invalid_urlURL invalide ou bloquée pour des raisons de sécurité
400invalid_platformsPlateforme inconnue dans la liste des plateformes
400missing_imageAucun champ "image" dans la requête
400invalid_imageLe fichier n’est pas une image PNG, JPEG, WebP ou GIF lisible
400file_too_largeL’image dépasse la taille maximale
403platform_limitVotre offre vérifie moins de plateformes à la fois que demandé
429limit_exceededLimite d'utilisation mensuelle de l'offre atteinte
429rate_limitedTrop de requêtes (voir l'en-tête Retry-After)
500internal_errorUn problème est survenu de notre côté
Réponse d'erreurjson
{
  "error": "limit_exceeded",
  "message": "Text check limit reached (100/100).",
  "usage": {
    "used": 100,
    "limit": 100,
    "remaining": 0
  },
  "upgradeUrl": "https://inspectad.com/dashboard"
}

Exemples de code

Des exemples complets et fonctionnels dans les langages les plus courants. Remplacez sk_live_... par votre clé d’API.

Pythonpython
import requests

API_KEY = "sk_live_..."
BASE = "https://inspectad.com/api/v1"

resp = requests.post(
    f"{BASE}/check-text",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "text": "Limited time offer! Act now!",
        "platforms": ["meta", "tiktok"],
        "tone": "Professional"
    }
)

data = resp.json()
print(f"Decision: {data['decision']}")
print(f"Issues: {len(data['findings'])}")

for f in data["findings"]:
    print(f"  [{f['severity']}] {f['snippet']}")
    print(f"    {f['reason']}")
Node.js / TypeScripttypescript
const API_KEY = process.env.INSPECTAD_API_KEY!;
const BASE = "https://inspectad.com/api/v1";

const res = await fetch(`${BASE}/check-text`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    text: "Limited time offer! Act now!",
    platforms: ["meta", "tiktok"],
  }),
});

const data = await res.json();
console.log(`Decision: ${data.decision}`);
console.log(`Remaining: ${data.usage.remaining}`);