Skip to content

API Enterno.io

Programmatic access to all enterno.io tools: HTTP headers, DNS, SSL, ping, IP geolocation, health scores, monitors and status pages. REST API with JSON responses.

Interactive documentation (Swagger) →

Authentication

All API v3 requests require a key. Pass it via the X-API-Key header (recommended) or the api_key parameter. JSON body is also supported.

Saved in the browser. Used by all forms below.

Get an API key by creating an account or in your dashboard.

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/check.php?url=example.com"

Every response includes an X-Request-Id header for tracing.

Response Format

API v3 uses a JSON:API-style envelope with metadata:

{
  "data": { ... },
  "meta": {
    "request_id": "a1b2c3d4e5f6a7b8c9d0e1f2",
    "duration_ms": 142,
    "cached": false,
    "api_version": "3.0"
  }
}

On error:

{
  "error": {
    "code": "invalid_url",
    "message": "URL is required"
  },
  "meta": {
    "request_id": "a1b2c3d4e5f6a7b8c9d0e1f2",
    "duration_ms": 2
  }
}

For paginated endpoints, meta includes a pagination object:

"pagination": {
  "total": 15,
  "page": 1,
  "per_page": 25,
  "pages": 1
}

Rate Limits

Rate limit information is included in response headers:

HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when rate limit resets
Retry-AfterSeconds to wait (only on 429)
Plan Requests/min Daily Limit Scopes
Free10100check, dns
Pro605 000check, dns, ssl, ip, ping, monitors
Business12050 000check, dns, ssl, ip, ping, monitors

Scopes

Each API key has a set of permitted scopes. A request to an inaccessible endpoint will return a 403 error.

Scope Endpoint Description
check/api/v3/check.phpHTTP header check + health score
dns/api/v3/dns.phpDNS lookup + DNSSEC
ssl/api/v3/ssl.phpSSL/TLS check + chain details
ip/api/v3/ip.phpIP geolocation
ping/api/v3/ping.phpPing, port check, traceroute
monitors/api/v3/monitors.phpMonitor CRUD + status pages

Check — HTTP Header Check

Get HTTP response headers with detailed timing breakdown (DNS, connect, TLS, TTFB).

GET POST /api/v3/check.php

Parameters

NameTypeRequiredDescription
urlstringYesURL to check
methodstringNoGET, HEAD, POST (default: GET)
followstringNo0/1 (default: 1)
timeoutintegerNo1-30 (default: 15)
uastringNoCustom User-Agent

Example

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/check.php?url=https://example.com"

Response

{
  "data": {
    "url": "https://example.com",
    "final_url": "https://example.com/",
    "method": "GET",
    "code": 200,
    "http_version": "HTTP/2",
    "ip": "93.184.216.34",
    "headers": [...],
    "timing": {
      "dns_ms": 12,
      "connect_ms": 45,
      "tls_ms": 78,
      "ttfb_ms": 120,
      "transfer_ms": 142,
      "redirect_ms": 0,
      "redirect_count": 0
    },
    "elapsed_ms": 142
  },
  "meta": {"request_id": "...", "duration_ms": 150, "cached": false, "api_version": "3.0"}
}

DNS — DNS Lookup

Get DNS records with optional DNSSEC validation.

GET POST /api/v3/dns.php

Parameters

NameTypeRequiredDescription
domainstringYesDomain name
typesstringNoComma-separated: A,AAAA,MX,NS,TXT,CNAME,SOA
dnssecstringNo1 to check DNSSEC status

Example

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/dns.php?domain=example.com&dnssec=1"

SSL — SSL/TLS Check

Check SSL certificate with detailed chain information.

GET POST /api/v3/ssl.php

Parameters

NameTypeRequiredDescription
hoststringYesHostname
portintegerNoPort (default 443)

Example

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/ssl.php?host=example.com"

IP — Geolocation

Determine location, ISP and organization by IP address or domain.

GET POST /api/v3/ip.php

