{"openapi":"3.1.0","info":{"title":"StableDomains","description":"Domain registration via micropayments. Pay with USDC. No API keys. No accounts.","version":"1.0.0","x-guidance":"# StableDomains API\n> Domain registration via x402/MPP micropayments. No accounts. Pay USDC on Base, Solana, or Tempo.\n\n## Base URL\nhttps://stabledomains.dev\n\n## Auth\n- x402/MPP: HTTP 402 payment protocol. Paid endpoints.\n- SIWX: Wallet signature. Domain management endpoints.\n\n## Endpoints\n\n### POST /api/check\nCheck availability and pricing. Auth: x402/MPP.\nBody: { \"domain\": \"example.com\" }\nResponse: { \"domain\", \"available\", \"basePrice\", \"currentPrice\", \"bondingMultiplier\", \"dailySlotsRemaining\" }\nIf available is false, the domain cannot be registered.\n\n### POST /api/register\nRegister a domain. Auth: x402/MPP.\nBody: { \"domain\": \"example.com\", \"notificationEmail\": \"you@example.com\" }\nnotificationEmail is optional. Used for ICANN verification and expiry reminders.\nResponse: { \"domain\", \"status\", \"nameservers\", \"hostedZoneId\", \"orderId\" }\nUsually synchronous (~3s). If status is \"pending\", poll GET /api/domain/status until \"active\".\n\n### POST /api/domain/renew\nRenew for 1-10 years. Auth: x402/MPP.\nBody: { \"domain\": \"example.com\", \"count\": 3 }\ncount defaults to 1. Price = per-year renewal price × count.\n\n### GET /api/domain/list\nList domains owned by authenticated wallet. Auth: SIWX.\nResponse: array of { domain, status, expiresAt, daysRemaining, renewalPrice, icannVerified }\n\n### GET /api/domain/status?domain=example.com\nRegistration status and DNS propagation. Auth: SIWX.\nResponse: { domain, status, nsPropagated, nameservers, dnsRecords, expiresAt }\nAfter registration, poll until nsPropagated is true before configuring DNS.\n\n### GET/POST /api/domain/dns\nRead or modify DNS records. Auth: SIWX.\nGET query: ?domain=example.com\nPOST body: { \"domain\": \"example.com\", \"action\": \"upsert\"|\"delete\", \"records\": [{ \"type\": \"A\", \"name\": \"example.com\", \"value\": \"1.2.3.4\", \"ttl\": 300 }] }\nSupported types: A, AAAA, CNAME, MX, TXT, SRV, CAA. NS cannot be modified.\nMX values include priority (e.g., \"10 mail.example.com\"). ttl defaults to 300.\n\n### POST /api/domain/transfer-out\nTransfer to another registrar. Auth: SIWX.\nBody: { \"domain\": \"example.com\" }\n60-day lock after registration per ICANN policy.\n\n## TLDs and Pricing\n- .com/.org/.net/.info/.biz: $20 reg, $20 renew, $0.01 check\n- .xyz: $20 reg, $20 renew, $0.05 check\n- .dev/.app: $25 reg, $25 renew, $0.05 check\n- .io: $85 reg, $85 renew, $0.05 check\n- .ai: $150 reg, $150 renew, $0.05 check\n\n## Bonding Curve\nPrices increase as daily slots fill (max 10/day): slots 1-5 at 1.0x, 6-7 at 1.5x, 8-9 at 2.5x, slot 10 at 5.0x.\n","guidance":"# StableDomains API\n> Domain registration via x402/MPP micropayments. No accounts. Pay USDC on Base, Solana, or Tempo.\n\n## Base URL\nhttps://stabledomains.dev\n\n## Auth\n- x402/MPP: HTTP 402 payment protocol. Paid endpoints.\n- SIWX: Wallet signature. Domain management endpoints.\n\n## Endpoints\n\n### POST /api/check\nCheck availability and pricing. Auth: x402/MPP.\nBody: { \"domain\": \"example.com\" }\nResponse: { \"domain\", \"available\", \"basePrice\", \"currentPrice\", \"bondingMultiplier\", \"dailySlotsRemaining\" }\nIf available is false, the domain cannot be registered.\n\n### POST /api/register\nRegister a domain. Auth: x402/MPP.\nBody: { \"domain\": \"example.com\", \"notificationEmail\": \"you@example.com\" }\nnotificationEmail is optional. Used for ICANN verification and expiry reminders.\nResponse: { \"domain\", \"status\", \"nameservers\", \"hostedZoneId\", \"orderId\" }\nUsually synchronous (~3s). If status is \"pending\", poll GET /api/domain/status until \"active\".\n\n### POST /api/domain/renew\nRenew for 1-10 years. Auth: x402/MPP.\nBody: { \"domain\": \"example.com\", \"count\": 3 }\ncount defaults to 1. Price = per-year renewal price × count.\n\n### GET /api/domain/list\nList domains owned by authenticated wallet. Auth: SIWX.\nResponse: array of { domain, status, expiresAt, daysRemaining, renewalPrice, icannVerified }\n\n### GET /api/domain/status?domain=example.com\nRegistration status and DNS propagation. Auth: SIWX.\nResponse: { domain, status, nsPropagated, nameservers, dnsRecords, expiresAt }\nAfter registration, poll until nsPropagated is true before configuring DNS.\n\n### GET/POST /api/domain/dns\nRead or modify DNS records. Auth: SIWX.\nGET query: ?domain=example.com\nPOST body: { \"domain\": \"example.com\", \"action\": \"upsert\"|\"delete\", \"records\": [{ \"type\": \"A\", \"name\": \"example.com\", \"value\": \"1.2.3.4\", \"ttl\": 300 }] }\nSupported types: A, AAAA, CNAME, MX, TXT, SRV, CAA. NS cannot be modified.\nMX values include priority (e.g., \"10 mail.example.com\"). ttl defaults to 300.\n\n### POST /api/domain/transfer-out\nTransfer to another registrar. Auth: SIWX.\nBody: { \"domain\": \"example.com\" }\n60-day lock after registration per ICANN policy.\n\n## TLDs and Pricing\n- .com/.org/.net/.info/.biz: $20 reg, $20 renew, $0.01 check\n- .xyz: $20 reg, $20 renew, $0.05 check\n- .dev/.app: $25 reg, $25 renew, $0.05 check\n- .io: $85 reg, $85 renew, $0.05 check\n- .ai: $150 reg, $150 renew, $0.05 check\n\n## Bonding Curve\nPrices increase as daily slots fill (max 10/day): slots 1-5 at 1.0x, 6-7 at 1.5x, 8-9 at 2.5x, slot 10 at 5.0x.\n"},"servers":[{"url":"https://stabledomains.dev"}],"tags":[{"name":"Check"},{"name":"Cron"},{"name":"Domain"},{"name":"Register"}],"paths":{"/api/domain/list":{"get":{"operationId":"domain_list","summary":"domain/list","tags":["Domain"],"security":[{"siwx":[]}],"responses":{"200":{"description":"Successful response"},"402":{"description":"Authentication Required"}}}},"/api/cron/complete-registrations":{"post":{"operationId":"cron_complete-registrations","summary":"cron/complete-registrations","tags":["Cron"],"security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/domain/transfer-out":{"post":{"operationId":"domain_transfer-out","summary":"domain/transfer-out","tags":["Domain"],"security":[{"siwx":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"}},"required":["domain"]}}}},"responses":{"200":{"description":"Successful response"},"402":{"description":"Authentication Required"}}}},"/api/check":{"post":{"operationId":"check","summary":"Check domain availability and current registration price.","tags":["Check"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0","max":"0.10"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"}},"required":["domain"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"available":{"type":"boolean"},"premium":{"type":"boolean"},"tld":{"type":"string"},"basePrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"currentPrice":{"anyOf":[{"type":"string"},{"type":"null"}]},"bondingMultiplier":{"type":"string"},"dailySlotsRemaining":{"type":"number"},"supported":{"type":"boolean"},"note":{"type":"string"}},"required":["domain","available","premium","tld","basePrice","currentPrice","bondingMultiplier","dailySlotsRemaining"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/register":{"post":{"operationId":"register","summary":"Register a domain. Price follows a daily bonding curve.","tags":["Register"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0","max":"200.00"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"notificationEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["domain"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"status":{"type":"string","enum":["active","pending"]},"nameservers":{"type":"array","items":{"type":"string"}},"hostedZoneId":{"type":"string"},"orderId":{"type":"number"},"jobId":{"type":"string"},"note":{"type":"string"}},"required":["domain","status"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/domain/renew":{"post":{"operationId":"domain_renew","summary":"Renew a domain for 1-10 years.","tags":["Domain"],"x-payment-info":{"price":{"mode":"dynamic","currency":"USD","min":"0","max":"1500.00"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50"}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"count":{"default":1,"type":"integer","minimum":1,"maximum":10}},"required":["domain"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"newExpiresAt":{"type":"string"},"count":{"type":"number"},"status":{"type":"string","const":"renewal_scheduled"}},"required":["domain","newExpiresAt","count","status"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/api/domain/status":{"get":{"operationId":"domain_status","summary":"domain/status","tags":["Domain"],"security":[{"siwx":[]}],"parameters":[{"in":"query","name":"domain","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response"},"402":{"description":"Authentication Required"}}}},"/api/domain/dns":{"get":{"operationId":"domain_dns","summary":"domain/dns","tags":["Domain"],"security":[{"siwx":[]}],"parameters":[{"in":"query","name":"domain","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response"},"402":{"description":"Authentication Required"}}},"post":{"operationId":"domain_dns","summary":"domain/dns","tags":["Domain"],"security":[{"siwx":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"action":{"type":"string","enum":["upsert","delete"]},"records":{"minItems":1,"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"number"}},"required":["type","name","value"]}}},"required":["domain","action","records"]}}}},"responses":{"200":{"description":"Successful response"},"402":{"description":"Authentication Required"}}}}},"components":{"securitySchemes":{"siwx":{"type":"apiKey","in":"header","name":"SIGN-IN-WITH-X"}}}}