API Reference
Complete REST API reference for Conway Domains.
Base URL: https://domain.conway.tech
Public Endpoints
No authentication required.
GET /domains/search
Search available domains by keyword.
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search keyword |
tlds | string | No | Comma-separated TLDs (default: com,io,ai,xyz,net,org,dev) |
GET /domains/check
Check availability of specific domain names.
| Parameter | Type | Required | Description |
|---|---|---|---|
domains | string | Yes | Comma-separated domain names (max 200) |
GET /domains/pricing
Get TLD pricing.
| Parameter | Type | Required | Description |
|---|---|---|---|
tlds | string | No | Comma-separated TLDs (omit for all) |
Authentication Endpoints
POST /auth/nonce
Generate a nonce for SIWE authentication.
POST /auth/verify
Verify a SIWE signature and receive JWT tokens.
| Field | Type | Required | Description |
|---|---|---|---|
message | string | Yes | SIWE message string |
signature | string | Yes | Wallet signature |
Returns: { access_token, refresh_token }
POST /auth/refresh
Refresh an access token.
| Field | Type | Required | Description |
|---|---|---|---|
refresh_token | string | Yes | Refresh token |
Returns: { access_token }
GET /auth/me
Get the authenticated user. Requires Authorization: Bearer <token>.
POST /auth/solana/nonce
Generate a nonce for SIWS (Solana) authentication.
POST /auth/solana/verify
Verify a SIWS signature and receive JWT tokens.
Domain Endpoints
All require Authorization: Bearer <token>.
GET /domains
List all domains owned by the authenticated user.
GET /domains/:domain
Get detailed info for a specific domain. Returns cached data with background refresh when stale (> 5 min).
POST /domains/register
Register a new domain. Uses x402 payment flow.
| Field | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Domain to register (3-253 chars) |
years | integer | No | Registration period, 1-10 (default: 1) |
privacy | boolean | No | WHOIS privacy (default: true) |
nameservers | string[] | No | Custom nameservers (2-13 entries) |
Without X-PAYMENT header: Returns 402 with payment requirements.
With X-PAYMENT header: Verifies payment, registers domain, returns 201.
POST /domains/:domain/renew
Renew a domain. Uses x402 payment flow.
| Field | Type | Required | Description |
|---|---|---|---|
years | integer | No | Renewal period, 1-10 (default: 1) |
PUT /domains/:domain/privacy
Toggle WHOIS privacy.
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | Yes | Enable or disable privacy |
PUT /domains/:domain/nameservers
Update nameservers.
| Field | Type | Required | Description |
|---|---|---|---|
nameservers | string[] | Yes | 2-13 nameserver entries |
DNS Endpoints
All require Authorization: Bearer <token> and domain ownership.
GET /domains/:domain/dns
List all DNS records. Cached for 2 minutes.
POST /domains/:domain/dns
Add a DNS record.
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | A, AAAA, CNAME, MX, TXT, SRV, CAA, NS |
host | string | Yes | Hostname (@ for root) |
value | string | Yes | Record value |
ttl | integer | No | TTL 300-86400 (default: 3600) |
distance | integer | No | MX priority |
PUT /domains/:domain/dns/:recordId
Update a DNS record. All fields optional.
| Field | Type | Required | Description |
|---|---|---|---|
host | string | No | New hostname |
value | string | No | New value |
ttl | integer | No | New TTL |
distance | integer | No | New MX priority |
DELETE /domains/:domain/dns/:recordId
Delete a DNS record.
Transaction Endpoints
Requires Authorization: Bearer <token>.
GET /transactions
List all transactions for the authenticated user.
{
"transactions": [
{
"id": "txn_abc123",
"domainId": "dom_xyz789",
"type": "registration",
"amount": 43.75,
"currency": "USD",
"status": "completed",
"createdAt": "2026-02-13T00:00:00Z"
}
]
}Error Responses
All errors return a JSON object with an error field:
{ "error": "Domain not found" }| Status | Description |
|---|---|
| 400 | Validation error |
| 401 | Invalid or missing authentication |
| 402 | Payment required (x402 flow) |
| 403 | Payment wallet mismatch or insufficient permissions |
| 404 | Domain not found or not owned |
| 409 | Conflict (e.g. duplicate email) |
| 503 | Payment not configured |
Health Check
curl https://domain.conway.tech/health{
"status": "ok",
"timestamp": "2026-02-13T12:00:00.000Z"
}