Skip to main content

Domain report

Give a client's website, get back one report on how to promote it in public discussions and search: who the product is for, the market's keywords with measured search volumes, real competitors, the communities where buyers talk, the search queries that surface relevant threads, and, in the extended report, the threads worth answering with their tone, a full company intelligence brief and how visible the brand is in AI assistants and search.

Built for agencies and platforms that sell promotion: one call per client domain, one price per delivered report.

Access is enabled on request

Domain reports are switched on per key. Write to support@omev.be to enable them. The report is charged to the key's usual balance.

Modes and prices​

modePrice per delivered reportWhat you getTypical time
basic$0.99one plain answer: product, buyer profile, up to 20 keywords with volumes, 3–5 competitors, up to 20 live communities ranked by relevance, 15 search queries, a 10-field compact profileabout 10 minutes, at most 1 hour
extended (default)$2.99everything in basic, plus the company intelligence brief with the audience voice, the threads to answer with their tone and reply drafts, the AI visibility check, and the analysis of threads you nameusually 20–60 minutes, at most 5 hours

A report is charged once, on the first download of the finished result, by how complete it is: 75% or more is the full price, 40–74% is 70% of the price ($0.69 or $2.09), 15–39% is 30% of the price ($0.29 or $0.89), below 15% is free. Partial charges are rounded down to whole cents. Repeated downloads, failed and cancelled orders are not charged.

Order a report​

curl -sS https://llmapi.omev.be/v1/domain-delivery/jobs/create \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "rumpl.com",
"mode": "extended",
"market": ["US"],
"language": ["en"],
"client_ref": "acme-17",
"idempotency_key": "acme-17-rumpl-2026-10"
}'
FieldRequiredMeaning
urlyesthe client's website
modenobasic or extended (default)
formatnoextended only: standard (default, the full report) or agent (a compact answer for an AI agent, see below)
marketnoup to 10 countries or regions, such as "US" or ["UA", "EU"]
languagenoup to 6 language codes, such as "en" or ["en", "de"]
questionsnoextended only: 1–15 of your own buyer questions for the AI visibility check, 5–200 characters each
threadsnoextended only: 1–10 Reddit thread links to analyse in detail
threads_onlynowith threads: true analyses only those threads
voicenoextended only: who the reply drafts speak as, brand (default) or community_member
max_age_monthsnoextended only: 1–60; threads older than this are left out (threads you name are never filtered)
client_refnoyour own label for the end client, up to 100 characters
idempotency_keyno8–200 characters; repeating it returns the same order instead of starting a new one

The answer is 202 with the order:

{"job": {"id": "dd_…", "status": "queued", "mode": "extended", "format": "standard",
"stage": null, "charged_usd": 0, …},
"idempotent_replay": false}

OmevAI prepares the reply drafts; it never posts anything. Whether and how a draft is used is your decision.

Follow the order​

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

status is queued, running, then completed, failed or cancelled. While running, stage shows the step: report, preview (the agent format), threads, visibility, final. steps shows each step with its attempts: a failed step is retried up to two more times. A delivered order is completed with completeness_percent. Poll every 30–60 seconds.

To stop an order, send the same body to /v1/domain-delivery/jobs/cancel.

Download the report​

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

The answer holds job and result. Before the order finishes the call returns 409 JOB_NOT_READY; a failed or cancelled order returns "result": null.

Reportresult holds
basicproduct, icp (buyer profile and 1–3 segments), keywords (phrase, volume, rank), competitors, subreddits (live communities with a fitting post, ranked by relevance), queries, profile (10 fields), completeness, limitations
extended, standardreport (the full company intelligence brief), ai_visibility (buyer questions asked in AI assistants and AI search: whether the brand is mentioned or cited, and where the site and Reddit threads rank in search for the market's keywords), threads (each thread once by tactic: reply_now, ranking, reference, with its tone and reply status), given_threads (your threads analysed), completeness
extended, agenta compact JSON of at most 5 KB: the 10 profile fields (product_name, product_description, icp, keywords, competitors, pain_points, key_benefits, key_features, watched_subreddits, serp_queries), buyer segments, fit signals, safe and risky claims, a short AI visibility summary, completeness

With the agent format, jobs/get returns preview with the 10 profile fields as soon as they are known (usually within a minute), and revises it while the order runs. For the full report of an agent order, call jobs/result with "view": "full"; it is not charged again.

completeness lists every section with what was found, the target and the minimum, and the share of the price charged.

PDF​

POST /v1/domain-delivery/jobs/pdf with {"job_id": "dd_…"} returns the finished report as a PDF file, ready to send to the end client.

Errors​

CodeWhen
401missing or invalid API key
403domain reports are not enabled for the key
404 JOB_NOT_FOUNDunknown order, or an order of another account
409 JOB_NOT_READYthe result or the PDF was requested before the order finished
422 INVALID_URL, 422 MODE_NOT_AVAILABLE, 422 INVALID_FORMATa value outside the lists above
422 FORMAT_NOT_AVAILABLE, 422 THREADS_NOT_AVAILABLE, 422 QUESTIONS_NOT_AVAILABLE, 422 VOICE_NOT_AVAILABLE, 422 MAX_AGE_NOT_AVAILABLEan option used with basic (or with threads_only) that works only in a full extended order
422 INVALID_THREADS, 422 INVALID_MAX_AGE, 422 INVALID_VOICE, 422 INVALID_IDEMPOTENCY_KEYa field out of range
429too many requests, or the key's budget is used up

Every error has the same shape: {"error": {"code": "INVALID_URL", "message": "…"}}. See Errors and retries for retry advice.