API Reference (v1)
Headless Domains provides a RESTful API for agents and developers to programmatically search, register, manage, and discover domains across our ecosystem.
Authentication
Unless otherwise specified, API requests require a valid GFAVIP access token passed in the Authorization header, or a developer API key passed in the X-API-Key header:
Authorization: Bearer <your_gfavip_token>
X-API-Key: hd_live_...
Ordinary hd_live_ and hd_agent_ keys identify an account and have no enforced
per-key permission scopes. Each protected operation still applies its account,
ownership, management and role checks. Separately provisioned hd_org_ reseller
credentials have organization, endpoint, customer/domain and namespace-operation
restrictions; see the reseller API.
The authentication contract separates current capabilities from planned signed identity assertions and OAuth token exchange. Anonymous/claimed identity states record account association, not independent verification of a human or service. Public records are discovery information and do not replace authorization.
1. Agent Discovery
Domain Lookup (WHOIS)
Look up registration records, recorded account/operator associations and manifest links. These observations do not independently verify a human or service.
Endpoint: GET /api/v1/lookup/<domain_name>
Auth Required: No
Response Example:
{
"status": "success",
"domain": {
"name": "mytradingagent.agent",
"namespace": "agent",
"status": "active",
"registration_date": "2026-03-25T14:30:00.000Z",
"expiry_date": "2027-03-25T14:30:00.000Z"
},
"identity": {
"human_backed": false,
"human_backed_scope": "deprecated_alias_for_stored_operator_link_only",
"claim_state": "unclaimed",
"squad_id": null,
"capabilities_preview": ["general"]
},
"manifests": {
"agent_json": "https://HeadlessDomains.com/manifests/mytradingagent.agent.json",
"skill_md": "https://HeadlessDomains.com/skills/mytradingagent.agent.md"
},
"profile": {
"commerce_catalog": {
"provider": "bmos",
"storefront_id": "b81251f1-...",
"feed_url": "https://app.buildmyonlinestore.com/agentic-commerce/feeds/b812...",
"status": "active"
}
}
}
The example is abbreviated. identity.assurance carries the issuer, subject,
record-read time, exact checks and their scope. human_backed is a deprecated
operator-link alias, not a human-verification result. A provider's declared
squad_id is returned only when present; one is no longer fabricated from a
username. Partner-only lookups report a registration observation and no local
operator association. See identity assurance.
2. Domain Management
Search Domains
Endpoint: GET /api/v1/lookup/<domain.tld>
Namespace Capabilities (Read Only)
Endpoint: GET /api/v1/domains/capabilities
Use this before choosing a payment rail. It returns one capability record per
verified native namespace and enabled Partners namespace. Filter one namespace
with ?namespace=agent (or the legacy ?tld=agent alias). Each record states
the quote and registration URLs, term limits, identity and terms requirements,
supported payment methods and networks, checkout availability, and management
or status URLs.
availability is descriptive rather than a payment promise: configured
means the local rail is configured, operator_gated means the rail must be
checked at runtime, and authenticated_wallet_capability means the buyer's
GFAVIP-linked wallet must be authorized and funded. Partners availability and
price still require provider preflight.
The response is public and read-only. It does not authenticate a buyer, reserve a name, create an order, issue an invoice, or create a payment challenge.
The top-level authentication object is the shared authentication capability
register also rendered in auth.md and returned as
headlessdomains_authentication by authentication discovery metadata. Each entry
has an ID, status (available, not_implemented or planned), contract/limits,
maintenance owner role and review date. It is not a grant list for the caller's
credential or a live test of external providers. Namespace records remain in
data; the existing namespace filter does not filter the service-wide auth register.
When payment_method is omitted from the native agent registration request,
the current behavior is MPP/Tempo by default. Gems must be explicit. Base must
be explicit with X-MPP-Network and is never an implicit fallback. A 402
challenge or checkout response must be preserved and the identical request
replayed for recovery; do not create a second order or payment attempt.
Register Domain (MPP or Gems)
Endpoint: POST /api/v1/domains/register
Payload:
{
"domain": "mytradingagent",
"namespace": "agent",
"years": 1,
"payment_method": "mpp",
"agreed_to_terms": true
}
payment_method: "gems" to bypass MPP and pay with your account balance. tld is accepted as a legacy alias for namespace, but new integrations should use namespace.
Renew Domain (Autonomous)
Allows an agent to autonomously renew its own domain by submitting a valid MPP receipt.
Endpoint: POST /api/v1/renew
Auth Required: No (Auth is handled via the MPP receipt verification)
Payload:
{
"domain": "mytradingagent.agent",
"years": 1,
"payment_method": "mpp",
"receipt": "eyJhbGciOiJIUzI1NiIsInR5..."
}
Response Example (Success):
{
"status": "success",
"message": "Successfully renewed mytradingagent.agent for 1 year(s).",
"domain": {
"name": "mytradingagent.agent",
"new_expiry_date": "2028-03-25T14:30:00.000Z"
}
}
Clear Registration Lock (Troubleshooting)
If an autonomous MPP registration flow is interrupted midway, the domain may become lock-stalled to prevent double-spending. Use this endpoint to explicitly clear the stale lock before re-attempting registration.
Endpoint: POST /api/v1/domains/<domain_name>/reset-lock
Auth Required: Yes (API Key or GFAVIP Token)
Response Example (Success):
{
"status": "success",
"message": "Cleared lock for mytradingagent.agent"
}
Enable Handshake DNS (Delegate)
Allows an agent to manually trigger the delegation of its SkyInclude SLD nameservers up to the Handshake root. This should be called after the agent has fully configured its desired DNS records.
Endpoint: POST /api/v1/domains/<domain_name>/enable_dns
Auth Required: Yes (API Key or GFAVIP Token)
Response Example (Success):
{
"status": "success",
"message": "DNS records successfully delegated to the Handshake root."
}
3. Secondary Market & Commerce
Browse Secondary Market
Retrieve a list of domains currently listed for sale.
Endpoint: GET /api/v1/domains/for-sale
Auth Required: No
Query Parameters: currency (gems | usd)
Buy on Secondary Market (MPP)
Allows an AI agent to autonomously purchase a listed domain via pathUSD using the Machine Payments Protocol.
Endpoint: POST /api/v1/domains/buy-secondary
Auth Required: No (Auth is handled via the MPP receipt)
Payload:
{
"domain": "example.agent",
"receipt": "eyJhbGciOiJIUzI1NiIsInR5..."
}
Submit Numeric Offer
Submit a numeric offer for a listed domain to negotiate price securely.
Endpoint: POST /api/v1/domains/make-offer
Auth Required: Yes
Payload:
{
"domain": "example.agent",
"amount": 50.0,
"currency": "gems"
}
Sellers can configure a per-domain minimum offer floor. Offers below the floor are rejected with 400 and the body:
{
"status": "error",
"code": "offer_below_minimum",
"message": "Offer below seller minimum of 100.0 gems for example.agent",
"minimum": 100.0,
"currency": "gems"
}
min_offer object (gems and usd fields, either may be null).
View Offers
View incoming offers for domains you own, and outgoing offers you have submitted.
Endpoint: GET /api/v1/domains/offers
Auth Required: Yes
Check BMOS Integration Status
External binding check to verify if a domain is actively linked to a BuildMyOnlineStore (BMOS) storefront. Enforces strict 1-to-1 domain-to-storefront mappings.
Endpoint: GET /api/v1/domains/<domain_name>/bmos-status
Auth Required: No
Response Example:
{
"is_bound": true,
"storefront_id": "ddd7af53-792d-4ed8-891b-1adfe4f94f53"
}
Respond to Offer
Accept or reject a pending offer for your domain.
Endpoint: POST /api/v1/domains/offers/<offer_id>/respond
Auth Required: Yes
Payload:
{
"action": "accept"
}
Agent Transaction History
Retrieve a ledger of your agent's historical transactions (registrations, renewals, purchases, transfers).
Endpoint: GET /api/v1/domains/activity
Auth Required: Yes
Historical Secondary Sales
Public aggregation endpoint for directories to discover historical secondary market sales and volume.
Endpoint: GET /api/v1/domains/sold
Auth Required: No
Query Parameters: limit, offset