Namedesk
Namedesk API

Error

error
​string · required

Stable machine-readable error code (e.g. invalid_domain, insufficient_credits, not_yet_researched).

message
​string · required

Human-readable description of what went wrong.

CreateResearchJobRequest

domains
​string[] · minItems: 1 · maxItems: 100 · required

Between 1 and 100 unique domains.

label
​string · maxLength: 80

Optional human-readable label shown in the dashboard, completion email, and activity feed.

ResearchJob

id
​string · required
status
​string · enum · required
Enum values:
queued
running
completed
cancelled
failed
mode
​string · enum · required

'full' (POST /v1/research-jobs) runs the full multi-model appraisal on every domain at 10 credits each. 'quick' (POST /v1/research-jobs/quick) routes each name through a fast first-pass that decides whether the full appraisal is worth it: names judged worthy run the full appraisal (10 credits each); the rest get a quick-read pricing estimate (1 credit each). Credits are reserved at the worst case (10 per name) and the running total settles down as quick reads come back.

Enum values:
full
quick
submitted_at
​string · date-time · required
domains_total
​integer · required
label
​string
completed_at
​string · date-time
domains_completed
​integer
domains_failed
​integer
credits_charged
​integer

Sum of per-domain charges so far. For quick-mode jobs this number settles down as each name's decision lands - quick reads keep 1 credit, full reads keep 10.

credits_refunded
​integer
​object[]

Per-domain status for this job.

DomainReport

Comprehensive research report for a single domain. Returned by /v1/report/{domain} and /v1/research-jobs/{id}/report/{domain}. Null-valued keys are OMITTED from the response (a missing key means the underlying signal has not been computed for this domain). Free text fields are capped at 4 KB. `verdict` is the most recent verdict regardless of which intent it was computed for; customers who need a different intent should re-run research with that intent.
schema_version
​string · const · required

Bumps on breaking changes; additive changes keep 1.0.

Const value: 1.0
exported_at
​string · date-time · required
​object · required
status
​string · enum · required

complete = premium probes ran; partial = free-tier signals only.

Enum values:
complete
partial
​object · required
​object · required

Deterministic features computed from the domain string. Always present (no compute required).

​object

Most recent verdict (any intent). Markdown allowed in paragraph and alternative_suggestion.

​Pricing

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.

​object

LLM-derived signals. Each sub-block carries its own engine_version and computed_at; sub-blocks are omitted when absent.

​object
​object[]

Probes from non-frontier (free-tier) models. Cheaper, less weight-bearing — kept separate from frontier_recall.

​object[]

Alternative names suggested by the recommendations engine. Present only when a recommendations run was triggered.

​object

DNS-signature detection of for-sale or parked status. Cached domain-level for ~1h.

Pricing

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.
​PriceBand · required
​PriceBand · required
​PriceBand · required
confidence
​string · enum · required
Enum values:
high
medium
low
model
​string · required

Identifier of the pricing model that produced this row.

engine_version
​string · required

Pricing prompt version. Bumps invalidate cached rows.

computed_at
​string · date-time · required
reasoning
​string

Markdown. Market-expert prose explaining the band.

key_factors
​string[]

Up to 5 reasons the band lands where it does.

risks
​string[]

Up to 5 risks that bound the upside.

​object

Snapshot of the signal vector that fed the pricing model. Useful for auditing.

PriceBand

low
​integer · min: 0 · required
mid
​integer · min: 0 · required
high
​integer · min: 0 · required

JobDomainStatus

string · enum
Enum values:
pending
running
paid
cached
failed

Per-domain lifecycle inside a research job. pending = waiting to start; running = appraisal in progress; paid = finished successfully and the credits for this name were committed (1 credit for a quick read, 10 credits for a full read); cached = your organization already had a finished report for this name at submission time, so no new appraisal ran and no credits were charged for it; failed = the appraisal couldn't finish and the credits reserved for this name were returned to your wallet.

JobReportEntry

One row in /v1/research-jobs/{id}/report. `report` is present only for `paid` and `cached` outcomes; `error` is present only for `failed`. Pending and running entries carry just `domain` + `job_status`.
domain
​string · required
job_status
​JobDomainStatus · enum · required

