Passer au contenu principal

Dossier de veille sur une entreprise

Indiquez un site web et un objectif, et obtenez en retour un dossier structuré sur l'entreprise, directement exploitable par votre propre modèle d'IA ou votre équipe : ce que l'entreprise vend et à qui, le marché et le vocabulaire des acheteurs, les vrais concurrents, les questions et objections des acheteurs dans les discussions publiques, et un plan d'action prêt à l'emploi pour l'objectif choisi. Chaque élément factuel renvoie à la preuve dont il est tiré.

Un dossier sert un seul objectif :

focusConçu pour
reddit_promotionpromouvoir l'entreprise sur Reddit : communautés qui comptent, requêtes qui font remonter les fils pertinents, questions et objections des acheteurs, affirmations sûres
seo_webpromouvoir l'entreprise dans les moteurs de recherche : requêtes commerciales par intention, qui occupe les résultats aujourd'hui, lacunes de contenu
competitor_intelétudier l'entreprise en tant que concurrent : positionnement, tarifs, fonctionnalités, ce dont ses clients se plaignent

Un second objectif pour la même entreprise constitue une seconde requête. Dans un délai de 7 jours, elle réutilise la lecture du site et le profil de l'entreprise issus du premier dossier, si bien qu'elle démarre plus vite et que les deux dossiers décrivent l'entreprise de la même façon ; la tâche affiche "core_reused": true.

La veille entreprise est activée pour une clé sur demande : écrivez à support@omev.be. Le dossier est facturé sur le solde habituel de la clé.

Profondeur et prix​

depthPrix par dossier livréCe qu'il contient
standard (par défaut)$0.99le dossier sur l'entreprise sans la voix de l'audience : 3 à 6 concurrents et la recherche standard ; les sections consacrées à la voix des acheteurs sont marquées comme non incluses
extended$1.99tout le contenu de standard, plus la voix de l'audience (jusqu'à 300 commentaires d'acheteurs lus, avec des forums et d'autres sources ajoutés pour les niches étroites), 7 à 8 concurrents et une recherche plus large

Vous payez une seule fois par dossier, lors du premier téléchargement d'un résultat terminé, selon son degré de complétude :

Complétude du dossierFacturation
75 % ou plusle prix complet
40–74 %70 % du prix
15–39 %30 % du prix
moins de 15 %gratuit

Un montant partiel est arrondi au centime inférieur. La tâche affiche completeness_percent et charged_usd. Un dossier en échec, un site que nous ne pouvons pas lire, une tâche annulée et les téléchargements répétés du même dossier ne sont pas facturés. Un rapport de domaine inclut le dossier étendu ainsi qu'une recherche sur les communautés et sur la visibilité dans l'IA.

Lancer un dossier​

curl -sS https://llmapi.omev.be/v1/cig/jobs/create \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://vessi.com",
"focus": "reddit_promotion",
"depth": "standard",
"client_ref": "acme-client-17",
"idempotency_key": "acme-17-vessi-reddit-2026-09"
}'
ChampRequisSignification
urlouile site web de l'entreprise ; une adresse publique http/https
focusouil'une des valeurs reddit_promotion, seo_web, competitor_intel
depthnonstandard (par défaut) ou extended
marketnonun pays ou une région, par exemple "US", ou une liste de 10 au maximum, par exemple ["EU", "DE"]
languagenonun code de langue tel que "en", ou une liste de 6 au maximum, par exemple ["en", "de"]
voicenonau nom de qui parlent les réponses suggérées : brand (par défaut) ou community_member ; OmevAI ne publie jamais rien
max_age_daysnon1 à 1830 ; les fils de discussion plus anciens sont exclus du plan d'action
client_refnonvotre propre libellé pour le client final (agences : répartir les dépenses par client)
idempotency_keynon8 à 200 caractères ; la réutiliser renvoie la même tâche au lieu d'en lancer une nouvelle
callback_urlnonune adresse publique https que nous appelons lorsque le dossier est terminé (voir Notification)
callback_secretnon16 à 200 caractères ; avec lui, chaque notification est signée

