Passer au contenu principal

Analyse d'audience

Indiquez un sujet ou le site web d'une marque et obtenez ce que de vraies personnes en disent dans les commentaires et discussions publics : les mots qu'elles emploient, les questions qu'elles posent, ce qu'elles attendent d'un produit, les points sur lesquels elles contredisent les créateurs, ce qui manque dans les contenus existants et les thèmes qui montent. Chaque constat est compté sur des fils de discussion indépendants et relié aux commentaires dont il provient, afin que votre équipe ou votre propre modèle d'IA puisse le vérifier.

Une tâche de recherche lit un échantillon de 500 commentaires acceptés au maximum et le transforme en l'ensemble des neuf produits (des vues différentes des mêmes données) ci-dessous. Chaque tâche inclut les neuf ; vous pouvez indiquer celui qui vous importe le plus.

Valeur de productsCe que vous obtenez
audience_keywordsles expressions employées par l'audience, regroupées par sens (fréquence dans les commentaires, pas volume de recherche)
audience_questionsles questions récurrentes avec leurs variantes, l'étape du tunnel et l'indication que les créateurs y répondent déjà ou non
website_requirementsce qu'un site web doit dire ou montrer : fonctionnalités, intégrations, tarifs, preuves, objections ; chaque point est marqué must, should ou could
comparison_intelligencecomment l'audience compare les produits cités : critères, déclencheurs de changement, déficits de confiance
content_brief_from_audienceun brief de contenu : titre provisoire, sections, questions auxquelles répondre, objections, FAQ, affirmations à éviter
audience_content_gapsla demande que les réponses existantes couvrent mal, avec le contenu à créer
creator_vs_audience_gaples points où les commentateurs contredisent les affirmations des créateurs, les remettent en question ou y ajoutent des conditions
buyer_expectationsce que les acheteurs tiennent pour acquis (must_have) et ce qui distingue un produit (differentiator)
trend_from_audienceles thèmes rising, stable ou declining, normalisés pour 1 000 fils de discussion pertinents

L'analyse d'audience est activée pour une clé sur demande : écrivez à support@omev.be. Les tâches sont facturées sur le solde habituel de la clé.

Prix​

QuoiPrix
Une tâche de recherche, les neuf produits inclus$0.99

Le prix est facturé une seule fois, lorsque jobs/create accepte la tâche. Une tâche qui se termine en NO_DATA (pas assez de discussions publiques pertinentes) est gratuite ; une tâche COMPLETED_PARTIAL est facturée intégralement. Répéter jobs/create avec le même idempotency_key renvoie la même tâche et n'est pas facturé à nouveau. estimate, jobs/get, jobs/result et jobs/cancel sont gratuits.

Vérifier d'abord la requête​

estimate valide le corps, affiche le périmètre normalisé et le prix, et ne lance aucun travail. Il accepte le même corps que jobs/create ; idempotency_key y est facultatif.

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 est le prix de la tâche. supported: false ou une note dans warnings signifie qu'une source de données est temporairement indisponible : réessayez plus tard.

