Check domain availability

Check one domain name and return the same availability contract used by checkout. Use this before creating a domain order: actions.canRegister tells whether registration is possible, actions.canTransfer tells whether transfer is possible, and registryRequirements lists the fields the order body must include for the TLD. Use supportedRegisterYears and supportedTransferYears as the allowed period lists for this availability result; do not infer extra years from the TLD name or from generic 1-10 year assumptions.

Domains & DNS Domains

Authentication

No authentication required.

Context

Query Parameters

name string required · Example: example.se

Full domain name to check, including the TLD.

locale string · Example: en

Optional locale hint for registry-requirement labels and reasons.

Headers

Accept Example
Content-Type Example

Responses

200 Availability result for the requested domain.
name string · Example: example.se

Checked domain name in lowercase.

available boolean · Example: true

True when the domain can be registered right now.

reason stringnull · Example: null

Customer-facing reason when the domain is not available for registration.

actions object
actions.canRegister object required
actions.canRegister.allowed boolean required · Example: true
actions.canRegister.reason stringnull required · Example: null
actions.canRegister.code stringnull · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canTransfer object required
actions.canTransfer.allowed boolean required · Example: true
actions.canTransfer.reason stringnull required · Example: null
actions.canTransfer.code stringnull · Example: pending_order

Machine-readable reason code when an action is blocked.

billing object | null

Default registration billing summary. `null` means the availability check did not return a usable registration price.

billing.amount number required · Example: 99
billing.currencyCode string required · Example: SEK
billing.billingCycle string required · Example: annually
currencyCode string · Example: SEK

ISO-4217 currency for `renewalAmount` and other top-level price fields. Mirrors `billing.currencyCode` when billing is present.

premium boolean · Example: false

True when the registry classifies the name as premium.

requiresRegistrarFeeAcceptance boolean · Example: false

True when the order must explicitly accept additional registrar fees.

eppRequired boolean · Example: true

True when transfers for this result require an authorization code.

renewalAmount numbernull · Example: 169

Default one-year renewal amount in `currencyCode` when exposed by the catalog.

supportedRegisterYears array<integer> · Example: [1,2,3,5]

Registration periods currently supported for this result. Only use years present in this array.

supportedTransferYears array<integer> · Example: [1]

Transfer periods currently supported for this result. A free transfer can still be represented as a supported year.

existingDomainId stringnull · Example: null

Public domain ID when the authenticated caller already owns this name; otherwise `null`.

existingDomainServiceStatus stringnull · Example: null

Existing service status for a caller-owned domain, when present.

registryRequirements object

Server-derived registration and transfer requirements for this TLD. Do not reimplement TLD rules in clients.

registryRequirements.registration array<object> required
registryRequirements.registration[].key string · enum required · Example: eppCode
eppCode
phoneNumber
registrationIdentifier
companyRegistrationNumber
birthDate
registrantCountry
registrantType
useDomicile
acceptedTerms
nameservers
registryRequirements.registration[].label string required · Example: Authorization code
registryRequirements.registration[].required boolean required · Example: true
registryRequirements.registration[].appliesTo string · enum required · Example: transfer
register
transfer
both
registryRequirements.registration[].registrantType string · enum required · Example: any
any
private
organisation
registryRequirements.registration[].allowedCountryCodes arraynull · Example: null
registryRequirements.registration[].allowedRegistrantTypes arraynull · Example: null
registryRequirements.registration[].alternativeRequirementKey stringnull · Example: null
registryRequirements.registration[].acceptedTermsKey stringnull · Example: se_registration_terms
registryRequirements.registration[].reason string required · Example: An authorization code is required to transfer this domain.
registryRequirements.transfer array<object> required
registryRequirements.transfer[].key string · enum required · Example: eppCode
eppCode
phoneNumber
registrationIdentifier
companyRegistrationNumber
birthDate
registrantCountry
registrantType
useDomicile
acceptedTerms
nameservers
registryRequirements.transfer[].label string required · Example: Authorization code
registryRequirements.transfer[].required boolean required · Example: true
registryRequirements.transfer[].appliesTo string · enum required · Example: transfer
register
transfer
both
registryRequirements.transfer[].registrantType string · enum required · Example: any
any
private
organisation
registryRequirements.transfer[].allowedCountryCodes arraynull · Example: null
registryRequirements.transfer[].allowedRegistrantTypes arraynull · Example: null
registryRequirements.transfer[].alternativeRequirementKey stringnull · Example: null
registryRequirements.transfer[].acceptedTermsKey stringnull · Example: se_registration_terms
registryRequirements.transfer[].reason string required · Example: An authorization code is required to transfer this domain.
registryRequirements.countryEligibility object required
400 Invalid request. The response body is an RFC 7807 Problem Details document.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on `detail`.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when `code` is `invalid_request`.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
404 Not found. The resource does not exist or is not owned by the caller.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on `detail`.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when `code` is `invalid_request`.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
429 Rate limited. Retry after the limit resets. 429 responses include `Retry-After` seconds plus `X-RateLimit-*` headers.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on `detail`.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when `code` is `invalid_request`.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
500 Internal error. Retry later or contact support if the issue persists.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on `detail`.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when `code` is `invalid_request`.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
GET https://cloud.hostup.se/api/v2/domains/availability
For AI assistants
View as Markdown
cURL
curl -X GET "https://cloud.hostup.se/api/v2/domains/availability?name=example.se" \
  -H "Accept: application/json"
