Guide d'integration API REST
Connectez vos applications a AILabsAudit via l'API REST. Recuperez audits, clients, rapports et analytics programmatiquement.
Sommaire
Prerequis
Avant d'integrer l'API REST, assurez-vous de disposer de :
Un compte Enterprise ou Partenaire
L'acces a l'API necessite un plan Enterprise ou le statut partenaire. Demandez l'acces si vous n'en avez pas encore.
Une cle API REST
Vous aurez besoin d'une cle API (format aila_...) generee depuis la page API & Integrations.
Un client HTTP
N'importe quel client HTTP convient : curl, Python requests, JavaScript fetch, Postman, etc.
Obtenir sa cle API
Votre cle API est la meme que celle utilisee pour les connexions MCP. Si vous en avez deja une, vous pouvez l'utiliser directement.
Aller dans API & Integrations
Naviguez vers Compte → API & Integrations dans votre tableau de bord.
Creer une nouvelle cle
Cliquez sur "Creer une cle API", donnez-lui un nom (ex. "Mon App") et selectionnez les permissions souhaitees.
Copier et stocker en securite
Votre cle commence par aila_. Copiez-la immediatement — elle ne sera plus affichee. Stockez-la dans une variable d'environnement, jamais dans votre code source.
Astuce
Vous pouvez aussi explorer l'API de maniere interactive via notre documentation Swagger qui liste tous les endpoints disponibles.
Authentification
L'API supporte deux methodes d'authentification. Choisissez celle qui convient a votre stack :
Methode 1 : Header X-Api-Key
curl -H "X-Api-Key: aila_your_key_here" \
https://ailabsaudit.com/api/v1/clients
Methode 2 : Authorization Bearer
curl -H "Authorization: Bearer aila_your_key_here" \
https://ailabsaudit.com/api/v1/clients
Securite
N'exposez jamais votre cle API dans du code cote client (JavaScript dans le navigateur). Effectuez toujours les appels API depuis votre serveur (backend).
Premiere requete
Verifions que votre connexion fonctionne en recuperant la liste de vos clients :
curl -s -H "X-Api-Key: aila_your_key_here" \
https://ailabsaudit.com/api/v1/clients | python3 -m json.tool
Reponse reussie (200 OK)
{
"success": true,
"data": [
{
"id": 42,
"name": "Acme Corp",
"sector": "Technology",
"website": "https://acme.com",
"country": "FR",
"created_at": "2025-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
C'est tout !
Si vous voyez la liste de vos clients, votre cle API fonctionne. Vous pouvez maintenant explorer tous les endpoints disponibles ci-dessous.
Endpoints
L'API est organisee en 8 groupes d'endpoints. Toutes les URLs sont prefixees par https://ailabsaudit.com/api/v1/.
Clients
| Methode | Endpoint | Description |
|---|---|---|
| GET | /clients |
Lister tous les clients |
| GET | /clients/{id} |
Detail d'un client |
| GET | /clients/{id}/contacts |
Contacts du client |
| GET | /clients/{id}/competitors |
Concurrents du client |
| GET | /clients/{id}/360 |
Vue 360 complete |
Audits
| Methode | Endpoint | Description |
|---|---|---|
| GET | /audits |
Lister les audits |
| GET | /audits/{id} |
Detail d'un audit |
| GET | /audits/{id}/results |
Resultats d'un audit |
| GET | /audits/{id}/scores |
Scores de visibilite |
| POST | /audits/launch |
Lancer un nouvel audit |
Rapports
| Methode | Endpoint | Description |
|---|---|---|
| GET | /reports |
Lister les rapports |
| GET | /reports/{id} |
Detail d'un rapport |
| GET | /reports/{id}/download |
Telecharger le PDF |
Plans d'action
| Methode | Endpoint | Description |
|---|---|---|
| GET | /action-plans |
Lister les plans d'action |
| GET | /action-plans/{id} |
Detail d'un plan |
| GET | /action-plans/{id}/progress |
Progression du plan |
Questionnaires
| Methode | Endpoint | Description |
|---|---|---|
| GET | /questionnaires |
Lister les questionnaires |
| GET | /questionnaires/{id}/responses |
Reponses du questionnaire |
Analytics
| Methode | Endpoint | Description |
|---|---|---|
| GET | /analytics/portfolio |
Vue d'ensemble du portfolio |
| GET | /analytics/leaderboard |
Classement de visibilite |
| GET | /analytics/scores/distribution |
Distribution des scores |
Modeles
| Methode | Endpoint | Description |
|---|---|---|
| GET | /models |
Lister les modeles IA disponibles |
| GET | /models/{id} |
Detail du modele & tarifs |
Compte
| Methode | Endpoint | Description |
|---|---|---|
| GET | /account/profile |
Votre profil |
| GET | /account/credits |
Solde de credits |
| GET | /account/subscription |
Info abonnement |
Documentation complete
Pour la liste complete des endpoints, parametres et schemas de reponse, consultez la documentation Swagger interactive.
Pagination & filtres
Tous les endpoints de liste supportent la pagination via des parametres de requete :
| Parametre | Defaut | Description |
|---|---|---|
page |
1 |
Numero de page |
per_page |
20 |
Elements par page (max 100) |
Exemple avec pagination
curl -H "X-Api-Key: aila_your_key_here" \
"https://ailabsaudit.com/api/v1/audits?page=2&per_page=10"
Objet pagination dans la reponse
{
"pagination": {
"page": 2,
"per_page": 10,
"total": 47,
"total_pages": 5
}
}
Erreurs & rate limiting
Codes de statut HTTP
| Code | Signification |
|---|---|
200 | Succes |
400 | Requete invalide (parametres incorrects) |
401 | Non autorise (cle API absente ou invalide) |
403 | Interdit (permissions insuffisantes) |
404 | Non trouve |
429 | Limite de requetes atteinte |
500 | Erreur serveur |
Format de reponse en erreur
{
"success": false,
"error": {
"code": 401,
"message": "Invalid or missing API key"
}
}
Rate limiting
L'API autorise 60 requetes par minute par cle API. Les headers de reponse incluent les informations de limite :
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 58 X-RateLimit-Reset: 1709472000
Si vous atteignez la limite
Lorsque vous recevez une reponse 429, attendez le timestamp X-RateLimit-Reset avant de reessayer. Implementez un backoff exponentiel dans votre code pour la production.
Exemples de code
Voici des exemples complets pour demarrer dans votre langage prefere :
import requests
API_KEY = "aila_your_key_here"
BASE_URL = "https://ailabsaudit.com/api/v1"
headers = {"X-Api-Key": API_KEY}
# List clients
response = requests.get(f"{BASE_URL}/clients", headers=headers)
clients = response.json()
for client in clients["data"]:
print(f"{client['name']} — {client['sector']}")
# Get audits for each client
audits = requests.get(
f"{BASE_URL}/audits",
headers=headers,
params={"client_id": client["id"], "per_page": 5}
).json()
for audit in audits["data"]:
print(f" Audit #{audit['id']} — Score: {audit.get('score', 'N/A')}")
# Download a report as PDF
report_id = 1
r = requests.get(
f"{BASE_URL}/reports/{report_id}/download",
headers=headers
)
if r.status_code == 200:
with open(f"report_{report_id}.pdf", "wb") as f:
f.write(r.content)
print(f"Report saved: report_{report_id}.pdf")
const API_KEY = "aila_your_key_here";
const BASE_URL = "https://ailabsaudit.com/api/v1";
const headers = { "X-Api-Key": API_KEY };
// List clients
async function getClients() {
const response = await fetch(`${BASE_URL}/clients`, { headers });
const { data, pagination } = await response.json();
console.log(`${pagination.total} clients found`);
data.forEach(client => {
console.log(`${client.name} — ${client.sector}`);
});
return data;
}
// Get audit results
async function getAuditResults(auditId) {
const response = await fetch(
`${BASE_URL}/audits/${auditId}/results`,
{ headers }
);
return await response.json();
}
// Paginate through all audits
async function getAllAudits() {
let page = 1;
let allAudits = [];
while (true) {
const response = await fetch(
`${BASE_URL}/audits?page=${page}&per_page=50`,
{ headers }
);
const { data, pagination } = await response.json();
allAudits.push(...data);
if (page >= pagination.total_pages) break;
page++;
}
return allAudits;
}
getClients().then(console.log);
<?php
$apiKey = "aila_your_key_here";
$baseUrl = "https://ailabsaudit.com/api/v1";
function apiRequest($endpoint, $params = []) {
global $apiKey, $baseUrl;
$url = $baseUrl . $endpoint;
if (!empty($params)) {
$url .= "?" . http_build_query($params);
}
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: $apiKey"],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
throw new Exception("API error: HTTP $httpCode");
}
return json_decode($response, true);
}
// List clients
$clients = apiRequest("/clients");
foreach ($clients["data"] as $client) {
echo "{$client['name']} — {$client['sector']}\n";
}
// Get audits with pagination
$audits = apiRequest("/audits", [
"page" => 1,
"per_page" => 10
]);
echo "Total audits: {$audits['pagination']['total']}\n";
// Get client 360 view
$client360 = apiRequest("/clients/42/360");
print_r($client360["data"]);
Pret a integrer l'API ?
Creez votre cle API en 30 secondes et commencez a construire votre integration.
CommencerPrêt à auditer votre visibilité IA ?
Créez votre compte gratuitement et recevez 1000 crédits bonus.
Créer un compte gratuit