> ## Documentation Index
> Fetch the complete documentation index at: https://kmerhosting.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Check public domain availability in bulk

> Unauthenticated public search served from domain.kmerhosting.com. Send an array of up to 20 domains, or one scalar `domain`, `domainName` or `q` value. One bulk request counts as one request against the client IP allowance. The legacy Domain web portal UI may redirect users to Dashboard, but this API endpoint remains stable.



## OpenAPI

````yaml /openapi.json post /api/domain-search
openapi: 3.1.0
info:
  title: KmerHosting API
  version: v1
  description: >-
    KmerHosting API contract. Authenticated account and service operations use
    api.kmerhosting.com. Public domain availability search remains
    unauthenticated on domain.kmerhosting.com and is documented here with
    operation-level servers. Customer ordering and management for Domains, Email
    Hosting and Shared Hosting are centralized in dashboard.kmerhosting.com.
servers:
  - url: https://api.kmerhosting.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Account
  - name: Services
  - name: Domains
  - name: Domain Search
    description: >-
      Public, read-only availability and pricing search served from
      domain.kmerhosting.com. No account or API key is required.
  - name: Email Hosting
  - name: Shared Hosting
  - name: LXC
  - name: KVM
  - name: ConvertSuite
paths:
  /api/domain-search:
    post:
      tags:
        - Domain Search
      summary: Check public domain availability in bulk
      description: >-
        Unauthenticated public search served from domain.kmerhosting.com. Send
        an array of up to 20 domains, or one scalar `domain`, `domainName` or
        `q` value. One bulk request counts as one request against the client IP
        allowance. The legacy Domain web portal UI may redirect users to
        Dashboard, but this API endpoint remains stable.
      operationId: post_api_domain_search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  required:
                    - domains
                  additionalProperties: false
                  properties:
                    domains:
                      type: array
                      minItems: 1
                      maxItems: 20
                      uniqueItems: true
                      items:
                        type: string
                        minLength: 3
                        maxLength: 253
                - type: object
                  required:
                    - domain
                  additionalProperties: false
                  properties:
                    domain:
                      type: string
                      minLength: 3
                      maxLength: 253
                - type: object
                  required:
                    - domainName
                  additionalProperties: false
                  properties:
                    domainName:
                      type: string
                      minLength: 3
                      maxLength: 253
                - type: object
                  required:
                    - q
                  additionalProperties: false
                  properties:
                    q:
                      type: string
                      minLength: 3
                      maxLength: 253
      responses:
        '200':
          description: Availability results and current customer pricing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicDomainSearchResponse'
        '400':
          description: No valid domain was supplied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicDomainSearchError'
        '429':
          description: >-
            The public IP allowance was exceeded. Retry after the supplied
            delay.
          headers:
            Retry-After:
              schema:
                type: integer
            X-RateLimit-Limit:
              schema:
                type: integer
            X-RateLimit-Remaining:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicDomainSearchError'
        '502':
          description: The registrar service is temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicDomainSearchError'
      security: []
      servers:
        - url: https://domain.kmerhosting.com
          description: Public domain search service
components:
  schemas:
    PublicDomainSearchResponse:
      type: object
      required:
        - results
        - bulkSearch
        - availabilitySource
        - registrarEnvironment
        - requested
        - accepted
        - invalid
        - unsupported
        - generatedAt
      properties:
        results:
          type: array
          maxItems: 20
          items:
            $ref: '#/components/schemas/PublicDomainSearchResult'
        bulkSearch:
          type: boolean
        availabilitySource:
          type: string
          enum:
            - ote
            - production
        registrarEnvironment:
          type: string
          enum:
            - ote
            - production
        requested:
          type: integer
        accepted:
          type: integer
          maximum: 20
        invalid:
          type: array
          items:
            type: string
        unsupported:
          type: integer
        generatedAt:
          type: string
          format: date-time
    PublicDomainSearchError:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          examples:
            - search_rate_limited
        message:
          type: string
    PublicDomainSearchResult:
      type: object
      required:
        - domainName
        - registrar
        - price
      properties:
        domainName:
          type: string
        registrar:
          $ref: '#/components/schemas/PublicDomainRegistrarResult'
        price:
          anyOf:
            - $ref: '#/components/schemas/PublicDomainCatalogPrice'
            - type: 'null'
    PublicDomainRegistrarResult:
      type: object
      required:
        - domainName
        - available
        - isAvailable
        - status
        - availabilitySource
      properties:
        domainName:
          type: string
        available:
          type: boolean
        isAvailable:
          type: boolean
        status:
          type: string
          enum:
            - available
            - unavailable
            - unknown
            - unsupported
        isPremium:
          type: boolean
        customerPriceUsd:
          type:
            - number
            - 'null'
        availabilitySource:
          type: string
          enum:
            - ote
            - production
        error:
          type:
            - string
            - 'null'
    PublicDomainCatalogPrice:
      type: object
      required:
        - tld
        - registration_price_usd
        - renewal_price_usd
        - transfer_price_usd
      properties:
        tld:
          type: string
          examples:
            - .com
        popular:
          type: boolean
        is_promo:
          type: boolean
        registration_price_usd:
          type:
            - number
            - 'null'
        renewal_price_usd:
          type:
            - number
            - 'null'
        transfer_price_usd:
          type:
            - number
            - 'null'
        restore_price_usd:
          type:
            - number
            - 'null'
        min_years:
          type: integer
        max_years:
          type: integer
        registration_periods:
          type: array
          items:
            type: integer
        renewal_periods:
          type: array
          items:
            type: integer
        transfer_periods:
          type: array
          items:
            type: integer
        supports_privacy:
          type: boolean
        provider_attributes:
          type: array
          items:
            $ref: '#/components/schemas/PublicDomainProviderAttribute'
    PublicDomainProviderAttribute:
      type: object
      required:
        - key
        - options
        - isRequired
      properties:
        key:
          type: string
        type:
          type: string
        options:
          type: array
          items:
            type: string
        isRequired:
          type: boolean
        description:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: KMERHOSTING_API_KEY or OAuth access token
      description: >-
        `Authorization: Bearer kh_live_...` or a user-scoped `kh_oauth_...`
        token.

````