API de Should I Bid

Tus análisis de palabras clave, desde tus herramientas.

El mismo análisis que la app, controlado desde tus scripts y tus automatizaciones: ideas de palabras clave, estimación de coste, lanzamiento y resultados, con las mismas reglas de créditos y las mismas salvaguardas.

API REST · JSON · OpenAPI 3.1 · incluida en todos los planes de pago

Crear una clave de API

Empezar

Tu primera llamada en tres pasos.

Una clave, una cabecera, una petición.

  1. Clave — Crea una clave de API

    En Should I Bid › Integraciones › Crear clave. Marca «Permitir lanzar análisis» si tu script debe lanzar análisis. La clave solo se muestra una vez; de ella únicamente se guarda la huella.

  2. Cabecera — Envíala en la cabecera

    Cada petición lleva la cabecera Authorization: Bearer sib_live_… Se rechaza una clave puesta en la URL: acabaría en los registros.

  3. Llamada — Haz tu primera llamada

    GET /api/v1/account devuelve tu saldo, tu plan, tus empresas y los identificadores de sus productos.

curl -H "Authorization: Bearer $SIB_API_KEY" https://shouldibid.app/api/v1/account

Recorrido tipo

De las ideas a los veredictos, en cuatro llamadas.

El recorrido completo de Vision: generar ideas para un producto, estimar su coste, lanzarlas y leer los resultados.

  1. Genera ideas (gratis)

    Hasta 3 fuentes: productos de la empresa o páginas web. La respuesta incluye las ideas nuevas, las ya analizadas con su puntuación y un suggestion_batch_id válido durante 24 horas para un único lanzamiento.

    POST /api/v1/suggestions
    {"sources":[{"product_id":"…"}]}
  2. Pide una estimación

    No se lanza nada: lista depurada, créditos que se reservarán, saldo disponible, límite del día y posibles bloqueos.

    POST /api/v1/analyses/estimate
    {"suggestion_batch_id":"…"}
  3. Lanza el análisis

    max_credits es obligatorio: es el importe máximo que aceptas. En un lote de Vision, solo se descuentan las palabras clave recomendadas (puntuación de 50 o más). Respuesta 201 con el identificador del análisis.

    POST /api/v1/analyses
    {"suggestion_batch_id":"…","max_credits":20}
  4. Sigue el análisis y lee los resultados

    Un análisis tarda de 3 a 10 minutos: consúltalo cada 30 a 60 segundos hasta que termine y lee después los veredictos Pujar, Probar o Descartar, ordenados por puntuación.

    GET /api/v1/analyses/{analysis_id}

Referencia

Todas las rutas de la API v1.

URL base: https://shouldibid.app/api/v1. Respuestas en JSON, nunca almacenadas en caché, con una cabecera X-Request-Id que debes indicar al soporte.

MétodoRutaFunción
GET/api/v1/accountCuenta: plan, créditos disponibles, límite del día, empresas y productos.
GET/api/v1/analysesHistorial de análisis, con filtros (estado, empresa, nombre) y paginación.
POST/api/v1/analysesLanza un análisis (consume créditos); max_credits obligatorio.
POST/api/v1/analyses/estimateEstimación de coste sin lanzar nada: créditos que se reservarán, saldo, límite, bloqueos.
GET/api/v1/analyses/{analysis_id}Progreso y resultados de un análisis, con las palabras clave ordenadas por puntuación.
POST/api/v1/analyses/{analysis_id}/cancelDetiene un análisis en curso; las palabras clave sin analizar no se descuentan.
GET/api/v1/analyses/{analysis_id}/keywords/{keyword_id}Detalle de una palabra clave: puntuación, decisión, subpuntuaciones, justificación, anunciantes.
POST/api/v1/suggestionsIdeas de palabras clave de Vision a partir de 1 a 3 fuentes (gratis).
POST/api/v1/companiesCrea la ficha de una cuenta de empresa que aún no tiene ninguna, o un nuevo cliente de agencia (se rechazan los duplicados).
GET/api/v1/companies/{company_id}Ficha de empresa completa (textos, competidores, productos con todos sus campos) y reglas de modificación de la cuenta.
POST/api/v1/companies/{company_id}Modifica solo los campos enviados (null = vaciar); no se sobrescribe nada más.
POST/api/v1/companies/{company_id}/deleteElimina un cliente de agencia que no tiene ningún análisis. La ficha de una cuenta de empresa no se puede eliminar.
POST/api/v1/companies/{company_id}/productsAñade un producto a una ficha (20 como máximo, se rechaza un nombre repetido).
POST/api/v1/companies/{company_id}/products/{product_id}Modifica solo los campos enviados del producto.
POST/api/v1/companies/{company_id}/products/{product_id}/deleteElimina un producto (se rechaza mientras haya un análisis en curso que lo use); los análisis terminados conservan sus resultados.
GET/api/v1/companies/{company_id}/advertisersCompetidores: anunciantes vistos en las palabras clave analizadas de una ficha (cuota, primer anuncio, posición).
GET/api/v1/companies/{company_id}/competitor-gapCompetidores: diferencia con los competidores declarados (solo ellos, tú y ellos, solo tú).
GET/api/v1/companies/{company_id}/brand-watchCompetidores: quién puja por las búsquedas de tu marca, con los anuncios que la citan en primer lugar.
GET/api/v1/analyses/{analysis_id}/advertisersCompetidores de un análisis: cuota de voz en sus palabras clave, con su decisión pujar / probar / descartar.
GET/api/v1/advertisersEncuentra el dominio de un anunciante a partir de sus primeras letras.
GET/api/v1/advertisers/{domain}Ficha de un anunciante: sus búsquedas, posiciones y último anuncio, página por página.
GET/api/v1/advertisers/{domain}/historyHistorial de los anuncios de un anunciante en una búsqueda.
GET/api/v1/openapi.jsonEsta referencia en formato OpenAPI 3.1 (pública, sin clave).