Avant le lancement d'un dossier, nous vérifions que le solde de votre clé couvre son prix. Si ce n'est pas le cas, la réponse est 402 INSUFFICIENT_BALANCE et rien n'est lancé.

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

{
"job": {"id": "cig_…", "status": "queued", "stage": "", "focus": "reddit_promotion",
"depth": "standard", "client_ref": "acme-client-17", "charged_usd": 0},
"idempotent_replay": false,
"poll_after_seconds": 10
}

Plusieurs sites à la fois​

Envoyez jusqu'à 50 dossiers en un seul appel. Chaque élément accepte les mêmes champs qu'un dossier individuel.

curl -sS https://llmapi.omev.be/v1/cig/jobs/batch \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{"url": "https://vessi.com", "focus": "reddit_promotion", "client_ref": "acme-17"},
{"url": "https://vessi.com", "focus": "seo_web", "client_ref": "acme-17"},
{"url": "https://allbirds.com", "focus": "competitor_intel", "client_ref": "acme-17",
"callback_url": "https://hooks.example.com/omev", "callback_secret": "a-long-random-secret"}
]
}'

La réponse est 202 avec une entrée par élément, dans le même ordre. Un élément comportant une erreur reçoit son propre error et n'arrête pas les autres :

{
"items": [
{"index": 0, "job": {"id": "cig_…", "status": "queued", …}, "idempotent_replay": false},
{"index": 1, "job": {"id": "cig_…", "status": "queued", …}, "idempotent_replay": false},
{"index": 2, "error": {"code": "INVALID_URL", "message": "…"}}
],
"poll_after_seconds": 10
}

Le solde doit couvrir l'ensemble des éléments valides ; sinon, l'appel renvoie 402 INSUFFICIENT_BALANCE et aucun élément n'est lancé. Deux objectifs pour le même site dans un même appel partagent une seule lecture du site.

Suivre la tâche​

Un dossier standard prend 10 à 25 minutes, un dossier extended jusqu'à une heure environ : le service lit le site, effectue des recherches, examine les concurrents et lit les discussions des acheteurs. Interrogez le statut toutes les 15 à 30 secondes.

curl -sS https://llmapi.omev.be/v1/cig/jobs/get \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "cig_…"}'

status vaut queued, running, puis l'une des valeurs completed, partial, failed, cancelled. Pendant l'exécution, stage indique où en est le travail, par exemple site_read, business_mix, profile_extract, research_plan, market_frame, competitors, search, communities, audience, claim_verify, synthesis, thread_tone, moderation. Un dossier qui réutilise une lecture antérieure du site affiche site_core_reused à la place des trois premières valeurs. Considérez cette liste comme indicative : de nouvelles étapes peuvent apparaître.

partial désigne un dossier livré dont une partie n'a pas été menée à terme ; la raison figure dans evidence_base.limitations, et evidence_base.coverage.completeness présente chaque section avec ce qui a été trouvé, son objectif et son minimum. En cas de failed, error.code en indique la cause, par exemple site_unreadable lorsque le site bloque les visites automatisées.

Pour arrêter une tâche, envoyez le même corps à /v1/cig/jobs/cancel.

Notification quand un dossier est prêt​

Avec callback_url, inutile d'interroger le statut. Lorsque la tâche atteint completed, partial, failed ou cancelled, nous envoyons un POST à cette adresse :

{"event": "cig.job.finished", "job": {"id": "cig_…", "status": "completed", …}}
En-têteSignification
X-Omev-Event-Idl'identifiant de la tâche ; utilisez-le pour ignorer les livraisons répétées
X-Omev-Signaturesha256= suivi du HMAC-SHA256 en hexadécimal du corps brut, calculé avec votre callback_secret (envoyé uniquement si vous avez fourni un secret)

