Intégrations
Connectez audits-seo.com à vos outils : n8n, Zapier, backend, script maison.
n8n workflow
Utilisez un node HTTP Request pour appeler l'API. Authentification Bearer token à générer depuis /settings/api/.
Node HTTP Request : lancer un audit
{
"method": "POST",
"url": "https://app.audits-seo.com/api/v1/clients/{{$json.client_slug}}/audits/",
"authentication": "headerAuth",
"headerAuth": {
"name": "Authorization",
"value": "Bearer sk_live_..."
},
"sendBody": true,
"bodyContentType": "json",
"jsonBody": "{ \"max_pages\": 10, \"version_label\": \"v{{$now.format('YYYY-MM-DD')}}\" }"
}
Le node renvoie un job avec un
id. Poll GET /api/v1/audits/<id>/ jusqu'à status: done, puis GET .../results/.Webhooks entrants (audit.done)
Meilleur pattern : configurez un webhook depuis /settings/webhooks/, nous notifions votre backend quand un audit termine (pas de polling).
Payload envoyé (POST JSON)
{
"id": 42,
"event": "audit.done",
"created_at": "2026-07-16T14:35:12+02:00",
"data": {
"audit_id": 123,
"client_slug": "boulangerie-dupont",
"client_name": "Boulangerie Dupont",
"url": "https://boulangerie-dupont.fr",
"version_label": "v3",
"status": "done",
"duration_seconds": 187,
"dashboard_url": "https://app.audits-seo.com/boulangerie-dupont/"
}
}
Headers
X-Audits-Event: audit.done
X-Audits-Signature: sha256=<hex>
X-Audits-Delivery-Id: 42
Content-Type: application/json
Vérifier la signature (Python Flask)
import hmac, hashlib
from flask import Flask, request, abort
app = Flask(__name__)
SECRET = 'whsec_...' # depuis /settings/webhooks/
@app.route('/hook/audits', methods=['POST'])
def hook():
sig = request.headers.get('X-Audits-Signature', '').split('=', 1)[-1]
expected = hmac.new(SECRET.encode(), request.data, hashlib.sha256).hexdigest()
if not hmac.compare_digest(sig, expected):
abort(401)
payload = request.json
if payload['event'] == 'audit.done':
print(f"Audit {payload['data']['client_slug']} terminé !")
return 'OK', 200
Vérifier la signature (Node.js Express)
const crypto = require('crypto');
const express = require('express');
const app = express();
const SECRET = 'whsec_...';
app.post('/hook/audits',
express.raw({ type: 'application/json' }),
(req, res) => {
const sig = (req.headers['x-audits-signature'] || '').split('=')[1];
const expected = crypto.createHmac('sha256', SECRET).update(req.body).digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
return res.status(401).send('bad sig');
}
const payload = JSON.parse(req.body);
console.log('Audit terminé :', payload.data.client_slug);
res.send('OK');
}
);
Snippets API (curl)
Créer un client
curl -X POST https://app.audits-seo.com/api/v1/clients/ \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"name":"MonClient","website_url":"https://monclient.fr","sector":"e-commerce"}'
Lancer un audit
curl -X POST https://app.audits-seo.com/api/v1/clients/monclient/audits/ \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"max_pages": 15, "version_label": "v1"}'
Récupérer les résultats
curl https://app.audits-seo.com/api/v1/audits/42/results/ \
-H "Authorization: Bearer sk_live_..."
Zapier
Zapier n'a pas encore de connecteur natif, mais deux workflows fonctionnent :
- Webhooks by Zapier (trigger) : configurez un webhook depuis /settings/webhooks/ qui pointe vers votre catch hook Zapier. Recevez chaque
audit.done. - Webhooks by Zapier (action POST) : appelez l'API v1 pour créer un client ou lancer un audit depuis n'importe quel trigger Zapier (Google Sheets, Airtable, HubSpot...).
Un connecteur natif Zapier officiel est prévu (v2 roadmap).
Make (Integromat)
Même approche que Zapier : utilisez les modules HTTP (Make a request) et Webhooks (Custom webhook). L'auth Bearer se pose dans le header Authorization.