Per-domain lifecycle inside a research job. pending = waiting to start; running = appraisal in progress; paid = finished successfully and the credits for this name were committed (1 credit for a quick read, 10 credits for a full read); cached = your organization already had a finished report for this name at submission time, so no new appraisal ran and no credits were charged for it; failed = the appraisal couldn't finish and the credits reserved for this name were returned to your wallet.

Enum values:
pending
running
paid
cached
failed
​DomainReport

Comprehensive research report for a single domain. Returned by /v1/report/{domain} and /v1/research-jobs/{id}/report/{domain}. Null-valued keys are OMITTED from the response (a missing key means the underlying signal has not been computed for this domain). Free text fields are capped at 4 KB. verdict is the most recent verdict regardless of which intent it was computed for; customers who need a different intent should re-run research with that intent.

error
​string

Stable, machine-readable code for why this name's appraisal couldn't finish. Examples: concurrent_run_winner, fast_fail_pricing, model_timeout. The same codes appear elsewhere in the API; safe to branch on.

JobPricingEntry

One row in /v1/research-jobs/{id}/report/pricing. `pricing` is the full Pricing slice (numbers + reasoning + key_factors + risks, all 4 KB-capped) for `paid` and `cached` entries.
domain
​string · required
job_status
​JobDomainStatus · enum · required

Per-domain lifecycle inside a research job. pending = waiting to start; running = appraisal in progress; paid = finished successfully and the credits for this name were committed (1 credit for a quick read, 10 credits for a full read); cached = your organization already had a finished report for this name at submission time, so no new appraisal ran and no credits were charged for it; failed = the appraisal couldn't finish and the credits reserved for this name were returned to your wallet.

Enum values:
pending
running
paid
cached
failed
​Pricing

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.

error
​string

JobReportsResponse

Wrapper for /v1/research-jobs/{id}/report. The `job` block embeds the same shape returned by /v1/research-jobs/{id} so customers can render progress + per-domain reports from a single call.
​ResearchJob · required
​JobReportEntry[] · required

JobPricingResponse

​ResearchJob · required
​JobPricingEntry[] · required

StatsMeta

On every stats response.
attribution
​string · required

The sources of this response, to be shown with it.

as_of
​string

The newest month (YYYY-MM) or date (YYYY-MM-DD) in the response. Absent when the response holds none.

updated_at
​string · date-time

When the data in this response last changed: the monthly statistics' last update, or the round data's newest change. Absent on zone series.

StatsError

Every stats error.
error
​string · required

Stable machine-readable code: invalid_parameter, invalid_cursor, not_found, tld_not_found, registry_not_found, registrar_not_found, group_not_found, application_not_found, applicant_not_found, string_not_found, round_not_found, unauthorized, rate_limited.

message
​string · required

A sentence a person can act on.

request_id
​string · required

Also in the X-Request-Id header; quote it when asking for help.

​object

StatsBounds

The first and last points a series has, whatever range was asked for.
first
​string · required

The oldest point that exists (YYYY-MM, or YYYY-MM-DD for zone nights).

last
​string · required

The newest point that exists.

StatsRef

A reference to a registry or registrar; the full object is at its own endpoint.
id
​integer · required
name
​string · required

StatsDomains

A stock figure as of a month.
period
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required
count
​integer · min: 0 · required

Domains under management that month.

change
​integer

Against the month before.

change_year
​integer

Against the same month a year before. Absent on an estimated figure.

estimated
​boolean · const

Present (and true) only when the figure is from the registry operator's own report rather than its ICANN monthly registry report.

Const value:

TldPhase

A launch phase. Dates are absent when the source gives none.
phase
​string · enum · required
Enum values:
sunrise
claims
landrush
limited_registration
qualified_launch
exclusive_registration
approved_launch
general_availability
start
​string · date
end
​string · date

Absent for a phase with no end date (general availability).

TldZone

The newest night of the TLD's zone file. May be withdrawn if the registry revokes zone access.
date
​string · date · required
count
​integer · min: 0 · required

Names in the zone that night.

for_sale
​integer · min: 0

