API Documentation
Complete reference for DNS Subdomain API endpoints
Overview
Base URL
https://hhh.wtf/v1/api
Authentication
All authenticated endpoints require an API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Authentication
All API requests require authentication using an API key (for protected endpoints). Include your API key in the request header.
Authorization: Bearer YOUR_API_KEY
Keep your API keys secure. Never commit them to version control or expose them in client-side code.
API Endpoints
/domain/search
Search Domain Availability
Check if a specific subdomain is available.
Request Body
{
"name": "myapp",
"domain": "xy.zz"
}
Example cURL
curl -X POST https://hhh.wtf/v1/api/domain/search \
-H "Content-Type: application/json" \
-d '{
"name": "myapp",
"domain": "xy.zz"
}'
Responses
Success (200) - Available
{
"ok": true,
"message": "subdomain available",
"domain": "myapp.xy.zz"
}
Not Available (404)
{
"ok": false,
"message": "subdomain not available",
"domain": "myapp.xy.zz"
}
/domain/search/bulk
Search Domain Bulk
Check subdomain availability across all active main domains.
Request Body
{
"name": "myapp"
}
Success (200)
{
"ok": true,
"name": "myapp",
"results": [
{
"fullDomain": "myapp.xy.zz",
"domain": "xy.zz",
"status": "available"
},
{
"fullDomain": "myapp.yy.zz",
"domain": "yy.zz",
"status": "not-available"
},
{
"fullDomain": "myapp.aa.bb",
"domain": "aa.bb",
"status": "not-allowed"
}
]
}
/domain/buy
Buy Domain
Purchase a subdomain with a specific plan.
Headers
Authorization: Bearer YOUR_API_KEY
Request Body
{
"name": "myapp",
"domain": "xy.zz",
"plan": "YEARLY"
}
Success (200)
{
"ok": true,
"message": "Subdomain purchased successfully",
"data": {
"subdomainId": "cm5x8y9z...",
"name": "myapp",
"domain": "xy.zz",
"plan": "YEARLY",
"expiresAt": "2026-01-15T10:30:00.000Z",
"orderId": "cm5x8y9z...",
"walletBalance": "97.00"
}
}
Insufficient Balance (402)
{
"ok": false,
"message": "Insufficient balance",
"errors": ["Insufficient balance"],
"noBalance": "No Balance",
"required": "3",
"balance": "1.50"
}
/domain/delete/:id
Delete Domain
Permanently delete a subdomain.
Headers
Authorization: Bearer YOUR_API_KEY
URL Parameter
id * - Subdomain ID
Success (200)
{
"ok": true,
"message": "Domain deleted successfully",
"data": {
"id": "cm5x8y9z...",
"name": "myapp",
"domain": "xy.zz"
}
}
Not Found (404)
{
"ok": false,
"message": "Domain not found",
"errors": ["Domain not found"]
}
/domain/dns/:id
Update DNS Records
Update DNS records for a subdomain.
Headers
Authorization: Bearer YOUR_API_KEY
Request Body
{
"records": [
{
"type": "A",
"name": "@",
"value": "192.168.1.1",
"ttl": 3600
},
{
"type": "CNAME",
"name": "www",
"value": "example.com",
"ttl": 3600
}
],
"autoPay": true
}
Success (200)
{
"ok": true,
"message": "DNS updated successfully",
"data": {
"subdomainId": "cm5x8y9z...",
"autoPay": true,
"records": [
{
"type": "A",
"name": "@",
"value": "192.168.1.1",
"ttl": 3600
}
]
}
}
/domain/toggle/:id
Toggle Domain Status
Activate or deactivate a subdomain (YEARLY plan only).
Headers
Authorization: Bearer YOUR_API_KEY
Behavior
- If domain is ACTIVE: Deactivates it and removes DNS records
- If domain is INACTIVE/EXPIRED: Reactivates it (charges $3 for 1 year renewal) and restores DNS
- Only works for YEARLY plan subdomains
Responses
Success - Activated (200)
{
"ok": true,
"message": "Sub-Domain Activated Successfully",
"data": {
"title": "Domain Activated",
"message": "Sub-Domain Activated Successfully"
}
}
Success - Deactivated (200)
{
"ok": true,
"message": "Sub-Domain Deactivated Successfully",
"data": {
"title": "Domain Deactivated",
"message": "Sub-Domain Deactivated Successfully"
}
}