# Host Check API
> Check whether a host or website is reachable from dozens of locations around the world as an API, powered by check-host.net. Run an ICMP ping, an HTTP request, a TCP-port connect or a DNS resolution from many countries at once and get a per-node breakdown — reachable or not, response time, resolved IP, HTTP status code or DNS records — plus an aggregate "reachable from X of N nodes". Perfect for answering "is it down for everyone, or just me?", monitoring global uptime and latency, verifying CDN and geo-routing, debugging firewalls and regional blocks, and powering status pages. Also lists every available worldwide check node. No accounts, no agents to install.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/hostcheck-api/..."
```

## Pricing
- **Free** (Free) — 3,000 calls/Mo, 2 req/s
- **Starter** ($7/Mo) — 42,000 calls/Mo, 8 req/s
- **Pro** ($20/Mo) — 210,000 calls/Mo, 20 req/s
- **Mega** ($50/Mo) — 1,050,000 calls/Mo, 50 req/s

## Endpoints

### Checks

#### `GET /v1/dns` — DNS resolution check

**Parameters:**
- `host` (query, required, string) — Domain, e.g. example.com Example: `example.com`
- `max_nodes` (query, optional, string) — Nodes 1-20 Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hostcheck-api/v1/dns?host=example.com&max_nodes=5"
```

**Response:**
```json
{
    "data": {
        "type": "dns",
        "target": "example.com",
        "results": [
            {
                "A": [
                    "104.20.23.154",
                    "172.66.147.243"
                ],
                "ttl": 300,
                "AAAA": [
                    "2606:4700:10::ac42:93f3",
                    "2606:4700:10::6814:179a"
                ],
                "city": "Sofia",
                "node": "bg1.node.check-host.net",
                "country": "Bulgaria",
                "reachable": true
            },
            {
                "A": [
                    "104.20.23.154",
                    "172.66.147.243"
                ],
                "ttl": 300,
                "AAAA": [
                    "2606:4700:10::6814:179a",
                    "2606:4700:10::ac42:93f3"
                ],
                "city": "Frankfurt",
                "node": "de4.node.check-host.net",
                "country": "Germany",
                "reachable": true
            },
            {
                "A": [
                    "8.6.112.0",
                    "8.47.69.0"
                ],
                "ttl": 51,
                "AAAA": [
                    "2a06:98c1:3123:8000::",
                    "2a06:98c1:3122:8000::"
                ],
                "city": "Helsinki",
                "node": "fi1.node.check-host.net",
                "country": "Finland",
                "reachable": true
            },
            
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/http` — HTTP check from worldwide nodes

