Análisis de audiencia
Indica un tema o el sitio web de una marca y recibe lo que la gente real dice sobre ello en comentarios y debates públicos: las palabras que usa, las preguntas que hace, lo que espera de un producto, en qué no está de acuerdo con los creadores, qué falta en el contenido existente y qué temas están creciendo. Cada hallazgo se cuenta en hilos independientes y se enlaza con los comentarios de los que procede, para que tu equipo o tu propio modelo de IA puedan comprobarlo.
Un trabajo de investigación lee una muestra de hasta 500 comentarios aceptados y la convierte en los nueve productos (vistas distintas de los mismos datos) que se indican a continuación. Cada trabajo incluye los nueve; puedes indicar el que más te interesa.
Valor de products | Qué recibes |
|---|---|
audience_keywords | frases que usa la audiencia, agrupadas por significado (frecuencia en comentarios, no volumen de búsqueda) |
audience_questions | preguntas recurrentes con sus variantes, la etapa del embudo y si los creadores ya las responden |
website_requirements | lo que un sitio web debe decir o mostrar: funciones, integraciones, precios, pruebas, objeciones; cada punto marcado como must, should o could |
comparison_intelligence | cómo compara la audiencia los productos mencionados: criterios, motivos para cambiar, carencias de confianza |
content_brief_from_audience | un brief de contenido: título provisional, secciones, preguntas que responder, objeciones, FAQ, afirmaciones que evitar |
audience_content_gaps | demanda que las respuestas existentes cubren mal, con el material que conviene crear |
creator_vs_audience_gap | dónde los comentaristas discrepan de lo que afirman los creadores, lo cuestionan o le añaden condiciones |
buyer_expectations | lo que los compradores dan por hecho (must_have) y lo que diferencia a un producto (differentiator) |
trend_from_audience | temas rising, stable o declining, normalizados por cada 1000 hilos relevantes |
El análisis de audiencia se activa para una clave bajo petición: escribe a support@omev.be. Los trabajos se cobran del saldo habitual de la clave.
Precio
| Qué | Precio |
|---|---|
| Un trabajo de investigación, con los nueve productos incluidos | $0.99 |
El precio se cobra una vez, cuando jobs/create acepta el trabajo. Un trabajo que termina en
NO_DATA (no hay suficiente debate público relevante) es gratuito; un trabajo
COMPLETED_PARTIAL se cobra completo. Repetir jobs/create con el mismo idempotency_key
devuelve el mismo trabajo y no se vuelve a cobrar. estimate, jobs/get, jobs/result y
jobs/cancel son gratuitos.
Comprueba la petición primero
estimate valida el cuerpo, muestra el alcance normalizado y el precio, y no inicia ningún
trabajo. Acepta el mismo cuerpo que jobs/create; aquí idempotency_key es opcional.
curl -sS https://llmapi.omev.be/v1/audience-intelligence/estimate \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_version": "1.2",
"products": ["audience_questions", "buyer_expectations"],
"topic": {"name": "waterproof sneakers for commuting"},
"audience": {"description": "city commuters who walk in the rain"},
"scope": {"platforms": ["youtube", "reddit"], "languages": ["en"], "markets": ["US"]}
}'
{
"request_id": "…",
"supported": true,
"normalized_scope": {
"markets": ["US"], "languages": ["en"],
"from": "2026-03-31T10:00:00Z", "to": "2026-09-27T10:00:00Z",
"platforms": ["reddit", "youtube"]
},
"sample": {"target_accepted_comments": 500, "consent_required": false},
"quote": {
"customer_cost_usd": "0.99000000", "currency": "USD", "tier": "single",
"products": ["audience_content_gaps", "audience_keywords", "audience_questions", "…"],
"valid_until": "2026-09-27T11:00:00Z"
},
"estimated_completion_seconds": {"min": 20, "typical": 240, "max": 1800},
"warnings": []
}
quote.customer_cost_usd es el precio del trabajo. supported: false o una nota en
warnings significa que una fuente de datos no está disponible temporalmente: vuelve a
intentarlo más tarde.
Iniciar un trabajo de investigación
curl -sS https://llmapi.omev.be/v1/audience-intelligence/jobs/create \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema_version": "1.2",
"idempotency_key": "acme-17-sneakers-2026-09",
"products": ["audience_questions", "buyer_expectations"],
"topic": {"name": "waterproof sneakers for commuting"},
"audience": {"description": "city commuters who walk in the rain"},
"scope": {"platforms": ["youtube", "reddit"], "languages": ["en"], "markets": ["US"]}
}'
| Campo | Requerido | Significado |
|---|---|---|
schema_version | sí | 1.0, 1.1 o 1.2; usa 1.2 |
idempotency_key | sí para jobs/create | 8–200 caracteres; repetirla devuelve el mismo trabajo en lugar de iniciar uno nuevo |
product o products | no | el producto que más te interesa o una lista de productos de la tabla anterior; como máximo uno de los dos campos. El trabajo genera los nueve en cualquier caso |
topic.name | name o website_url | el tema, 3–300 caracteres |
topic.website_url | name o website_url | el sitio de una marca; el nombre de la marca se lee del sitio |
topic.description | no | hasta 2000 caracteres que precisan el tema |
topic.include_terms, topic.exclude_terms | no | hasta 50 términos cada uno para ampliar o acotar lo que se considera relevante |
audience.description | no | a quién quieres escuchar, 3–2000 caracteres |
audience.roles, audience.company_size | no | pistas adicionales para audiencias profesionales |
scope.platforms | no | cualquiera de youtube, reddit, linkedin, tiktok, instagram, threads, facebook, twitter, web |
scope.languages | no | idiomas de los comentarios, por defecto ["en"], hasta 10 |
scope.markets | no | códigos de país como ["US"]; vacío significa todo el mundo |
scope.period | no | {"days": 7…365} (por defecto 180) o {"from": "…Z", "to": "…Z"} en UTC, con 7–365 días de diferencia |
entities | no | productos o empresas que comparar: {"name": "…", "kind": "product", "aliases": ["…"]}; sin ellos, comparison_intelligence usa las comparaciones encontradas en los comentarios |
creator_seeds | no | canales o comunidades que leer: {"platform": "youtube", "url": "https://…"}; una comunidad de Reddit es https://www.reddit.com/r/<name>, un solo hilo de Reddit es la URL del hilo con "kind": "publication" |
source_mode | no | discover (por defecto) encuentra las fuentes por sí mismo; seeds_only lee solo tus creator_seeds |
data_mode | no | refresh_if_needed (por defecto) reutiliza datos recientes del mismo alcance y los completa; fresh recopila de nuevo; corpus_only usa solo los datos ya recopilados para tu cuenta |
output | no | max_signals (1–100, por defecto 30), max_evidence_per_signal (1–20, por defecto 5), include_short_quotes e include_markdown (ambos true por defecto) |
limits | no | max_creators (por defecto 30, hasta 100), max_publications (por defecto 300, hasta 1000), max_comments (por defecto 15 000, hasta 50 000), deadline_seconds (por defecto 1800, 60–3600) |
Valores por defecto importantes:
- Con solo
topic.website_url, el trabajo lee todas las plataformas y también foros y blogs independientes. - Con
topic.namey sinscope.platforms, el trabajo lee solo YouTube. Indica las plataformas que necesitas.
La respuesta es 202 con el trabajo:
{
"request_id": "…",
"job": {"id": "aij_…", "status": "QUEUED", "stage": "VALIDATE", "progress": 0,
"created_at": "…", "deadline_at": "…", "currency": "USD", "warnings": []},
"idempotent_replay": false,
"poll_after_seconds": 3
}
Seguir el trabajo
Un trabajo suele tardar unos minutos y se detiene como muy tarde al cumplirse
limits.deadline_seconds. Consulta el estado cada 5–10 segundos.
curl -sS https://llmapi.omev.be/v1/audience-intelligence/jobs/get \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "aij_…"}'
job.progress va de 0 a 100; job.coverage_so_far muestra las cantidades recopiladas
hasta el momento.
status | Significado |
|---|---|
QUEUED, RUNNING | en espera o en curso |
WAITING_PROVIDER, RETRY_WAIT | esperando a una fuente de datos o reintentando; sigue consultando |
COMPLETED | el informe está listo |
COMPLETED_PARTIAL | hay un informe listo, pero la muestra es menor de lo previsto; consulta warnings y product_readiness |
NO_DATA | no se encontró suficiente debate público relevante; no hay informe |
BUDGET_EXHAUSTED, EXPIRED, FAILED | el trabajo terminó sin un informe completo; stop_reason y public_error_code indican el motivo |
CANCELLED | cancelaste el trabajo |
Para detener un trabajo, envía {"job_id": "aij_…"} a /v1/audience-intelligence/jobs/cancel.
La respuesta es 202 mientras el trabajo se detiene, o 200 si ya está cancelado.
Descargar el informe
curl -sS https://llmapi.omev.be/v1/audience-intelligence/jobs/result \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "aij_…"}'
Antes de que termine el trabajo, la llamada devuelve 409 JOB_NOT_READY. Un trabajo que
terminó sin informe (por ejemplo, NO_DATA) devuelve {"job": {…}, "report": null}.
El informe:
| Campo | Contenido |
|---|---|
status, products | el estado final y los productos generados |
product_results | un objeto por producto, con el nombre del producto como clave; cada uno contiene una lista items con la forma de ese producto |
product_readiness | por producto: sufficient, insufficient_sample o no_evidence, con el motivo |
summary | un resumen breve en lenguaje sencillo |
research_question, scope | qué se estudió: tema, audiencia, periodo, plataformas solicitadas y realmente observadas |
methodology | qué opiniones representa la muestra, cómo se seleccionaron las fuentes, limitaciones |
coverage | comentarios recopilados, aceptados y excluidos, hilos únicos, plataformas, la mayor proporción de una sola fuente |
signals | los hallazgos de base: type (pregunta, problema, expectativa, objeción, comparación, tendencia…), label, strength (anecdotal, emerging, recurring, strong), recuentos y evidence_ids |
evidence | los comentarios en los que se basan los hallazgos: plataforma, publicación, texto del comentario, relevancia |
contradictions, warnings | hallazgos que se contradicen y todo lo que limita el informe |
rendered_markdown | el mismo informe en Markdown, cuando output.include_markdown es true |
Los recuentos son hilos de debate únicos, no comentarios sueltos, así que un solo hilo muy
ruidoso no puede hacer que un tema parezca grande. Trata los hallazgos anecdotal como
indicios, no como hechos.
Los informes están disponibles durante 90 días después de que termine el trabajo; después,
la llamada devuelve 410 RESULT_EXPIRED.
Temas de nicho
Un trabajo busca 500 comentarios aceptados, el máximo. Para un nicho en el que no existen
tantos, puedes aceptar una muestra menor de 200–499 comentarios por el mismo precio: establece
sample_policy.mode en narrow, sample_policy.target_accepted_comments en el objetivo
y añade sample_policy.narrow_topic_consent con el texto de consentimiento registrado, el
momento en que se aceptó y la versión de la política. Contacta con
support@omev.be para obtener el texto exacto antes de integrarlo
en un producto.
Errores
| Código | Cuándo |
|---|---|
401 | clave de API ausente o no válida |
403 | la clave no puede usar este producto |
404 | trabajo desconocido o que pertenece a otra cuenta |
409 JOB_NOT_READY | se pidió el informe antes de que terminara el trabajo |
409 IDEMPOTENCY_CONFLICT | el idempotency_key ya se usó con un cuerpo distinto |
409 JOB_ALREADY_TERMINAL | se envió la cancelación de un trabajo que ya había terminado |
410 RESULT_EXPIRED | el informe tiene más de 90 días |
422 INVALID_ARGUMENT | falta un campo o está fuera de rango; el cuerpo indica el campo |
429 | demasiadas peticiones o demasiados trabajos en cola; vuelve a intentarlo tras una breve pausa |
Para 409, 410 y 422, el cuerpo incluye el código de servicio mostrado arriba. Los demás
estados devuelven el cuerpo de error común; consulta Errores.