6.9 KiB
6.9 KiB
Nodeloc API Examples — Full Reference with Real Response Data
Registration
curl -s 'https://domain.nodeloc.com/api/auth/register' -X POST \
-H 'Content-Type: application/json' \
-d '{"username":"[REDACTED-NAME]","email":"margaretedwardse316@gmail.com","password":"Reform123!@#"}'
Response:
{
"message": "success.user_created",
"user": {
"id": 3375,
"username": "[REDACTED-NAME]",
"email": "margaretedwardse316@gmail.com",
"email_verified": false,
"is_admin": false,
"user_level": "normal",
"domain_quota": 2,
"invite_code": "b578c9431037ff8a",
"total_invites": 0,
"successful_invites": 0,
"status": "active",
"created_at": "2026-07-16T10:39:49.944849748Z"
}
}
Login
curl -s 'https://domain.nodeloc.com/api/auth/login' -X POST \
-H 'Content-Type: application/json' \
-d '{"email":"margaretedwardse316@gmail.com","password":"Reform123!@#"}'
Response:
{
"message": "success.login",
"token": "eyJhbG... (257 chars)",
"user": {
"id": 3375,
"username": "[REDACTED-NAME]",
"email": "margaretedwardse316@gmail.com",
"email_verified": false,
"is_admin": false,
"user_level": "normal",
"domain_quota": 2,
"invite_code": "b578c9431037ff8a",
"status": "active",
"last_login_at": "2026-07-16T10:40:12.252949214Z"
}
}
Root Domains (TLDs)
curl -s 'https://domain.nodeloc.com/api/public/root-domains'
Response:
{
"root_domains": [
{
"id": 1,
"domain": "loc.cc",
"description": "Loc.cc",
"nameservers": "[\"ns1.nodelook.com\",\"ns2.nodelook.com\"]",
"use_default_nameservers": true,
"is_active": true,
"is_hot": true,
"is_new": true,
"priority": 100,
"min_length": 3,
"max_length": 63,
"registration_count": 3436,
"price_per_year": 100,
"lifetime_price": 1000,
"is_free": false,
"min_user_level": "normal"
},
{
"id": 5,
"domain": "rr.kg",
"price_per_year": 100,
"lifetime_price": 1000,
"is_free": false,
"min_user_level": "normal"
}
]
}
Calculate Price
curl -s 'https://domain.nodeloc.com/api/orders/calculate' -X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"subdomain":"[REDACTED-NAME]","root_domain_id":1,"years":10}'
Response:
{
"base_price": 1000,
"discount_amount": 0,
"final_price": 1000,
"coupon_applied": false
}
Create Order (with FREEJUL promo)
curl -s 'https://domain.nodeloc.com/api/orders' -X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"subdomain":"[REDACTED-NAME]","root_domain_id":1,"years":10,"coupon_code":"FREEJUL"}'
Response:
{
"message": "Order created successfully",
"order": {
"id": 6702,
"order_number": "ORD178419901522d1fad9",
"full_domain": "[REDACTED-NAME].loc.cc",
"years": 10,
"is_lifetime": false,
"base_price": 1000,
"discount_amount": 1000,
"final_price": 0,
"status": "pending",
"created_at": "2026-07-16T10:50:15.863928Z",
"expires_at": "2026-07-16T11:05:15.863821Z",
"root_domain": {
"id": 1,
"domain": "loc.cc"
}
}
}
Pay Free Order
curl -s "https://domain.nodeloc.com/api/payments/6707/complete-free" -X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'
Response:
{
"message": "Free order completed successfully",
"order_id": 6707
}
Paid Order Initiate
curl -s "https://domain.nodeloc.com/api/payments/${ORDER_ID}/initiate" -X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'
# → {"redirect_url":"https://..."}
List Domains
curl -s 'https://domain.nodeloc.com/api/domains' -H "Authorization: Bearer $TOKEN"
Response:
{
"domains": [
{
"id": 4901,
"full_domain": "[REDACTED-NAME].loc.cc",
"subdomain": "[REDACTED-NAME]",
"root_domain_id": 1,
"status": "active",
"registered_at": "2026-07-16T10:52:26.925642Z",
"expires_at": "2036-07-16T10:52:26.925642Z",
"nameservers": "[\"ns1.nodelook.com\",\"ns2.nodelook.com\"]",
"use_default_nameservers": true,
"auto_renew": false,
"dns_synced": false,
"user_id": 3375
}
]
}
List Orders
curl -s 'https://domain.nodeloc.com/api/orders' -H "Authorization: Bearer $TOKEN"
Response:
{
"orders": [
{
"id": 6707,
"order_number": "ORD1784199104dba87308",
"full_domain": "[REDACTED-NAME].loc.cc",
"years": 10,
"is_lifetime": false,
"base_price": 1000,
"discount_amount": 1000,
"final_price": 0,
"status": "paid",
"created_at": "2026-07-16T10:51:44.026417Z",
"paid_at": "2026-07-16T10:52:26.925642Z"
}
],
"page": 1,
"page_size": 20,
"total": 1
}
DNS — List Records
curl -s "https://domain.nodeloc.com/api/dns/4901/records" \
-H "Authorization: Bearer $TOKEN"
Response:
{
"records": [
{
"id": 6793,
"domain_id": 4901,
"name": "@",
"type": "MX",
"content": "mx1.improvmx.com",
"ttl": 3600,
"priority": 10,
"is_active": true,
"synced_to_powerdns": false
}
]
}
DNS — Add Record
Supported types: A, AAAA, CNAME, ALIAS, MX, TXT, NS, SRV, CAA.
MX records require priority field (integer).
curl -s 'https://domain.nodeloc.com/api/dns/4901/records' -X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"name":"@","type":"MX","content":"mx1.improvmx.com","priority":10,"ttl":3600}'
Response:
{
"message": "DNS record created successfully",
"record": {
"id": 6793,
"domain_id": 4901,
"name": "@",
"type": "MX",
"content": "mx1.improvmx.com",
"ttl": 3600,
"priority": 10,
"is_active": true,
"synced_to_powerdns": false,
"created_at": "2026-07-16T12:20:35.043233174Z"
}
}
Error Responses
Email already exists
{"error": "error.email_exists"}
Validation error (wrong field names, missing required fields)
{"error": "error.validation"}
Coupon already used (one per account)
{"error": "You have already used this coupon on 0001-01-01T00:00:00Z. This coupon can only be used once per user"}
Domain already registered
{"error": "Domain already registered"}
Invalid credentials
{"error": "error.invalid_credentials"}
CyberPanel provisioning failed
{"error": "CyberPanel provisioning failed: CyberPanel returned HTTP 404..."}
Password registration disabled (web UI only)
The web UI shows "当前禁止密码注册,请使用以下登录方式" but the API still accepts password registration.