Lancer une tâche de recherche​

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"]}
}'
ChampRequisSignification
schema_versionoui1.0, 1.1 ou 1.2 ; utilisez 1.2
idempotency_keyoui pour jobs/create8–200 caractères ; la répéter renvoie la même tâche au lieu d'en lancer une nouvelle
product ou productsnonle produit qui vous importe le plus, ou une liste de produits issus du tableau ci-dessus ; l'un des deux champs au maximum. La tâche construit les neuf dans tous les cas
topic.namename ou website_urlle sujet, 3–300 caractères
topic.website_urlname ou website_urlle site d'une marque ; le nom de la marque est lu sur le site
topic.descriptionnonjusqu'à 2 000 caractères qui précisent le sujet
topic.include_terms, topic.exclude_termsnonjusqu'à 50 termes chacun pour élargir ou restreindre ce qui est considéré comme pertinent
audience.descriptionnonqui vous voulez entendre, 3–2 000 caractères
audience.roles, audience.company_sizenonindications supplémentaires pour les audiences professionnelles
scope.platformsnonn'importe lesquelles parmi youtube, reddit, linkedin, tiktok, instagram, threads, facebook, twitter, web
scope.languagesnonlangues des commentaires, ["en"] par défaut, jusqu'à 10
scope.marketsnoncodes pays tels que ["US"] ; vide signifie le monde entier
scope.periodnon{"days": 7…365} (180 par défaut) ou {"from": "…Z", "to": "…Z"} en UTC, avec 7–365 jours d'écart
entitiesnonproduits ou entreprises à comparer : {"name": "…", "kind": "product", "aliases": ["…"]} ; sans eux, comparison_intelligence utilise les comparaisons trouvées dans les commentaires
creator_seedsnonchaînes ou communautés à lire : {"platform": "youtube", "url": "https://…"} ; une communauté Reddit est https://www.reddit.com/r/<name>, un fil Reddit unique est l'URL du fil avec "kind": "publication"
source_modenondiscover (par défaut) trouve les sources lui-même ; seeds_only lit uniquement vos creator_seeds
data_modenonrefresh_if_needed (par défaut) réutilise les données récentes du même périmètre et les complète ; fresh collecte à nouveau ; corpus_only utilise uniquement les données déjà collectées pour votre compte
outputnonmax_signals (1–100, 30 par défaut), max_evidence_per_signal (1–20, 5 par défaut), include_short_quotes et include_markdown (tous deux true par défaut)
limitsnonmax_creators (30 par défaut, jusqu'à 100), max_publications (300 par défaut, jusqu'à 1 000), max_comments (15 000 par défaut, jusqu'à 50 000), deadline_seconds (1 800 par défaut, 60–3 600)

Valeurs par défaut importantes :

  • Avec seulement topic.website_url, la tâche lit toutes les plateformes ainsi que des forums et blogs indépendants.
  • Avec topic.name et sans scope.platforms, la tâche lit uniquement YouTube. Indiquez les plateformes dont vous avez besoin.

La réponse est 202 avec la tâche :

{
"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
}

Suivre la tâche​

Une tâche prend généralement quelques minutes et s'arrête au plus tard à l'échéance de limits.deadline_seconds. Interrogez le statut toutes les 5–10 secondes.

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 à 100 ; job.coverage_so_far indique les volumes collectés jusqu'ici.

statusSignification
QUEUED, RUNNINGen attente ou en cours
WAITING_PROVIDER, RETRY_WAITen attente d'une source de données ou nouvelle tentative en cours ; continuez à interroger
COMPLETEDle rapport est prêt
COMPLETED_PARTIALun rapport est prêt, mais l'échantillon est plus petit que prévu ; voir warnings et product_readiness
NO_DATApas assez de discussions publiques pertinentes trouvées ; il n'y a pas de rapport
BUDGET_EXHAUSTED, EXPIRED, FAILEDla tâche s'est terminée sans rapport complet ; stop_reason et public_error_code en donnent la raison
CANCELLEDvous avez annulé la tâche

Pour arrêter une tâche, envoyez {"job_id": "aij_…"} à /v1/audience-intelligence/jobs/cancel. La réponse est 202 pendant l'arrêt de la tâche, ou 200 si elle est déjà annulée.

Télécharger le rapport​

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_…"}'

Avant la fin de la tâche, l'appel renvoie 409 JOB_NOT_READY. Une tâche terminée sans rapport (par exemple NO_DATA) renvoie {"job": {…}, "report": null}.

Le rapport :

ChampContenu
status, productsle statut final et les produits construits
product_resultsun objet par produit, avec le nom du produit comme clé ; chacun contient une liste items au format de ce produit
product_readinesspar produit : sufficient, insufficient_sample ou no_evidence, avec la raison
summaryun court résumé en langage clair
research_question, scopece qui a été étudié : sujet, audience, période, plateformes demandées et réellement observées
methodologyquelles opinions l'échantillon représente, comment les sources ont été choisies, limites
coveragecommentaires collectés, acceptés et exclus, fils uniques, plateformes, la plus grande part d'une seule source
signalsles constats sous-jacents : type (question, point de douleur, attente, objection, comparaison, tendance…), label, strength (anecdotal, emerging, recurring, strong), décomptes et evidence_ids
evidenceles commentaires à l'origine des constats : plateforme, publication, texte du commentaire, pertinence
contradictions, warningsles constats qui se contredisent, et tout ce qui limite le rapport
rendered_markdownle même rapport en Markdown, lorsque output.include_markdown vaut true

Les décomptes portent sur des fils de discussion uniques, pas sur des commentaires bruts : un seul fil bruyant ne peut donc pas faire paraître un thème important. Considérez les constats anecdotal comme des pistes, pas comme des faits.

Les rapports restent disponibles 90 jours après la fin de la tâche ; ensuite, l'appel renvoie 410 RESULT_EXPIRED.

Sujets de niche​

Une tâche vise 500 commentaires acceptés, le maximum. Pour une niche où il n'en existe pas autant, vous pouvez accepter un échantillon plus petit de 200–499 commentaires au même prix : définissez sample_policy.mode sur narrow, sample_policy.target_accepted_comments sur l'objectif, et ajoutez sample_policy.narrow_topic_consent avec le texte de consentement enregistré, l'heure à laquelle il a été accepté et la version de la politique. Contactez support@omev.be pour obtenir le texte exact avant de l'intégrer dans un produit.

Erreurs​

CodeQuand
401clé API absente ou invalide
403la clé ne peut pas utiliser ce produit
404tâche inconnue, ou tâche appartenant à un autre compte
409 JOB_NOT_READYle rapport a été demandé avant la fin de la tâche
409 IDEMPOTENCY_CONFLICTl'idempotency_key a déjà été utilisée avec un corps différent
409 JOB_ALREADY_TERMINALune annulation a été envoyée pour une tâche déjà terminée
410 RESULT_EXPIREDle rapport a plus de 90 jours
422 INVALID_ARGUMENTun champ est manquant ou hors limites ; le corps indique le champ
429trop de requêtes ou trop de tâches dans la file d'attente ; réessayez après une courte pause

Pour 409, 410 et 422, le corps contient le code de service indiqué ci-dessus. Les autres statuts renvoient le corps d'erreur commun, voir Erreurs.