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)

POSThttps://panel.seoauto.ai/auth/login
json — request body
{
  "email": "you@example.com",
  "password": "••••••••"
}
json — response
{
  "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

http header
Authorization: Bearer <your_access_token>

Vérification de santé

GEThttps://panel.seoauto.ai/pseo-endpoints/

Renvoie le statut de l'extension et une liste des points de terminaison disponibles. Aucune authentification requise.

json — response 200
{
  "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

POSThttps://panel.seoauto.ai/pseo-endpoints/pseo

Cré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

ChampTypeRequisDescription
website_urlstringrequisURL complète du site web cible (ex. https://example.com)
master_promptstringrequisInstructions qui guident l'IA lors de la génération de contenu pour ce site web
website_softwarestringoptionnelIdentifiant CMS/plateforme. Par défaut "wordpress"
json — request body
{
  "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."
}
json — response 201
{
  "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)

POSThttps://panel.seoauto.ai/pseo-endpoints/trigger/on-demand-generation

Dé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

ChampTypeRequisDescription
pseo_idnumberrequisID du PSEO (site web) pour lequel générer du contenu
post_countnumberrequisNombre de pages à générer. Doit être 1 (limite de test)
json — request body
{
  "pseo_id": 42,
  "post_count": 1
}
json — response 202
{
  "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

POSThttps://panel.seoauto.ai/pseo-endpoints/trigger/bulk-generation

Dé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

ChampTypeRequisDescription
pseo_idnumberrequisID du PSEO (site web) pour lequel générer du contenu
post_countnumberrequisNombre de pages à générer (entier positif, sans limite supérieure)
json — request body
{
  "pseo_id": 42,
  "post_count": 100
}
json — response 202
{
  "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

GEThttps://panel.seoauto.ai/pseo-endpoints/generations/:id

Renvoie 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

ChampTypeRequisDescription
idnumberrequisLe generation_id retourné par le point de terminaison de démarrage de génération
json — response 200
{
  "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"
}
StatutSignification
pendingTâche en file d'attente, pas encore démarrée
runningL'IA génère activement des pages
completedToutes les pages générées avec succès
failedTâche arrêtée en raison d'une erreur critique ; vérifier failed_routes

Lister les générations

GEThttps://panel.seoauto.ai/pseo-endpoints/generations?pseo_id=:pseo_id

Renvoie 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

ChampTypeRequisDescription
pseo_idnumberrequisL'ID du PSEO (site web) pour lequel lister les générations
http — example request
GET https://panel.seoauto.ai/pseo-endpoints/generations?pseo_id=42
Authorization: Bearer <token>
json — response 200
{
  "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

POSThttps://panel.seoauto.ai/pseo-endpoints/generate/main-json

Utilise 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

ChampTypeRequisDescription
pseo_idnumberrequisID du PSEO cible
language_codestringrequisLangue pour le plan de contenu, ex. en-US, tr-TR, de-DE
descriptionstringrequisDescription de l'entreprise (150–1000 caractères). Doit couvrir le secteur, les services, le public cible et les objectifs.
json — request body
{
  "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."
}
json — response 200
{
  "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

GEThttps://panel.seoauto.ai/pseo-endpoints/fetch-sitemap?pseo_id=:pseo_id

Ré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

ChampTypeRequisDescription
pseo_idnumberrequisID 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

http — example request
GET https://panel.seoauto.ai/pseo-endpoints/fetch-sitemap?pseo_id=42
Authorization: Bearer <token>
json — response 200
{
  "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 :

json — error shape
{
  "success": false,
  "error": "Human-readable error message",
  "timestamp": "2026-03-10T12:00:00.000Z"
}
StatutSignification
400Bad RequestParamètres de requête manquants ou invalides
401UnauthorizedToken Bearer manquant ou invalide
402Payment RequiredSolde de tokens insuffisant pour l'opération demandée
403ForbiddenL'utilisateur authentifié n'est pas le propriétaire de la ressource demandée
404Not FoundL'enregistrement PSEO ou de génération n'existe pas
409ConflictUne tâche de génération simultanée est déjà active
500Internal Server ErrorErreur inattendue côté serveur ; vérifier les journaux d'extension
Référence API | SeoAuto.ai | SeoAuto.ai