Parameters

NameTypeRequiredDescription
hoststringYesIP address or domain

Example

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/ip.php?host=8.8.8.8"

Ping — Ping, Ports & Traceroute

Ping a host, check ports, or run a traceroute.

GET POST /api/v3/ping.php

Parameters

NameTypeRequiredDescription
hoststringYesHost or IP
actionstringNoping, ports, traceroute (default: ping)
countintegerNoPing count 1-10 (default 4)
portsstringNoComma-separated ports (for action=ports)
max_hopsintegerNoMax hops 1-30 (for action=traceroute)

Example

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/ping.php?host=example.com&action=traceroute"

Health — Website Health Score

Comprehensive website health analysis: security headers (30pts), SSL/TLS (25pts), performance (25pts), best practices (20pts). Returns a score 0-100 with grade A+ to F.

GET POST /api/v3/health.php scope: check

Parameters

NameTypeRequiredDescription
urlstringYesURL to analyze

Example

curl -H "X-API-Key: YOUR_KEY" \
  "https://enterno.io/api/v3/health.php?url=example.com"

Response

{
  "data": {
    "url": "https://example.com",
    "score": 82,
    "grade": "A",
    "categories": [
      {"name": "Security Headers", "score": 22, "max": 30, "checks": [...]},
      {"name": "SSL/TLS", "score": 25, "max": 25, "checks": [...]},
      {"name": "Performance", "score": 20, "max": 25, "checks": [...]},
      {"name": "Best Practices", "score": 15, "max": 20, "checks": [...]}
    ],
    "recommendations": [
      {"type": "critical", "check": "Permissions-Policy"},
      {"type": "warning", "check": "Server info hidden"}
    ]
  },
  "meta": {"request_id": "...", "duration_ms": 2400, "cached": false, "api_version": "3.0"}
}

Monitors — CRUD

Create, read, update and delete uptime monitors via API.

List monitors

GET /api/v3/monitors.php scope: monitors
NameTypeDescription
pageintegerPage number (default 1)
per_pageintegerItems per page, max 100 (default 25)
statusstringFilter: up, down, unknown

Get single monitor

GET /api/v3/monitors.php?id=N

Returns monitor details with 20 most recent checks.

Create monitor

POST /api/v3/monitors.php
curl -X POST "https://enterno.io/api/v3/monitors.php" \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "check_type": "http",
    "interval_minutes": 5,
    "expected_code": 200,
    "notify_email": true
  }'

Update monitor

PUT /api/v3/monitors.php?id=N
curl -X PUT "https://enterno.io/api/v3/monitors.php?id=5" \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"interval_minutes": 10, "is_active": false}'

Delete monitor

DELETE /api/v3/monitors.php?id=N
curl -X DELETE "https://enterno.io/api/v3/monitors.php?id=5" \
  -H "X-API-Key: YOUR_KEY"

Status — Public Status Page

Get status page data as JSON. No authentication required when slug is provided.

GET /api/v3/status.php?slug=SLUG public

Example

curl "https://enterno.io/api/v3/status.php?slug=my-company"

Response

{
  "data": {
    "title": "My Company Status",
    "slug": "my-company",
    "overall_status": "operational",
    "monitors_total": 5,
    "monitors_down": 0,
    "monitors": [
      {"id": 1, "name": "example.com", "status": "up", "response_time_ms": 120}
    ],
    "recent_incidents": []
  },
  "meta": {"request_id": "...", "duration_ms": 15, "cached": false, "api_version": "3.0"}
}

Error Codes

HTTP Code Error Code Description
400missing_parameterMissing or invalid parameters
401auth_requiredMissing API key
401invalid_api_keyInvalid or inactive API key
403insufficient_scopeKey does not have the required scope
404not_foundResource not found
405method_not_allowedHTTP method not allowed
429rate_limit_exceededRate limit exceeded
429daily_limit_exceededDaily API request limit exceeded
502request_failedTarget server error