Response
{
  "name": "example.se",
  "available": true,
  "reason": null,
  "actions": {
    "canRegister": {
      "allowed": true,
      "reason": null
    },
    "canTransfer": {
      "allowed": false,
      "reason": "Domain is available for registration, not transfer."
    }
  },
  "billing": {
    "amount": 99,
    "currencyCode": "SEK",
    "billingCycle": "annually"
  },
  "currencyCode": "SEK",
  "premium": false,
  "requiresRegistrarFeeAcceptance": false,
  "eppRequired": true,
  "renewalAmount": 169,
  "supportedRegisterYears": [
    1,
    2,
    3,
    5
  ],
  "supportedTransferYears": [
    1
  ],
  "existingDomainId": null,
  "existingDomainServiceStatus": null,
  "registryRequirements": {
    "registration": [
      {
        "key": "phoneNumber",
        "label": "Phone number",
        "required": true,
        "appliesTo": "register",
        "registrantType": "any",
        "allowedCountryCodes": null,
        "allowedRegistrantTypes": null,
        "alternativeRequirementKey": null,
        "acceptedTermsKey": null,
        "reason": ".se and .nu domains require a registrant phone number before the order can be submitted."
      },
      {
        "key": "registrationIdentifier",
        "label": "Personal identity number or organization number",
        "required": true,
        "appliesTo": "register",
        "registrantType": "any",
        "allowedCountryCodes": null,
        "allowedRegistrantTypes": null,
        "alternativeRequirementKey": null,
        "acceptedTermsKey": null,
        "reason": ".se and .nu domains require a personal identity number or organization number for the registrant."
      },
      {
        "key": "acceptedTerms",
        "label": ".se registration terms",
        "required": true,
        "appliesTo": "register",
        "registrantType": "any",
        "allowedCountryCodes": null,
        "allowedRegistrantTypes": null,
        "alternativeRequirementKey": null,
        "acceptedTermsKey": "se_registration_terms",
        "reason": ".se domain registrations require acceptance of the registry registration terms before the order can be submitted."
      }
    ],
    "transfer": [
      {
        "key": "phoneNumber",
        "label": "Phone number",
        "required": true,
        "appliesTo": "transfer",
        "registrantType": "any",
        "allowedCountryCodes": null,
        "allowedRegistrantTypes": null,
        "alternativeRequirementKey": null,
        "acceptedTermsKey": null,
        "reason": ".se and .nu domains require a registrant phone number before the order can be submitted."
      },
      {
        "key": "registrationIdentifier",
        "label": "Personal identity number or organization number",
        "required": true,
        "appliesTo": "transfer",
        "registrantType": "any",
        "allowedCountryCodes": null,
        "allowedRegistrantTypes": null,
        "alternativeRequirementKey": null,
        "acceptedTermsKey": null,
        "reason": ".se and .nu domains require a personal identity number or organization number for the registrant."
      },
      {
        "key": "eppCode",
        "label": "Authorization code",
        "required": true,
        "appliesTo": "transfer",
        "registrantType": "any",
        "allowedCountryCodes": null,
        "allowedRegistrantTypes": null,
        "alternativeRequirementKey": null,
        "acceptedTermsKey": null,
        "reason": "Transfers for this domain extension require an authorization code from the current provider."
      }
    ],
    "countryEligibility": {
      "required": false,
      "allowedCountryCodes": null,
      "reason": null
    }
  }
}