openapi: 3.1.0 info: title: Domain Availability Checker description: 'Give this API up to 10 domain names and it will tell you whether each one has a registration record on file with the official registry. It uses RDAP — the modern, structured replacement for WHOIS — so there is no messy free-text parsing. Each domain comes back labeled ''registered'', ''unregistered'', or ''indeterminate'' (when the registry does not support RDAP for that ending). Important: ''unregistered'' means no record was found, which usually means the name is available — but reserved or premium names can also return no record. This API tells you registration status only; it does not tell you price, premium status, or whether a registrar will actually let you buy the name.' version: 1.0.0 contact: name: _done url: https://forms.gle/5KzuSFH7p8hHtDmz7 email: info@underscoredone.com x-openapi-url: https://domain-availability-checker.underscoredone.com/openapi.json x-logo: url: https://underscoredone.com/logo.png altText: _done x-guidance: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'') in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was found, null means the result could not be determined. A false result does NOT guarantee the domain is purchasable — reserved and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists for that domain ending; if false, treat the result as inconclusive. Process results one at a time — the API paces lookups to avoid rate limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a purchase guarantee; always show the disclaimer to end users.' x-ai-instructions: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'') in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was found, null means the result could not be determined. A false result does NOT guarantee the domain is purchasable — reserved and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists for that domain ending; if false, treat the result as inconclusive. Process results one at a time — the API paces lookups to avoid rate limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a purchase guarantee; always show the disclaimer to end users.' x-provider: _done — single-purpose utility APIs for developers and AI agents. Pay per call with USDC on Base Mainnet or Solana Mainnet. x-pricing: model: pay-per-call currency: USDC network: Base Mainnet or Solana Mainnet price: $0.01 x-keywords: - network - domain - availability - checker - rdap - whois - domain-lookup - tld - registration-status - name-search - brand-naming - ai-agent - utility - api - pay-per-call - usdc - x402 x-category: domain availability x-provider-url: https://underscoredone.com x-agentcash-auth: mode: paid x-402: price: $0.01 network: eip155:8453 asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' facilitator: https://api.cdp.coinbase.com/platform/v2/x402 scheme: exact description: 'Give this API up to 10 domain names and it will tell you whether each one has a registration record on file with the official registry. It uses RDAP — the modern, structured replacement for WHOIS — so there is no messy free-text parsing. Each domain comes back labeled ''registered'', ''unregistered'', or ''indeterminate'' (when the registry does not support RDAP for that ending). Important: ''unregistered'' means no record was found, which usually means the name is available — but reserved or premium names can also return no record. This API tells you registration status only; it does not tell you price, premium status, or whether a registrar will actually let you buy the name.' mime_type: application/json networks: - network: eip155:8453 asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b paths: /check: post: tags: - domain availability - is domain available - is domain registered - check domain availability - domain name search - available domains - rdap lookup - domain - domain registration check - unregistered domain - buy domain check - bulk domain check - domain availability api summary: Look up whether domain names are registered using official RDAP registry data. description: Look up whether each submitted domain name has a registration record, using the official RDAP registry system. operationId: check_check_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CheckRequest' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/CheckResponse' examples: success: summary: Successful response value: count: 2 results: - domain: example.com registered: true status: registered rdap_source: registry tld_supported: true note: A registration record exists for this domain. - domain: thisnameprobablyhasnorecord12345.ai registered: false status: unregistered rdap_source: registry tld_supported: true note: No registration record found. Usually means unregistered, but reserved or premium names can also return this result. queried_at: '2026-06-26T09:00:00Z' disclaimer: Status reflects whether a registration record exists. It does not confirm price, premium status, or that an 'unregistered' name is purchasable at standard cost. api_version: 1.0.0 '422': description: Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics. content: application/json: schema: type: object properties: detail: type: array '402': description: Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol. headers: X-Payment-Response: description: x402 payment challenge — base64-encoded JSON with payment details. schema: type: string '400': description: Bad request — your input failed validation or could not be processed. Check the detail field for specifics. content: application/json: schema: type: object properties: detail: type: string x-ai-instructions: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'') in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was found, null means the result could not be determined. A false result does NOT guarantee the domain is purchasable — reserved and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists for that domain ending; if false, treat the result as inconclusive. Process results one at a time — the API paces lookups to avoid rate limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a purchase guarantee; always show the disclaimer to end users.' x-guidance: 'POST up to 10 plain registrable domain names (like ''example.com'', not ''https://example.com'' or ''sub.example.com'') in the ''domains'' array. Each result has a ''registered'' field: true means a record exists, false means none was found, null means the result could not be determined. A false result does NOT guarantee the domain is purchasable — reserved and premium names can also return false. The ''tld_supported'' field tells you whether RDAP coverage exists for that domain ending; if false, treat the result as inconclusive. Process results one at a time — the API paces lookups to avoid rate limits, so a 10-domain batch may take up to 5 seconds. Never interpret ''unregistered'' as a purchase guarantee; always show the disclaimer to end users.' x-payment-info: price: fixed: mode: fixed currency: USD amount: '0.01' protocols: - x402: {} components: schemas: CheckRequest: properties: domains: items: type: string type: array maxItems: 10 minItems: 1 title: Domains description: Between 1 and 10 domain names to check, like 'example.com'. Use the plain domain only — no 'https://', no 'www.', no subdomains. type: object required: - domains title: CheckRequest example: domains: - example.com - mybrand.ai - coolstartup.io CheckResponse: properties: api_version: type: string title: Api Version description: The version of this API. default: 1.0.0 count: type: integer title: Count description: How many domains were checked. results: items: $ref: '#/components/schemas/DomainResult' type: array title: Results description: One result object for each domain you submitted. queried_at: type: string title: Queried At description: The date and time the check was run, in UTC. disclaimer: type: string title: Disclaimer description: An important reminder that 'unregistered' does not guarantee a domain is available to purchase. type: object required: - count - results - queried_at - disclaimer title: CheckResponse example: api_version: 1.0.0 count: 1 disclaimer: Status reflects whether a registration record exists. It does not confirm price, premium status, or that an 'unregistered' name is purchasable at standard cost. queried_at: '2026-06-26T09:00:00Z' results: - domain: example.com note: A registration record exists for this domain. rdap_source: registry registered: true status: registered tld_supported: true DomainResult: properties: domain: type: string title: Domain description: The domain name that was checked. registered: anyOf: - type: boolean - type: 'null' title: Registered description: True if a registration record exists, false if none was found, null if the result could not be determined. status: type: string title: Status description: One of 'registered', 'unregistered', or 'indeterminate'. rdap_source: type: string title: Rdap Source description: Where the lookup was performed — usually 'registry'. tld_supported: type: boolean title: Tld Supported description: Whether RDAP is available for this domain ending. If false, treat the result as inconclusive. note: type: string title: Note description: A plain-English explanation of the result. type: object required: - domain - registered - status - rdap_source - tld_supported - note title: DomainResult HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError securitySchemes: siwx: type: apiKey in: header name: SIGN-IN-WITH-X description: CAIP-122 wallet signature for repeat access after payment servers: - url: https://domain-availability-checker.underscoredone.com description: Production tags: - name: domain availability - name: is domain available - name: is domain registered - name: check domain availability - name: domain name search - name: available domains - name: rdap lookup - name: domain - name: domain registration check - name: unregistered domain - name: buy domain check - name: bulk domain check - name: domain availability api x402Version: 2 x-payment-accepts: - scheme: exact network: eip155:8453 payTo: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' - scheme: exact network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp payTo: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v