Reports
Fetch the most recent domain report or the pricing-only slice of it. Pure reads - never trigger compute.
Get a domain report scoped to a job
Returns the report for a specific domain inside a specific job. Useful when you've submitted the same domain in multiple jobs and want the version that came from a given submission.
path Parameters
iddomainGet a domain report scoped to a job › Responses
Domain report.
schema_versionBumps on breaking changes; additive changes keep 1.0.
exported_atstatuscomplete = premium probes ran; partial = free-tier signals only.
Deterministic features computed from the domain string. Always present (no compute required).
Most recent verdict (any intent). Markdown allowed in paragraph and alternative_suggestion.
Tiered pricing band for a domain. Returned by /v1/domains/{domain}/pricing as a slice; embedded in DomainReport for full report calls. Free text in reasoning, key_factors, and risks is capped at 4 KB per field.
LLM-derived signals. Each sub-block carries its own engine_version and computed_at; sub-blocks are omitted when absent.
Probes from non-frontier (free-tier) models. Cheaper, less weight-bearing — kept separate from frontier_recall.
Alternative names suggested by the recommendations engine. Present only when a recommendations run was triggered.
DNS-signature detection of for-sale or parked status. Cached domain-level for ~1h.
Get the most recent report for a domain
Returns the most recent report for the named domain in this organization, regardless of which job produced it. Pure read - never triggers a probe. Returns 404 if the org has never researched this domain.
path Parameters
domainGet the most recent report for a domain › Responses
Domain report.
schema_versionBumps on breaking changes; additive changes keep 1.0.
exported_atstatuscomplete = premium probes ran; partial = free-tier signals only.
Deterministic features computed from the domain string. Always present (no compute required).
Most recent verdict (any intent). Markdown allowed in paragraph and alternative_suggestion.
Tiered pricing band for a domain. Returned by /v1/domains/{domain}/pricing as a slice; embedded in DomainReport for full report calls. Free text in reasoning, key_factors, and risks is capped at 4 KB per field.
LLM-derived signals. Each sub-block carries its own engine_version and computed_at; sub-blocks are omitted when absent.
Probes from non-frontier (free-tier) models. Cheaper, less weight-bearing — kept separate from frontier_recall.
Alternative names suggested by the recommendations engine. Present only when a recommendations run was triggered.
DNS-signature detection of for-sale or parked status. Cached domain-level for ~1h.
Get the pricing slice of a domain report
Cheapest possible call. Returns ONLY the Pricing slice for a domain this org has researched. No LLM, no probe - pure cache read. The shape matches pricing inside DomainReport.
path Parameters
domainGet the pricing slice of a domain report › Responses
Pricing slice.
confidencemodelIdentifier of the pricing model that produced this row.
engine_versionPricing prompt version. Bumps invalidate cached rows.
computed_atreasoningMarkdown. Market-expert prose explaining the band.
key_factorsUp to 5 reasons the band lands where it does.
risksUp to 5 risks that bound the upside.
Snapshot of the signal vector that fed the pricing model. Useful for auditing.
Get all domain reports for a job
Returns every domain in the job with its current job_status and (when computed) its full DomainReport. Customers poll this during a running job to watch reports fill in; once terminal, it's a one-shot answer for 'give me everything from this submission.'
Domains in pending or running status carry only domain + job_status — no report key (the omit-when-null contract). paid and cached domains carry the full DomainReport. failed domains carry an error code (see "Error codes" in the docs).
path Parameters
idGet all domain reports for a job › Responses
Job header + array of per-domain reports.
Get pricing-only slice for every domain in a job
Pricing-only variant of /v1/research-jobs/{id}/report. Each entry carries the price band (wholesale / aftermarket / brokered), reasoning, key factors, and risks - capped at 4 KB per text field. Faster and lighter than the full report wrapper; built for the 'CSV of just the dollars and reasoning' workflow without pulling the probes / signals / brand signals you don't need.
Pass ?format=csv to receive a browser-downloadable CSV instead of JSON. The CSV contains one row per domain in the job, with the same data as the JSON response projected into a flat row format. Failed entries occupy a row with the error column populated and the dollar columns blank.
path Parameters
idquery Parameters
formatResponse format. Defaults to JSON. Pass ?format=csv to receive a browser-downloadable CSV (one row per domain) with columns: domain, job_status, confidence, wholesale_low/mid/high, aftermarket_low/mid/high, brokered_low/mid/high, model, engine_version, computed_at, error, reasoning, key_factors, risks. The CSV is BOM-prefixed for Excel UTF-8 compatibility, uses CRLF line terminators per RFC 4180, and serves with Content-Disposition: attachment.
Get pricing-only slice for every domain in a job › Responses
Job header + array of per-domain pricing slices.