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.
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.
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.
https://inspectad.com/api/v1Limites 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.
| Limite | Valeur |
|---|---|
| Requêtes à l'API | 300/min |
| Vérifications de texte | Selon l'offre |
| Analyses d'image | Selon l'offre |
| Vérifications de page de destination | Selon l'offre |
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.
Paramètres
textobligatoireTexte publicitaire à analyser (de 20 à 2 000 caractères)
platformsobligatoirePlateformes cibles : "meta", "tiktok", "x", "youtube", "linkedin"
toneTon des suggestions : "Neutral", "Friendly", "Professional", "Playful" (par défaut : "Neutral")
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"
}'{
"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.
Paramètres
imageobligatoireFichier image (JPEG, PNG, WebP ou GIF, 4 Mo max.)
platformsPlateformes séparées par des virgules (par défaut : "meta")
curl -X POST https://inspectad.com/api/v1/analyze-image \
-H "Authorization: Bearer sk_live_..." \
-F "image=@ad-creative.png" \
-F "platforms=meta,tiktok"{
"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.
Paramètres
urlobligatoireURL complète de la page de destination à analyser
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" }'{
"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.
curl https://inspectad.com/api/v1/usage \
-H "Authorization: Bearer sk_live_..."{
"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.
| Valeur | Plateforme |
|---|---|
meta | Meta (Facebook et Instagram) |
tiktok | TikTok |
youtube | YouTube / Google Ads |
linkedin | |
x | X |
{
"platforms": ["meta", "tiktok", "youtube"]
}Codes d'erreur
Toutes les erreurs renvoient une enveloppe JSON homogène avec un code error et un message lisible.
| Statut | Code | Description |
|---|---|---|
| 401 | authentication_required | En-tête Authorization absent ou invalide |
| 401 | invalid_api_key | La clé d’API est invalide, expirée ou révoquée |
| 403 | insufficient_scope | La clé n'a pas l'autorisation d'utiliser cet endpoint |
| 403 | plan_upgrade_required | Votre offre n'inclut pas l'accès à l'API |
| 400 | validation_error | Paramètres de requête invalides |
| 400 | invalid_json | Le corps de la requête n’est pas un JSON valide |
| 400 | invalid_request | Format de requête incorrect (les vérifications d’image demandent du multipart/form-data avec un champ "image") |
| 400 | invalid_url | URL invalide ou bloquée pour des raisons de sécurité |
| 400 | invalid_platforms | Plateforme inconnue dans la liste des plateformes |
| 400 | missing_image | Aucun champ "image" dans la requête |
| 400 | invalid_image | Le fichier n’est pas une image PNG, JPEG, WebP ou GIF lisible |
| 400 | file_too_large | L’image dépasse la taille maximale |
| 403 | platform_limit | Votre offre vérifie moins de plateformes à la fois que demandé |
| 429 | limit_exceeded | Limite d'utilisation mensuelle de l'offre atteinte |
| 429 | rate_limited | Trop de requêtes (voir l'en-tête Retry-After) |
| 500 | internal_error | Un problème est survenu de notre côté |
{
"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.
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']}")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}`);Besoin d'aide ? contact@inspectad.com · FAQ · Gérer les clés d’API