---
title: "Check proxy health"
method: POST
path: "/proxies/{id}/check"
tags: ["Proxies"]
---

# Check proxy health

`POST /proxies/{id}/check`

Run a health check on the proxy to verify it's working. Optionally specify a URL to test reachability against a specific target. For ISP and datacenter proxies, this reliably tests whether the target site is reachable from the proxy's stable exit IP. For residential and mobile proxies, the exit node varies between requests, so this validates proxy configuration and connectivity rather than guaranteeing site-specific reachability.

## Path parameters

- `id` string, required

## Request body

- ProxyCheckRequest — Optional parameters for the proxy health check.
  - `url` string — An optional URL to test reachability against. If provided, the proxy check will test connectivity to this URL instead of the default test URLs. Only HTTP and HTTPS schemes are allowed, and the URL must resolve to a public IP address. For ISP and datacenter proxies, the exit IP is stable, so a successful check reliably indicates that subsequent browser sessions will reach the target site with the same IP. For residential and mobile proxies, the exit node changes between requests, so a successful check validates proxy configuration but does not guarantee that a subsequent browser session will use the same exit IP or reach the same site — it is useful for verifying credentials and connectivity, not for predicting site-specific behavior. When provided, the check result does not update the proxy's health status, since a failure may indicate a problem with the target site rather than the proxy itself.

## Response `200`

Health check completed

- Proxy — Configuration for routing traffic through a proxy.
  - `id` string
  - `name` string — Readable name of the proxy.
  - `type` 'datacenter' | 'isp' | 'residential' | 'mobile' | 'custom', required — Proxy type to use. In terms of quality for avoiding bot-detection, from best to worst: `mobile` > `residential` > `isp` > `datacenter`.
  - `protocol` 'http' | 'https' — Protocol to use for the proxy connection.
  - `bypass_hosts` string[] — Hostnames that should bypass the parent proxy and connect directly.
  - `status` 'available' | 'unavailable' — Current health status of the proxy.
  - `last_checked` string, date-time — Timestamp of the last health check performed on this proxy.
  - `ip_address` string — IP address that the proxy uses when making requests.
  - `config` union — Configuration specific to the selected proxy `type`.
    - DatacenterProxyConfig — Configuration for a datacenter proxy.
      - `country` string — ISO 3166 country code. Defaults to US if not provided.
    - IspProxyConfig — Configuration for an ISP proxy.
      - `country` string — ISO 3166 country code. Defaults to US if not provided.
    - ResidentialProxyConfig — Configuration for residential proxies.
      - `country` string — ISO 3166 country code.
      - `city` string — City name (no spaces, e.g. `sanfrancisco`). If provided, `country` must also be provided.
      - `state` string — Two-letter state code.
      - `zip` string — US ZIP code.
      - `asn` string — Autonomous system number. See https://bgp.potaroo.net/cidr/autnums.html
      - `os` 'windows' | 'macos' | 'android' — Operating system of the residential device.
    - MobileProxyConfig — Configuration for mobile proxies.
      - `country` string — ISO 3166 country code
      - `city` string — Provider city alias. Mobile carrier routing can make observed geo vary.
      - `state` string — US-only state code. Mobile carrier routing can make observed geo vary.
    - CustomProxyConfig — Configuration for a custom proxy (e.g., private proxy server).
      - `host` string, required — Proxy host address or IP.
      - `port` integer, required — Proxy port.
      - `username` string — Username for proxy authentication.
      - `has_password` boolean — Whether the proxy has a password.
      - `has_ca_bundle` boolean — Whether the proxy has a custom CA bundle configured.

## Other responses

- `400` — Bad Request – invalid input
- `401` — Unauthorized – missing or invalid authorization token
- `403` — Forbidden – insufficient permissions or plan
- `404` — Resource not found
- `422` — Unprocessable Entity – request was valid but the operation failed
- `500` — Internal Server Error

---

[API](https://skmtc.net/kernel/apis/kernel-api.md) · [All operations](https://skmtc.net/kernel/apis/kernel-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kernel/kernel-api/versions/9e8ce9fcf5e1/schema)
