Référence API
Référence complète pour l'API REST AutoSEO. Tous les points de terminaison nécessitent un token Bearer valide sauf indication contraire. URL de base : https://panel.seoauto.ai
Aperçu
L'API d'automatisation PSEO AutoSEO vous permet de créer des sites web (PSEOs) par programmation, de déclencher la génération de contenu basée sur l'IA, de suivre les tâches de génération et de gérer votre pipeline de contenu. Tous les points de terminaison se trouvent sous le préfixe de chemin /pseo-endpoints, monté sur le backend Directus.
URL de base
https://panel.seoauto.ai
Authentification
Bearer Token (JWT)
Format
JSON (REST)
Authentification
Tous les appels API (sauf la vérification de santé) nécessitent un token utilisateur Directus transmis en tant qu'en-tête Bearer. Obtenez un token d'accès de courte durée en vous connectant, ou utilisez un token statique de longue durée généré depuis votre tableau de bord.
Option 1 — Connexion (JWT de courte durée)
https://panel.seoauto.ai/auth/login{
"email": "you@example.com",
"password": "••••••••"
}{
"data": {
"access_token": "eyJhbGciO...",
"expires": 3600000,
"refresh_token": "..."
}
}Option 2 — Token statique (tableau de bord)
Allez dans Tableau de bord → Clé API et générez un token statique permanent. Utilisez-le directement comme valeur Bearer — pas d'expiration à suivre.
Utilisation du token
Authorization: Bearer <your_access_token>Vérification de santé
https://panel.seoauto.ai/pseo-endpoints/Renvoie le statut de l'extension et une liste des points de terminaison disponibles. Aucune authentification requise.
{
"status": "ok",
"extension": "pseo-automation",
"version": "1.0.0",
"timestamp": "2026-03-10T12:00:00.000Z",
"endpoints": [
"GET /",
"POST /pseo",
"POST /trigger/on-demand-generation",
"POST /trigger/bulk-generation",
"GET /generations/:id",
"GET /generations?pseo_id=X",
"POST /generate/main-json",
"GET /fetch-sitemap?pseo_id=X"
]
}Créer un site web
https://panel.seoauto.ai/pseo-endpoints/pseoCrée une nouvelle entrée PSEO (site web) pour l'utilisateur authentifié. L'enregistrement PSEO est l'entité racine qui contient tous les paramètres de génération de contenu pour un site web spécifique.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| website_url | string | requis | URL complète du site web cible (ex. https://example.com) |
| master_prompt | string | requis | Instructions qui guident l'IA lors de la génération de contenu pour ce site web |
| website_software | string | optionnel | Identifiant CMS/plateforme. Par défaut "wordpress" |
{
"website_url": "https://example.com",
"website_software": "wordpress",
"master_prompt": "This website sells handmade leather bags targeting fashion-conscious adults in the US. Write SEO-friendly product content in English using a professional yet warm tone."
}{
"success": true,
"message": "PSEO created successfully",
"data": {
"id": 42,
"website_url": "https://example.com",
"website_software": "wordpress",
"directus_user_id": "uuid-...",
"post_counts_total": 0
},
"timestamp": "2026-03-10T12:00:00.000Z"
}Démarrer la génération (Test)
https://panel.seoauto.ai/pseo-endpoints/trigger/on-demand-generationDémarre une tâche de génération de contenu IA à la demande pour un PSEO. Limitée à 1 page (mode test). La tâche s'exécute de manière asynchrone en arrière-plan. Les tokens sont déduits immédiatement au taux token_per_page.
Mode test — max 1 page
La génération à la demande est limitée à 1 page et est destinée à tester votre configuration. Pour générer plusieurs pages, utilisez l'endpoint Bulk Generation qui utilise l'API Claude Batch.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| pseo_id | number | requis | ID du PSEO (site web) pour lequel générer du contenu |
| post_count | number | requis | Nombre de pages à générer. Doit être 1 (limite de test) |
{
"pseo_id": 42,
"post_count": 1
}{
"success": true,
"message": "Generation started in background",
"generation_id": 7,
"status": "pending",
"timestamp": "2026-03-10T12:00:00.000Z"
}Limite de génération simultanée
Une seule génération active par PSEO est autorisée à la fois. Si une tâche avec le statut en attente ou en cours existe déjà, la requête retournera 409 Conflict.
Génération en masse
https://panel.seoauto.ai/pseo-endpoints/trigger/bulk-generationDémarre une tâche de génération de contenu IA en masse via l'API Claude Batch. Prend en charge n'importe quel nombre de pages. Les tokens sont déduits au taux token_per_batch_page.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| pseo_id | number | requis | ID du PSEO (site web) pour lequel générer du contenu |
| post_count | number | requis | Nombre de pages à générer (entier positif, sans limite supérieure) |
{
"pseo_id": 42,
"post_count": 100
}{
"success": true,
"message": "Bulk generation started in background",
"generation_id": 12,
"status": "pending",
"timestamp": "2026-03-10T12:00:00.000Z"
}Limite de génération simultanée
Une seule génération active par PSEO est autorisée à la fois. Si une tâche avec le statut en attente ou en cours existe déjà, la requête retournera 409 Conflict.
Obtenir la génération
https://panel.seoauto.ai/pseo-endpoints/generations/:idRenvoie l'enregistrement de statut complet pour une seule tâche de génération. Interrogez ce point de terminaison après avoir démarré une génération pour suivre la progression.
Paramètres de chemin
| Champ | Type | Requis | Description |
|---|---|---|---|
| id | number | requis | Le generation_id retourné par le point de terminaison de démarrage de génération |
{
"success": true,
"data": {
"id": 7,
"pseo_id": 42,
"status": "running", // pending | running | completed | failed
"requested_count": 10,
"created_count": 4,
"failed_count": 0,
"failed_routes": [],
"date_created": "2026-03-10T12:00:00.000Z",
"date_updated": "2026-03-10T12:01:30.000Z",
"date_completed": null
},
"timestamp": "2026-03-10T12:01:35.000Z"
}| Statut | Signification |
|---|---|
| pending | Tâche en file d'attente, pas encore démarrée |
| running | L'IA génère activement des pages |
| completed | Toutes les pages générées avec succès |
| failed | Tâche arrêtée en raison d'une erreur critique ; vérifier failed_routes |
Lister les générations
https://panel.seoauto.ai/pseo-endpoints/generations?pseo_id=:pseo_idRenvoie une liste des 50 tâches de génération les plus récentes pour un PSEO donné, triées par ordre décroissant. Ne renvoie que les tâches appartenant à l'utilisateur authentifié.
Paramètres de requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| pseo_id | number | requis | L'ID du PSEO (site web) pour lequel lister les générations |
GET https://panel.seoauto.ai/pseo-endpoints/generations?pseo_id=42
Authorization: Bearer <token>{
"success": true,
"data": [
{
"id": 8,
"pseo_id": 42,
"status": "completed",
"requested_count": 5,
"created_count": 5,
"failed_count": 0,
"failed_routes": [],
"date_created": "2026-03-10T13:00:00.000Z",
"date_completed": "2026-03-10T13:04:21.000Z"
},
{ "id": 7, "status": "completed", "..." : "..." }
],
"timestamp": "2026-03-10T14:00:00.000Z"
}Générer le sitemap
https://panel.seoauto.ai/pseo-endpoints/generate/main-jsonUtilise l'IA pour générer un plan de contenu structuré (main_json) pour le PSEO — essentiellement une liste de routes de pages, de titres et de métadonnées qui servira de modèle pour la génération de contenu. Les tokens sont déduits au taux token_per_main_json.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| pseo_id | number | requis | ID du PSEO cible |
| language_code | string | requis | Langue pour le plan de contenu, ex. en-US, tr-TR, de-DE |
| description | string | requis | Description de l'entreprise (150–1000 caractères). Doit couvrir le secteur, les services, le public cible et les objectifs. |
{
"pseo_id": 42,
"language_code": "en-US",
"description": "We sell premium handmade leather goods including bags, wallets, and belts targeting fashion-conscious adults aged 25–45 in the United States. Our USP is ethically sourced full-grain leather with lifetime repair guarantee."
}{
"success": true,
"message": "main_json generated and saved successfully",
"data": {
"main_json": {
"pages": [
{ "route": "/leather-bags", "title": "Premium Leather Bags", "priority": 1 },
{ "route": "/leather-wallets", "title": "Handmade Leather Wallets", "priority": 2 }
]
},
"total_pages": 28
},
"timestamp": "2026-03-10T12:00:00.000Z"
}Limite de génération simultanée
Une seule génération main_json par utilisateur peut s'exécuter à la fois. Les requêtes simultanées retournent 409 Conflict.
Récupérer le sitemap
https://panel.seoauto.ai/pseo-endpoints/fetch-sitemap?pseo_id=:pseo_idRécupère et analyse le sitemap du site web associé à un PSEO. Essaie automatiquement plusieurs chemins de sitemap courants (y compris les index de sitemap). Renvoie une liste plate de toutes les URL de pages trouvées. Utile pour importer la structure d'URL d'un site web existant.
Paramètres de requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| pseo_id | number | requis | ID PSEO — le sitemap est récupéré depuis le website_url stocké dans cet enregistrement |
Chemins de sitemap essayés (dans l'ordre) : /sitemap.xml → /sitemap_index.xml → /wp-sitemap.xml → /sitemap
GET https://panel.seoauto.ai/pseo-endpoints/fetch-sitemap?pseo_id=42
Authorization: Bearer <token>{
"success": true,
"urls": [
"https://example.com/",
"https://example.com/leather-bags",
"https://example.com/leather-wallets",
"https://example.com/about"
]
}Renvoie un tableau urls vide si aucun sitemap n est trouve ou si le site est inaccessible. Ne genere pas d erreur.
Codes d'erreur
Toutes les réponses d'erreur suivent la même structure :
{
"success": false,
"error": "Human-readable error message",
"timestamp": "2026-03-10T12:00:00.000Z"
}| Statut | Signification |
|---|---|
| 400Bad Request | Paramètres de requête manquants ou invalides |
| 401Unauthorized | Token Bearer manquant ou invalide |
| 402Payment Required | Solde de tokens insuffisant pour l'opération demandée |
| 403Forbidden | L'utilisateur authentifié n'est pas le propriétaire de la ressource demandée |
| 404Not Found | L'enregistrement PSEO ou de génération n'existe pas |
| 409Conflict | Une tâche de génération simultanée est déjà active |
| 500Internal Server Error | Erreur inattendue côté serveur ; vérifier les journaux d'extension |
