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

# Check Domain Availability with POST /v1/domains/check

> Check if one or more domains are available for registration. Batch up to 20 per request; unsupported TLDs are silently dropped from the results.

Use this endpoint to check whether one or more domain names are available for registration before you commit credits to purchasing them. You can submit a single domain via the `domain` field or batch up to 20 domains at once using the `domains` array. Each result tells you whether the domain is available and whether it carries a premium price.

## Request

**Method:** `POST`\
**Path:** `/v1/domains/check`

| Header         | Required | Value              |
| -------------- | -------- | ------------------ |
| `x-api-key`    | Yes      | Your API key       |
| `Content-Type` | Yes      | `application/json` |

### Body Parameters

<ParamField body="domain" type="string">
  A single domain name to check (e.g. `example.com`). Use this for one-off lookups. Omit if you are using `domains`.
</ParamField>

<ParamField body="domains" type="string[]">
  An array of up to 20 domain names to check in a single request. Any domains with unsupported TLDs are silently dropped from the results. Omit if you are using `domain`.
</ParamField>

<Note>
  You must provide either `domain` or `domains`. Sending a request with neither field returns a `400 Bad Request` error.
</Note>

### Request Example

```bash theme={null}
curl -X POST https://api.namegrid.org/v1/domains/check \
  -H "x-api-key: ng_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["example.com", "example.net"]}'
```

## Response — 200 OK

The response contains a `results` array with one entry per domain that was checked. Domains with unsupported TLDs are excluded rather than returned as errors.

<ResponseField name="results" type="array">
  An array of availability result objects, one per queried domain.

  <Expandable title="results[]">
    <ResponseField name="domain" type="string">
      The fully-qualified domain name that was checked.
    </ResponseField>

    <ResponseField name="available" type="boolean">
      `true` if the domain is available to register, `false` if it is already taken or reserved.
    </ResponseField>

    <ResponseField name="isPremium" type="boolean">
      `true` if the domain is classified as premium by the registry. Premium domains may have a higher registration price than the standard rate for that TLD.
    </ResponseField>
  </Expandable>
</ResponseField>

```json theme={null}
{
  "results": [
    { "domain": "example.com", "available": true, "isPremium": false },
    { "domain": "example.net", "available": false, "isPremium": false }
  ]
}
```

## Errors

| Status | Reason                                                          |
| ------ | --------------------------------------------------------------- |
| `400`  | Neither `domain` nor `domains` was provided in the request body |