Names whose nameservers are a marketplace's; present when the night was classified.

parked
​integer · min: 0

Names on a parking service; present when the night was classified.

Tld

A top-level domain.
tld
​string · required

The A-label, lower case. Also the id.

kind
​string · enum · required
Enum values:
cctld
idn-cctld
legacy-gtld
new-gtld
sponsored
infra
unknown
url
​string · uri · required

Its page on namedesk.app.

unicode
​string

IDN only: the native-script form.

category
​string · enum
Enum values:
brand
commerce
culture
ai-tech
geo
infra
other
delegated
​string

Root-zone delegation date, at the precision known: YYYY-MM-DD, or YYYY-MM or YYYY for a few old TLDs.

removed
​string

Date removed from the root, same precision rule. Absent for a live TLD.

​StatsRef

The operator today.

​TldPhase[]

On the single TLD only.

​StatsDomains

The newest month from an ICANN monthly report or the registry's own report, else the newest archived copy of one. Absent when no such figure exists.

​TldZone

The newest night of the TLD's zone file. May be withdrawn if the registry revokes zone access.

​StatsMeta

On the top-level object of a response only.

TldMonth

One month of a TLD.
period
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required
domains
​integer · min: 0
change
​integer
change_year
​integer
adds
​integer · min: 0
renews
​integer · min: 0
deletes
​integer · min: 0
transfers_in
​integer · min: 0
transfers_out
​integer · min: 0
restores
​integer · min: 0
registrars
​integer · min: 0

How many registrars held names in the TLD that month. Absent where there is no registrar breakdown (ccTLDs).

estimated
​boolean · const

The figure is not from an ICANN monthly report; such a month carries only domains and change.

Const value:

TldRegistrar

One registrar's holding in a TLD for a month.
​StatsRef · required

A reference to a registry or registrar; the full object is at its own endpoint.

domains
​integer · min: 0 · required
share_pct
​number

Percent of the TLD's domains that month, two decimals.

adds
​integer · min: 0
renews
​integer · min: 0
deletes
​integer · min: 0
transfers_in
​integer · min: 0
transfers_out
​integer · min: 0

ZoneDay

One night of a TLD's zone file.
date
​string · date · required
domains
​integer · min: 0 · required

Names in the zone that night.

entered
​integer · min: 0

Names that appeared since the night before. Absent on the first night and after a gap.

left
​integer · min: 0

Names that dropped out since the night before. Absent on the first night and after a gap.

for_sale
​integer · min: 0
parked
​integer · min: 0

Registry

A registry operator.
id
​integer · required

Our id, stable for v1.

name
​string · required

The operator's brand when no other operator uses it (for example, GoDaddy Registry); otherwise the name ICANN lists.

tlds
​integer · min: 0 · required

TLDs it runs today.

url
​string · uri · required
legal_name
​string

The name ICANN lists for the operator (for example, Registry Services, LLC). Present only when name holds the brand.

group
​string

The owner, when two or more operators share one (see /v1/stats/groups/{slug}).

​StatsDomains

Summed over the TLDs it runs today, for the newest ICANN-report month. Absent when none of them has a figure that month.

​RegistryApplicant[]