Salvaguardas

Las mismas reglas que la app.

Pensadas para que un script nunca pueda gastar más de lo previsto.

Permisos por clave

Solo lectura por defecto; lanzar análisis y modificar fichas son dos casillas que marcas expresamente en la clave. Máximo 10 claves activas, con revocación inmediata.

Límite diario

Máximo 200 créditos cada 24 horas para el conjunto de los lanzamientos hechos fuera de la app, ajustable en Integraciones (0 = ningún lanzamiento).

5 análisis en paralelo

Hasta 5 análisis lanzados por la API o por Claude pueden ejecutarse a la vez; se libera un hueco en cuanto todas las palabras clave de un análisis tienen su resultado. Si se supera, el lanzamiento recibe un error 409 que lista los análisis en curso.

200 palabras clave por lanzamiento

Por encima de ese número, se rechaza la petición con la lista de las palabras clave sobrantes: no se recorta nada en silencio.

Límites de uso

300 peticiones por minuto en total, de ellas 120 lecturas y 10 escrituras por minuto; sugerencias: 5 por minuto y 30 al día, por cuenta. Cada respuesta indica la regla y lo que queda en las cabeceras RateLimit-Policy y RateLimit; un rechazo 429 indica el tiempo de espera en Retry-After.

Aislamiento

Una clave solo ve los análisis y las empresas de su cuenta; «no existe» y «no es tuyo» devuelven el mismo error 404.

Errores

Códigos estables.

Cada error lleva un código fijo, un mensaje en inglés y el identificador de la petición.

Formato

{ "error": { "code": "…", "message": "…", "details": { }, "request_id": "…" } }
CódigoHTTPSignificado
unauthorized401Clave ausente, no válida o revocada.
forbidden403Cuenta sin plan de pago (details.reason = plan_required, con el enlace a los planes) o acceso aún no abierto.
insufficient_scope403Clave de solo lectura para una acción de lanzamiento, o sin el permiso «Modificar fichas» para escribir en una ficha.
api_disabled503API cerrada temporalmente.
not_found404Recurso inexistente o de otra cuenta.
method_not_allowed405Método no permitido (consulta la cabecera Allow).
invalid_request422Parámetros no válidos (detalle en details.issues).
payload_too_large413Cuerpo de la petición superior a 256 KB.
rate_limited429Demasiadas peticiones (consulta la cabecera Retry-After).
insufficient_credits402Saldo de créditos insuficiente.
daily_cap_reached429Límite diario alcanzado.
concurrency_limit_reached409Límite de análisis en paralelo alcanzado (details.active_analyses lista los que están en curso).
too_many_keywords422Más de 200 palabras clave en el lanzamiento.
max_credits_exceeded422El coste supera max_credits.
company_required422Hay varias empresas: indica company_id.
suggestion_batch_invalid422Lote de sugerencias desconocido, caducado o ya utilizado.
conflict409Conflicto con el estado de la ficha (details.reason): ficha ya creada, cliente o producto duplicado, cliente con análisis, producto con un análisis en curso, modificación simultánea.
limit_reached422Límite alcanzado: 20 productos por ficha como máximo.
unavailable503Servicio no disponible de forma temporal: vuelve a intentarlo.
internal500Error inesperado: comunica el request_id al soporte.

Versiones

Una API que no cambia sin avisar.

La versión va en la URL (/api/v1): lo que funciona hoy seguirá funcionando.

La v1 solo crece

En la v1 solo se añade (rutas nuevas, parámetros opcionales nuevos, campos nuevos en las respuestas); no se elimina ni se renombra nada. Tu código debe ignorar los campos que no conoce.

Incompatible = nueva versión

Un cambio que rompería un script existente llega en una versión nueva (/api/v2). La v1 sigue en servicio al menos 6 meses después de anunciar la nueva versión.

Obsolescencia anunciada

Antes de retirar nada, la ruta o el campo se marca como deprecated en la especificación OpenAPI, sus respuestas llevan las cabeceras Deprecation y Sunset con las fechas, y el cambio se anuncia en esta página.

Especificación OpenAPI

Descripción completa, legible por máquinas: impórtala en Postman, Insomnia o un generador de clientes.

https://shouldibid.app/api/v1/openapi.json

Conecta Should I Bid a tus automatizaciones.

Crear una clave de API

Incluida en todos los planes de pago · 1 crédito = 1 palabra clave analizada