Brand Resolution

Resolve a domain to its canonical brand identity. Follows brand.json redirects and returns the resolved brand with its house, architecture type, and optional manifest. The domain must be a bare DNS hostname.

A domain is authoritative for its own identity, so source tells you who published the record and relationship_trust tells you whether a brand-to-house relationship was confirmed by both sides. Only mutual and inline are reciprocated; treat everything else as a claim. Record selection is deterministic: hosted > brand_json > community > enriched. source reports provenance only and must not be used as a substitute for relationship_trust. HTTP cache lifetimes are source-aware. fresh=true responses are no-store so an intermediary cannot satisfy an explicit origin-read request from its cache. The v3 hierarchy is one level deep. There is no ordered-chain endpoint: third-party verifiers use the reciprocated house_domain edge returned here. claimed_house_domain is unilateral and never extends trust.

Rate limit: 60 requests per minute per IP address.

get/api/brands/resolve

Request

  • Base URL
    https://agenticadvertising.org
  • URL
    https://agenticadvertising.org/api/brands/resolve
  • Auth
    none required

Query parameters

domainstring required
Example:acmecorp.com
fresh'true' | 'false'

Bypass the resolution cache and refetch from the origin. fresh=true responses are Cache-Control: no-store. When a fresh fetch fails and a stored record is returned instead, live_brand_json carries that fetch's diagnostics.

Response

Brand resolved successfully

canonical_idstring required
canonical_domainstring required
brand_namestring required
namesLocalizedName[]
keller_type'master' | 'sub_brand' | 'endorsed' | 'independent'
parent_brandstring
house_domainstring
claimed_house_domainstring

House the requested domain claims. This field never extends trust on its own; relationship_trust reports whether the reciprocal declaration is current enough to do so.

house_namestring
relationship_trust'inline' | 'mutual' | 'leaf_only' | 'house_only' | 'standalone' | 'unverifiable'

How the brand-to-house relationship was established. inline: the house's own document defines the brand. mutual: both sides publish the relationship — the trust-extending edge. leaf_only: the brand claims a house whose reciprocal declaration is missing, not yet active, or too old to extend trust. house_only: a house claims the brand, which has not reciprocated. standalone: the brand claims no house. unverifiable: a claimed house could not be checked.

relationship_verified_atstring date-time

When both sides of a mutual relationship were last seen agreeing. Present only for mutual, and it does not advance while the house side is unreachable, so callers can apply their own edge-aging policy.

relationship_declared_atstring date-time

When the house declared the relationship in brand_refs[].effective_at, or the resolver's durable first observation if the publisher omitted that field. Callers can apply a declaration-age ceiling independently of relationship_verified_at.

promoted_from_schemastring

Set when a pre-v3 document was promoted to a canonical v3 document for this response. Identity only — legacy relationship data is preserved opaquely, never promoted to a trust claim.

brand_agent_urlstring
brand_manifestobject
source'hosted' | 'brand_json' | 'community' | 'enriched' | 'stub' required

Provenance of the selected record, not relationship authorization. Deterministic precedence is hosted > brand_json > community > enriched > stub; normal reads prefer the durable stored winner on a source tie, while fresh=true lets a successful live origin read win a tie. brand_json: the domain's own /.well-known/brand.json. hosted: registered by an owner whose control of the domain was verified. community: contributed by a member. enriched: third-party enrichment. stub: a minimal organization-derived placeholder awaiting stronger evidence.

enrichment_providerstring

Preferred open-ended attribution/diagnostic identifier for the enrichment writer. Present only when source is enriched; it is not a trust tier or behavioral switch.

provenance_providerstring

Deprecated compatibility alias for enrichment_provider. Present only when source is enriched; it is not a trust tier or behavioral switch.

Example response

{
  "canonical_id": "acmecorp.com",
  "canonical_domain": "acmecorp.com",
  "brand_name": "Acme Corp",
  "relationship_verified_at": "2026-07-28T12:00:00Z",
  "relationship_declared_at": "2026-01-29T12:00:00Z"
}

Changes

    • warning

      removed the optional property from the response with the status

    • info

      added the optional property to the response with the status

    • info

      response property provenance_provider deprecated

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status