On a single operator (/v1/stats/registries/{id}), when there is one: the applicant companies in the 2026 round that a public source ties to this operator, from the round record (the 2026 round endpoints' source), not the registry reports.

​StatsMeta

On the top-level object of a response only.

RegistryApplicant

An applicant company in the 2026 round that a public source ties to a registry operator.
name
​string · required
relation
​string · enum · required

same-company: the operator is this company (the same legal entity, or wholly owned within one group). shared-ownership: one owns part of the other, or they have an owner in common. shared-people: a person in common. shared-address: a registered address in common, and nothing more.

Enum values:
same-company
shared-ownership
shared-people
shared-address
url
​string · uri · required

The company's page on namedesk.app, which quotes the source.

RegistryTld

A TLD a registry operator runs.
tld
​string · required
since
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required

The month it took the TLD over.

​StatsDomains

The TLD's newest reported figure, as on Tld.domains (without change_year). Absent when no such figure exists.

RegistryMonth

One month of an operator, summed over the TLDs it runs today.
period
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required
domains
​integer · min: 0 · required
tlds
​integer · min: 0 · required
adds
​integer · min: 0
deletes
​integer · min: 0

Registrar

An ICANN-accredited registrar.
id
​integer · required

Our id: equal to the IANA registrar id.

iana_id
​integer · required
name
​string · required
tlds
​integer · min: 0 · required

TLDs it held names in that month.

​StatsDomains · required

A stock figure as of a month.

url
​string · uri · required
group
​string

The owner (see /v1/stats/groups/{slug}).

​StatsMeta

On the top-level object of a response only.

RegistrarMonth

One month of a registrar, summed over its TLDs.
period
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required
domains
​integer · min: 0 · required
tlds
​integer · min: 0 · required
change
​integer
adds
​integer · min: 0
deletes
​integer · min: 0

RegistrarTld

One TLD of a registrar for a month.
tld
​string · required
domains
​integer · min: 0 · required
change
​integer
change_year
​integer
adds
​integer · min: 0
share_pct
​number

Percent of the TLD's domains, two decimals.

StatsGroup

One owner: its registrars and its registry operators, each present when it has members of that kind.
slug
​string · required
name
​string · required
url
​string · uri · required
​StatsGroupMembers

One kind of a group's members, and their stock.

​StatsGroupMembers

One kind of a group's members, and their stock.

​StatsMeta

On the top-level object of a response only.

StatsGroupMembers

One kind of a group's members, and their stock.
​StatsRef[] · required
​StatsDomains

Its members summed, as of the newest registry-report month.

StatsPhase

A dated launch phase of one TLD.
tld
​string · required
phase
​string · enum · required
Enum values:
sunrise
claims
landrush
limited_registration
qualified_launch
exclusive_registration
approved_launch
general_availability
start
​string · date · required
end
​string · date

StatsPeriod

A month the registry reports cover.
period
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required

StatsSummary

Totals for one month.
period
​string · pattern: ^[0-9]{4}-(0[1-9]|1[… · required
tlds
​integer · min: 0 · required

TLDs with a figure that month.

domains
​integer · min: 0 · required

Their domains summed.

registrars
​integer · min: 0 · required

Registrars with names under management that month.

registries
​integer · min: 0 · required

Registry operators with names under management that month.

​object[] · required
url
​string · uri · required
​object

The newest zone night: the TLDs in it and their names.

​StatsMeta

On the top-level object of a response only.

RoundApplicationRef

An application, by id and string; the full object is at /v1/stats/applications/{id}.
id
​string · pattern: ^[0-9a-f]{8}-[0-9a-f… · required
string
​string · required

RoundApplicantRef

Who filed an application. `id` is the legal entity that filed it, not the company. `name` is the company that entity belongs to, which several legal entities can share; `legal_name` is the entity's own name. Send `id` to /v1/stats/applicants/{id} to get the company.
id
​string · pattern: ^[0-9a-f]{8}-[0-9a-f… · required
name
​string · required
legal_name
​string

The legal entity's name as ICANN lists it. Absent for a party not on ICANN's list.

RoundSwitch

The string an application switched to or from, with the date.
id
​string · pattern: ^[0-9a-f]{8}-[0-9a-f… · required
string
​string · required
date
​string · date

The day of the switch.

RoundSource

The source.
url
​string · required
title
​string
publisher
​string

On applications only.

RoundApplication

An application in the 2026 new gTLD round: one per ICANN application, plus each claim an applicant announced that ICANN's list does not hold. An application's replacement (backup) string and IDN variant labels are items of their own, with status `replacement`, `deactivated` or `variant`, and name the application they belong to in `primary`; the application names them in `replacement`, `deactivated_replacement` and `variants`. A backup string that several applications name is an item for each of them.
id
​string · pattern: ^[0-9a-f]{8}-[0-9a-f… · required

Our id, stable for v1.

round
​integer · enum · required
Enum values:
2026
string
​string · required

The string applied for, its A-label.

status
​string · enum · required

Where the application stands. catalogued and rumored are reserved and not used. announced: the applicant has said it applied. confirmed: on ICANN's published list. ghost: abandoned: announced, but not on ICANN's list under that applicant. retracted: the announcement was taken back. withdrawn: withdrawn after applying. in-contention: confirmed, and competing with other applications for the same string. auction-lost: lost the contention set at auction. will-not-proceed: ICANN will not move the application forward. delegated: added to the root zone. sunrise: in its sunrise period. launched: open for general registration. terminated: the registry agreement ended. replacement: named on ICANN's list as the replacement string of another of the applicant's applications. variant: an IDN variant label of another of the applicant's applications. switched: was applied for; the applicant moved the application to its replacement string. deactivated: named as a replacement (backup) string of another of the applicant's applications, shown on ICANN's list as deactivated, because another applicant applied for the same string or named it as a backup. Only an application live on ICANN's list counts as an application: confirmed, in-contention, delegated, sunrise, launched.

Enum values:
catalogued
rumored
announced
confirmed
ghost
retracted
withdrawn
in-contention
contention
​integer · min: 0 · required

How many applicants are pursuing the string: those with an application live on ICANN's list (confirmed, in-contention, delegated, sunrise, launched).

​RoundSource · required

The announcement or list where the application first appeared.

​RoundApplicantRef

Absent when the applicant is not known.

announced
​string · date

The day the applicant announced it applied.

summary
​string
icann_application_id
​string

ICANN's application id, once ICANN has published it.

contention_set
​string

ICANN's id for the set of applications competing for the same string.

icann_types
​string[]

ICANN's TLD types for the application, from ICANN's published list. An empty list is a generic (standard) application. variant-only is an application by the operator of an existing TLD to add an IDN variant label of it: the application is on the existing TLD and names the new label in variants. Absent when the row was not taken from ICANN's list.

Enum values:
brand
community
geographic
idn
applicant-support
variant-only

On a replacement, deactivated or variant: the application it belongs to.

​RoundApplicationRef

The application's replacement string, while it is unused.

​RoundApplicationRef

The application's replacement string that ICANN's list shows as deactivated.

The application's IDN variant labels.

​RoundSwitch

On a switched application: the replacement string it moved to.

​RoundSwitch

On the application a switch moved to: the string it moved from.

url
​string · uri

The string's page on namedesk.app. Absent for the few strings without a page.

​StatsMeta

On the top-level object of a response only.

RoundString

A string in the 2026 round: applied for, named as a backup, or claimed and abandoned. Strings that are already TLDs are not part of the round, except where ICANN lists an application to add an IDN variant label to an existing TLD (`icann_types` includes `variant-only`): that application counts, under the existing TLD, as ICANN lists it.
string
​string · required

The A-label.

round
​integer · enum · required
Enum values:
2026
status
​string · enum · required

The furthest stage any of its applications has reached.

Enum values:
catalogued
rumored
announced
confirmed
ghost
retracted
withdrawn
in-contention
applications
​integer · min: 0 · required

Applications for this string. Only an application live on ICANN's list counts as an application: confirmed, in-contention, delegated, sunrise, launched.

contention
​integer · min: 0 · required

How many applicants are pursuing it. Two or more means contested.

first_seen
​string · date · required

The day namedesk first listed the string.

​object[] · required

Each applicant on the string and its role: one entry per applicant and role, so an applicant that applies for the string and names it as a backup is listed twice.

unicode
​string

IDN only: the native-script form.

category
​string · enum

The AI assessment's leading category once the string is assessed. Absent when not known.

Enum values:
ai-tech
crypto
commerce
geo
brand
culture
infra
other
score
​integer · min: 1 · max: 100

The AI assessment's score, 1 to 100 on one fixed scale; .com is scored on it like every other TLD. Absent until the string is assessed; https://namedesk.app/tlds/methodology explains it.

verdict
​string

The assessment's one-sentence verdict. Absent until the string is assessed.

​RoundComp[]

Only on the single-string read: the AI's comparables from the 2012 round, closest first. Absent when the string has none.

url
​string · uri

The string's page on namedesk.app. Absent for the few strings without a page.

​StatsMeta

On the top-level object of a response only.

RoundComp

A string from the 2012 round the AI chose as a comparable, with what became of it and its names today from the registry statistics.
rank
​integer · min: 1 · required

1 is the closest comparable.

string
​string · required
closeness
​string · enum · required
Enum values:
strong
moderate
weak
why
​string · required

Why it is a comparable, in the AI's words.

applications
​integer · min: 0 · required

How many applied for it in 2012.

delegated
​boolean · required

It reached the root.

retired
​boolean · required

It reached the root and has since left it.

unicode
​string

IDN only: the native-script form.

winner
​string

The applicant that won it, when one did.

delegation_date
​string · date
operator
​string

Its registry operator today, when it is a TLD.

​object

Names under management in the latest month reported. Absent when it never reached the root or reports nothing.

url
​string · uri

Its page on namedesk.app, when it is a TLD.

RoundApplicant

An applicant in the 2026 round: a company, counted once however many legal entities it applied through (`legal_entities`). In the list of abandoned applicants, a company whose every claim was abandoned.
id
​string · pattern: ^[0-9a-f]{8}-[0-9a-f… · required

Our id for the company, stable for v1. It can be the same as one of its legal entities' ids; /v1/stats/applicants/{id} also takes the id of any of its legal entities.

name
​string · required

The company.

applications
​integer · min: 0 · required

Its applications in the round, over all its legal entities. Only an application live on ICANN's list counts as an application: confirmed, in-contention, delegated, sunrise, launched.

​object[] · required

The legal entities the company applied through, most applications first.

website
​string

The company's website, when known.

​object[]

The registry operators that are the same company as the applicant or are tied to it, each backed by a public source quoted on its page on namedesk.app. Absent when there is none. A tie says who the applicant is, not who will run its new TLDs.

url
​string · uri

The company's page on namedesk.app, with every legal entity it applies through and why they are one company. The address stays the same when the company is renamed.

​StatsMeta

On the top-level object of a response only.

RoundChange

One change to the round data.
at
​string · date-time · required

When namedesk made the change.

string
​string · required
change
​string · enum · required

recorded: a new application was listed. status_changed: its status moved. corrected: a fact was corrected or removed on request. noted: a note was added.

Enum values:
recorded
status_changed
corrected
noted
​RoundApplicantRef

Who filed an application. id is the legal entity that filed it, not the company. name is the company that entity belongs to, which several legal entities can share; legal_name is the entity's own name. Send id to /v1/stats/applicants/{id} to get the company.

status
​string · enum

On status_changed: the new status.

Enum values:
catalogued
rumored
announced
confirmed
ghost
retracted
withdrawn
in-contention
​RoundSource

The announcement or list behind the change, when there is one.

note
​string

The text the changelog shows with the change: why a status moved, what was corrected, or the note itself. Absent when there is none.

RoundMilestone

A milestone on ICANN's calendar for the round. A date (YYYY-MM-DD) where ICANN gave a day, a UTC timestamp where it gave a time.
milestone
​string · enum · required
Enum values:
reveal_day
replacement_period
string_confirmation_day
refund_deadline
objections
icann_closed
prioritization_draw
start
​string · pattern: ^[0-9]{4}-[0-9]{2}-[…
end
​string · pattern: ^[0-9]{4}-[0-9]{2}-[…

When it closes: the closing moment for a timestamp, the last day for a date.

when
​string

How ICANN describes a milestone it has not dated yet.

Round

The 2026 new gTLD round at a glance.
round
​integer · enum · required
Enum values:
2026
phase
​string · enum · required

Where the round is on ICANN's calendar, switching at the instants ICANN gives. before_reveal: ICANN has not published the applied-for strings. revealed: they are out, and the replacement period has not opened. replacement_period: applicants may switch to their replacement string. awaiting_confirmation: switching has closed. objections: the final list is out and objections are open. evaluation: objections have closed.

Enum values:
before_reveal
revealed
replacement_period
awaiting_confirmation
objections
evaluation
​RoundMilestone[] · required
​object · required
revealed
​boolean · required

True once ICANN's published list is in the API.

url
​string · uri · required
​StatsMeta

On the top-level object of a response only.