Documentación de API

    Esta guía explica cómo llamar a SEOforGPT por HTTP. Usa una clave de API para servidores y scripts, o un token de sesión cuando llames desde el navegador.

    Iniciar sesiónDespués de iniciar sesión, abre el menú de usuario en la esquina superior derecha y elige API Keys para crear y gestionar claves.

    Resumen

    La API Pública v1 es la superficie HTTP para scripts, jobs de CI, herramientas internas y agentes que necesitan listar proyectos, ejecutar flujos de visibilidad, recuperar informes, generar contenido o gestionar claves de API.

    Cada solicitud queda vinculada al usuario autenticado y respeta el acceso del plan, la cuota y los límites por ruta. Para uso en servidor, prefiere una clave de API. Para llamadas desde navegador o app, usa un JWT de sesión autenticada.

    https://www.seoforgpt.io/api/v1

    Úsalo cuando

    Quieres una API HTTP estable para automatización, jobs en segundo plano, herramientas CLI o flujos con agentes.

    Envelope de éxito

    Las respuestas correctas usan { data, meta }.meta.billingincluye pistas de plan y cuota.

    Archivo OpenAPI (opcional)

    Si usas herramientas que importan OpenAPI, como generadores de código o clientes de API, abre openapi.json en una nueva pestaña. Lista las mismas rutas de esta página en JSON. Las herramientas en la nube que deben recuperar el archivo desde internet público, como algunos Custom GPTs, deben usar https://www.seoforgpt.io/openapi.json. Si eres nuevo en APIs, puedes omitir OpenAPI y seguir las secciones siguientes. Esta página es la guía principal.

    Obtener una clave de API

    Inicia sesión. Después abre el menú de usuario en la esquina superior derecha y elige API Keys para crear una clave. Las claves solo se muestran una vez al crearlas. Puedes tener hasta 10 claves.

    Iniciar sesión para gestionar claves

    Claude: Para herramientas de chat en lugar de HTTP directo, usa el conector alojado conector MCP en /mcp (OAuth). Eso da al asistente las mismas acciones de producto que la app, no la forma REST documentada aquí.

    Otros asistentes: Si un producto admite una URL MCP remota, es el mismo endpoint /mcp de nuestra docs MCP. La compatibilidad y configuración varían por proveedor. Si solo tienes acciones HTTP, conecta una acción basada en OpenAPI: usa el esquema público https://www.seoforgpt.io/openapi.json (vista previa openapi.json en una nueva pestaña) con Bearer y una clave de API de usuario (sgpt_…). Más ayuda: Desarrolladores, Otros asistentes (MCP).

    Autenticación

    Envía un token bearer en el encabezado de la solicitud. Usa una clave de API para scripts y automatización de servidor. Usa un JWT al llamar desde una sesión autenticada en el navegador o al crear, listar o eliminar claves de API.

    Encabezado

    Authorization: Bearer <your_api_key_or_jwt>
    • Las claves de API tienen formato sgpt_... y son la opción correcta para CI, cron y agentes.
    • Los JWT vienen de una sesión de usuario autenticada y son obligatorios para gestionar /keys.

    Inicio rápido

    Si solo necesitas un flujo fiable, sigue este orden: lista proyectos, elige un proyecto, ejecuta un flujo de visibilidad y recupera el informe.

    1. 1. Listar proyectos

      Empieza con GET /projects y elige el proyecto con el que quieres trabajar.

    2. 2. Ejecutar visibilidad

      Usa POST /analyze/project para los prompts guardados del proyecto, o POST /analyze/custom para prompts y marcas ad hoc.

    3. 3. Recuperar el informe

      Usa GET /reports/:id con el data.id devuelto o GET /reports/latest si solo necesitas el informe más reciente de un proyecto.

    Flujos de visibilidad

    Estas rutas ejecutan los mismos flujos de visibilidad de marca usados dentro de la app. Son la API central para monitorización recurrente y experimentos puntuales de visibilidad.

    Todas las rutas de visibilidad consumen cuota de visibilidad. Usa el data.id devuelto con una ruta de informe. En ejecuciones asíncronas, consulta hasta que el estado devuelto sea terminal.

    POST /analyze/project (recomendado)

    Úsalo cuando quieras los prompts guardados del proyecto en SEOforGPT. Cuerpo: solo projectId. Devuelve 202 mientras se ejecutan jobs multiproveedor, o 200 cuando el informe ya está completo.

    curl --request POST \
      --url https://www.seoforgpt.io/api/v1/analyze/project \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN" \
      --header "Content-Type: application/json" \
      --data '{"projectId":"<uuid>"}'

    POST /analyze/custom

    Úsalo para conjuntos de prompts ad hoc o una marca distinta de la guardada en la app. Cuerpo: projectId, brand, prompts (strings u objetos { prompt }), más competitors opcional. Máximo 20 prompts. Devuelve HTTP 200 con un id de informe de tipo visibility_analysis_api.

    curl --request POST \
      --url https://www.seoforgpt.io/api/v1/analyze/custom \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN" \
      --header "Content-Type: application/json" \
      --data '{"projectId":"<uuid>","brand":"YourBrand","prompts":["query 1","query 2"]}'

    POST /analyze

    Dispatcher heredado. Sigue soportado, pero las nuevas integraciones deberían preferir las rutas explícitas anteriores. Acepta testId, projectId + brand + prompts, projectId + brand + crawlRecordId, o solo projectId.

    Informes

    Las rutas de informes permiten recuperar el informe más reciente de un proyecto o un informe específico por id. Los informes de visibilidad admiten tres vistas: raw, summary y full.

    • raw devuelve filas normalizadas de bajo nivel.
    • summary es el informe compacto predeterminado.
    • full devuelve el informe más rico, estilo dashboard, con tendencias, fuentes y brechas.

    GET /reports/latest

    Úsalo cuando no quieras controlar tú mismo un id de informe. Parámetros de query: projectId obligatorio, source=main|custom opcional, view=raw|summary|full opcional.

    curl --request GET \
      --url "https://www.seoforgpt.io/api/v1/reports/latest?projectId=<uuid>&source=main&view=full" \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN"

    GET /reports/:id

    Recupera un id de informe específico. El data.type devuelto es visibility_analysis, visibility_analysis_api o generated_content. Los informes de visibilidad aceptan el mismo parámetro view.

    curl --request GET \
      --url "https://www.seoforgpt.io/api/v1/reports/REPORT_ID_FROM_PREVIOUS_STEP?view=full" \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN"

    Después de 202 desde /analyze/project, consulta esta ruta hasta que data.status sea terminal.

    GET /reports/:id/provider-answer

    Usa esta ruta de profundización para recuperar una respuesta bruta de proveedor y citas después de leer un informe full seguro para agentes con answer_detail=summary.

    curl --request GET \
      --url "https://www.seoforgpt.io/api/v1/reports/REPORT_ID/provider-answer?promptKey=<prompt>&provider=openai" \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN"

    Helpers seguros para agentes

    Estas rutas componen las nuevas herramientas MCP y devuelven respuestas compactas para asistentes. Úsalas cuando necesites tendencia, detalle de competidor, brief de cliente o acciones de agencia sin descargar un informe completo.

    Method
    Route
    Uso
    GET
    /projects/:projectId/visibility-trends
    Tendencia compacta de score de visibilidad, tasa de aparición y conteo de competidores monitoreados. El rank queda oculto.
    GET
    /projects/:projectId/competitors/:competitor
    Detalle compacto de un competidor, con amenaza basada en menciones y brechas de visibilidad.
    GET
    /projects/:projectId/client-brief
    Brief para agencia con tendencia, competidor, dominios citados, prompts perdidos y tres próximas acciones.
    POST
    /projects/:projectId/share-links
    Crea un enlace público de informe. El cuerpo acepta timeframe, expiry, presenterName, logoUrl y summary.
    GET
    /client-workspaces
    Lista workspaces de clientes y pitches para cuentas de agencia.
    GET
    /account-status
    Devuelve plan, cuota, estado del workspace y acceso a funciones.
    POST
    /projects/:projectId/publish-to-cms
    Publica un contenido generado existente en el CMS conectado.

    Generación de contenido

    Usa POST /generate-content cuando quieras que SEOforGPT cree un borrador desde el contexto del proyecto. Esta ruta consume cuota de contenido y devuelve un id de informe que puedes recuperar después.

    POST /generate-content

    Cuerpo: projectId, platform (blog, linkedin, thread), topic, más metadata y promptType opcionales.

    curl --request POST \
      --url https://www.seoforgpt.io/api/v1/generate-content \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN" \
      --header "Content-Type: application/json" \
      --data '{"projectId":"<uuid>","platform":"blog","topic":"How to measure AI search visibility"}'
    • La respuesta incluye data.id para GET /reports/:id.
    • También devuelve context_quality y context_message para saber si el borrador usó análisis de sitio completado.

    Preparación y asistentes de prompts

    Estas rutas son útiles cuando quieres salida de preparación del sitio o sugerencias de prompts en automatización. Son rutas reales de la API pública aunque sean más avanzadas que los flujos principales de visibilidad y contenido.

    POST /readiness

    Ejecuta el mismo flujo de preparación del sitio que la app. Cuerpo: projectId obligatorio, forceRerun opcional y sustitución url opcional. La respuesta incluye data.id, data.cached y data.result.

    curl --request POST \
      --url https://www.seoforgpt.io/api/v1/readiness \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN" \
      --header "Content-Type: application/json" \
      --data '{"projectId":"<uuid>","forceRerun":false}'

    POST /suggest-prompts

    Genera sugerencias de prompts desde un crawl existente. Cuerpo: crawlRecordId obligatorio, projectId opcional, brand opcional y competitors opcional. La respuesta incluye prompt_count y puede incluir un id de test guardado en report_url.

    curl --request POST \
      --url https://www.seoforgpt.io/api/v1/suggest-prompts \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN" \
      --header "Content-Type: application/json" \
      --data '{"crawlRecordId":"<uuid>","projectId":"<uuid>"}'

    Claves de API

    Las rutas de gestión de claves requieren un JWT de una sesión autenticada, no una clave de API. El valor secreto real de la clave solo se devuelve una vez, al crearla.

    POST /keys

    Crea una clave de API. Cuerpo: name opcional y expires_at opcional. Devuelve HTTP 201 con data.key.

    curl --request POST \
      --url https://www.seoforgpt.io/api/v1/keys \
      --header "Authorization: Bearer $SEOFORGPT_TOKEN" \
      --header "Content-Type: application/json" \
      --data '{"name":"CI automation","expires_at":"2026-06-01T00:00:00.000Z"}'

    GET /keys

    Lista tus claves de API con prefijo, nombre, fecha de creación, último uso y caducidad.

    DELETE /keys/:id

    Elimina una clave de API propiedad del usuario autenticado.

    Errores y límites

    Los errores propios de la API devuelven un envelope predecible. Las respuestas con límite de tasa también incluyen encabezados de reintento como Retry-After y X-RateLimit-*.

    {
      "error": {
        "code": "BILLING_REQUIRED",
        "message": "content quota exceeded",
        "details": {
          "remaining": 0
        },
        "request_id": "0d2c2e3d-5f04-43e2-a8fb-f5d0b92e7ab1"
      }
    }
    • 400: Entrada no válida
    • 401: Token ausente o no válido
    • 402: Bloqueo de facturación o cuota
    • 404: Recurso no encontrado
    • 409: Conflicto (por ejemplo, límite de claves de API alcanzado)
    • 429: Límite de tasa excedido
    • 500: Error del servidor