**Parameters:**
- `url` (query, required, string) — URL, e.g. https://example.com Example: `https://example.com`
- `max_nodes` (query, optional, string) — Nodes 1-20 Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hostcheck-api/v1/http?url=https%3A%2F%2Fexample.com&max_nodes=5"
```

**Response:**
```json
{
    "data": {
        "type": "http",
        "target": "https://example.com",
        "results": [
            {
                "ip": "172.66.147.243",
                "city": "Vancouver",
                "node": "ca1.node.check-host.net",
                "country": "Canada",
                "message": "OK",
                "time_ms": 21,
                "reachable": true,
                "status_code": "200"
            },
            {
                "ip": "8.47.69.0",
                "city": "Zurich",
                "node": "ch1.node.check-host.net",
                "country": "Switzerland",
                "message": "OK",
                "time_ms": 72,
                "reachable": true,
                "status_code": "200"
            },
            {
                "ip": "104.20.23.154",
                "city": "Zhejiang",
                "node": "cn1.node.check-host.net",
                "country": "China",
                "message": "OK",
                "time_ms": 688,
                "reachable": true,
                "status_code": "200"
            },
            {
                "ip": "104.20.23.154",
                "city": "Milan",
                "node": "it2.node.check-host.net",
                "country": "Italy",
                "message": "OK",
                "time_ms": 15,
                "reachable": true,
                "status_code": "200"
            },
            {
                "ip": "104.20.23.154",
                "city": "Vilnius",
 
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/ping` — ICMP ping from worldwide nodes

**Parameters:**
- `host` (query, required, string) — Host, e.g. google.com Example: `google.com`
- `max_nodes` (query, optional, string) — Nodes 1-20 (default 5) Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hostcheck-api/v1/ping?host=google.com&max_nodes=5"
```

**Response:**
```json
{
    "data": {
        "type": "ping",
        "target": "google.com",
        "results": [
            {
                "ip": "142.251.142.14",
                "city": "Paris",
                "node": "fr2.node.check-host.net",
                "status": "OK",
                "country": "France",
                "packets": 4,
                "received": 4,
                "reachable": true,
                "avg_time_ms": 2
            },
            {
                "city": "Tehran",
                "node": "ir1.node.check-host.net",
                "status": "pending",
                "country": "Iran",
                "reachable": null
            },
            {
                "ip": "142.251.38.110",
                "city": "Karaganda",
                "node": "kz1.node.check-host.net",
                "status": "OK",
                "country": "Kazakhstan",
                "packets": 4,
                "received": 4,
                "reachable": true,
                "avg_time_ms": 109
            },
            {
                "ip": "192.178.25.14",
                "city": "Stockholm",
                "node": "se1.node.check-host.net",
                "status": "OK",
                "country": "Sweden",
                "packets": 4,
                "received": 4,
                "reachable": true,
                "avg_time_ms": 1
            },
            {
                "ip": "74.125.200.139",
                "city": "Singapore",
                "node": "sg1.n
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/tcp` — TCP-connect check

**Parameters:**
- `host` (query, required, string) — host:port, e.g. example.com:443 Example: `example.com:443`
- `max_nodes` (query, optional, string) — Nodes 1-20 Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hostcheck-api/v1/tcp?host=example.com%3A443&max_nodes=5"
```

**Response:**
```json
{
    "data": {
        "type": "tcp",
        "target": "example.com:443",
        "results": [
            {
                "ip": "172.66.147.243",
                "city": "Madrid",
                "node": "es1.node.check-host.net",
                "country": "Spain",
                "time_ms": 5,
                "reachable": true
            },
            {
                "ip": "172.66.147.243",
                "city": "Barcelona",
                "node": "es2.node.check-host.net",
                "country": "Spain",
                "time_ms": 15,
                "reachable": true
            },
            {
                "ip": "104.20.23.154",
                "city": "Hong Kong",
                "node": "hk1.node.check-host.net",
                "country": "Hong Kong",
                "time_ms": 1030,
                "reachable": true
            },
            {
                "ip": "104.20.23.154",
                "city": "Kolkata",
                "node": "in5.node.check-host.net",
                "country": "India",
                "time_ms": 72,
                "reachable": true
            },
            {
                "ip": "8.6.112.0",
                "city": "Moscow",
                "node": "ru1.node.check-host.net",
                "country": "Russia",
                "time_ms": 31,
                "reachable": true
            }
        ],
        "nodes_checked": 5,
        "permanent_link": "https://check-host.net/check-report/40d77251k455",
      
…(truncated, see openapi.json for full schema)
```

### Reference

#### `GET /v1/nodes` — Available check nodes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hostcheck-api/v1/nodes"
```

**Response:**
```json
{
    "data": {
        "count": 61,
        "nodes": [
            {
                "ip": "176.125.231.26",
                "asn": "AS9009",
                "city": "Dubai",
                "node": "ae1.node.check-host.net",
                "country": "UAE"
            },
            {
                "ip": "185.224.3.111",
                "asn": "AS64457",
                "city": "Vienna",
                "node": "at1.node.check-host.net",
                "country": "Austria"
            },
            {
                "ip": "93.123.16.89",
                "asn": "AS9028",
                "city": "Sofia",
                "node": "bg1.node.check-host.net",
                "country": "Bulgaria"
            },
            {
                "ip": "45.162.230.209",
                "asn": "AS268581",
                "city": "Sao Paulo",
                "node": "br1.node.check-host.net",
                "country": "Brazil"
            },
            {
                "ip": "198.135.169.20",
                "asn": "AS396993",
                "city": "Vancouver",
                "node": "ca1.node.check-host.net",
                "country": "Canada"
            },
            {
                "ip": "179.43.148.195",
                "asn": "AS51852",
                "city": "Zurich",
                "node": "ch1.node.check-host.net",
                "country": "Switzerland"
            },
            {
                "ip": "81.6.41.187",
                "asn": "AS13030",
         
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Usage notes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hostcheck-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Check a host from dozens of worldwide nodes. /v1/ping?host=google.com — ICMP ping (reachable, avg time, ip per node); /v1/http?url=https://example.com — HTTP check (status code, time); /v1/tcp?host=example.com:443 — TCP-connect check; /v1/dns?host=example.com — DNS resolution; /v1/nodes — the available locations. Each call runs across max_nodes (1-20, default 5) countries and waits a few seconds for results — perfect for 'is it down for everyone' and global uptime checks.",
        "checks": [
            "ping",
            "http",
            "tcp",
            "dns"
        ],
        "source": "check-host.net",
        "endpoints": [
            "/v1/ping",
            "/v1/http",
            "/v1/tcp",
            "/v1/dns",
            "/v1/nodes",
            "/v1/meta"
        ]
    },
    "meta": {
        "timestamp": "2026-06-01T00:04:21.478Z",
        "request_id": "2ed3e1b6-daa3-4ed1-8702-d6e7dec5675c"
    },
    "status": "ok",
    "message": "Meta retrieved",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/hostcheck-api
OpenAPI spec: https://www.oanor.com/api/hostcheck-api/openapi.json