Répondez avec n'importe quel statut 2xx. Si l'appel échoue, nous réessayons deux fois, après 10 secondes puis après 60 secondes. Le résultat figure dans job.callback_status. La notification ne contient que la tâche ; téléchargez le dossier avec /v1/cig/jobs/result comme d'habitude.

Vérifiez la signature avant de faire confiance au corps :

import hashlib, hmac

def is_from_omev(raw_body: bytes, header: str, secret: str) -> bool:
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, header or "")

Télécharger le dossier​

curl -sS https://llmapi.omev.be/v1/cig/jobs/result \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "cig_…"}'

La réponse contient job, profile (le dossier complet) et stage1 (un court résumé du même dossier en dix champs). Tant que la tâche n'est pas terminée, l'appel renvoie 409 JOB_NOT_READY.

Le dossier comporte neuf sections :

SectionContenu
metaobjectif, profondeur, URL cible, marché, date de génération
companyproduit, positionnement, répartition des activités, fonctionnalités, offre, signaux de confiance
marketprofil d'acheteur (ICP), cadre du marché, mots-clés, requêtes des acheteurs
problemsproblèmes que la marque résout, frustrations dans la catégorie
brand_perceptionplaintes, éloges et mentions relevés dans des sources publiques
competitionconcurrents (direct, adjacent, status_quo) avec la raison pour laquelle chacun est en concurrence
audiencequestions, objections et attentes des acheteurs, citations textuelles d'acheteurs
playbookle plan pour l'objectif : communautés, requêtes de recherche, messages, prochaines actions, garde-fous pour les affirmations
evidence_basetoutes les sources et citations sur lesquelles repose le dossier, chiffres de couverture, limites

Les éléments portent des evidence_ids qui pointent vers evidence_base.evidence, où chaque entrée contient l'url de la source et la citation exacte dans quote. Les affirmations sont marquées stated (l'entreprise le dit elle-même), observed (constaté dans des sources indépendantes) ou inferred (notre conclusion). Lorsque vous transmettez le dossier à un modèle d'IA, demandez-lui de ne présenter comme des faits que les éléments stated et observed, et de ne jamais utiliser ce qui figure dans playbook.reply_guardrails.do_not_claim.

Erreurs​

CodeQuand
401clé API manquante ou invalide
402 INSUFFICIENT_BALANCEle solde de la clé ne couvre pas le dossier (ou l'ensemble des éléments valides d'un appel pour plusieurs sites)
404 JOB_NOT_FOUNDtâche inconnue, ou tâche appartenant à un autre compte
409 JOB_NOT_READYle résultat a été demandé avant la fin de la tâche
422 INVALID_URLl'adresse n'est pas un site web public
422 INVALID_FOCUS, 422 INVALID_DEPTH, 422 INVALID_VOICEune valeur en dehors des listes ci-dessus
422 INVALID_MARKET, 422 INVALID_LANGUAGE, 422 INVALID_MAX_AGE, 422 INVALID_IDEMPOTENCY_KEYun champ hors limites : plus de 10 marchés, plus de 6 codes de langue, un âge en dehors de 1 à 1830 jours, une clé en dehors de 8 à 200 caractères
422 INVALID_CALLBACK_URL, 422 INVALID_CALLBACK_SECRETl'adresse de notification n'est pas une adresse publique https, ou le secret ne fait pas 16 à 200 caractères
422 INVALID_REQUEST, 422 BATCH_TOO_LARGEun appel pour plusieurs sites sans éléments, avec un élément qui n'est pas un objet, ou avec plus de 50 éléments
429trop de requêtes ; réessayez après une courte pause

Toutes les erreurs ont la même forme : {"error": {"code": "INVALID_FOCUS", "message": "…"}}. Un 401 pour une clé erronée et un 429 fonctionnent de la même façon pour toutes les API OmevAI ; consultez Erreurs pour leur format.