DomainCat/API Docs

DomainCat REST API

DomainCat provides a simple read-only REST API for querying your SSL certificate and domain expiry data. It is designed for integration with monitoring dashboards such as Grafana. No login required — just an API key.

Base URL: https://domaincat.app/api

Authentication

All API requests require an API key passed as the api_key query parameter.

Generate your API key from Settings → API Access.

curl "https://domaincat.app/api/status?api_key=YOUR_API_KEY"
Keep your API key secret. Do not commit it to version control. Regenerate it from Settings if it is compromised.

GET /status

Returns a summary of your monitored domains — counts by expiry state. Useful for stat panels in dashboards.

GEThttps://domaincat.app/api/status?api_key=YOUR_API_KEY

Example request

curl "https://domaincat.app/api/status?api_key=YOUR_API_KEY"

Response

{
  "total": 12,
  "expiring_soon": 2,
  "ssl_expired": 0,
  "domain_expiring_soon": 1,
  "domain_expired": 0,
  "unchecked": 0
}
FieldTypeDescription
totalnumberTotal domains in your account
expiring_soonnumberSSL certs expiring within 30 days
ssl_expirednumberSSL certs already expired
domain_expiring_soonnumberDomain registrations expiring within 30 days
domain_expirednumberDomain registrations already expired
uncheckednumberDomains not yet checked

GET /domains

Returns an array of all domains in your account with SSL and registration details. Useful for table panels showing per-domain status.

GEThttps://domaincat.app/api/domains?api_key=YOUR_API_KEY

Example request

curl "https://domaincat.app/api/domains?api_key=YOUR_API_KEY"

Response

[
  {
    "id": 42,
    "hostname": "example.com",
    "label": "Main site",
    "group_name": "Clients",
    "issuer": "Let's Encrypt",
    "days_remaining": 24,
    "valid_to": "2026-04-01T00:00:00.000Z",
    "registrar": "Namecheap",
    "domain_expiry": "2027-05-15T00:00:00.000Z",
    "last_checked_at": "2026-03-07T10:00:00.000Z"
  }
]
FieldTypeDescription
idnumberInternal domain ID
hostnamestringDomain name (e.g. example.com)
labelstring | nullUser-assigned label
group_namestring | nullGroup the domain belongs to
issuerstring | nullSSL certificate issuer
days_remainingnumber | nullDays until SSL expiry (negative = expired)
valid_toISO 8601 | nullSSL certificate expiry date
registrarstring | nullDomain registrar
domain_expiryISO 8601 | nullDomain registration expiry date
last_checked_atISO 8601 | nullWhen the domain was last checked

Grafana Integration

DomainCat works with the Infinity datasource plugin (yesoreyeram-infinity-datasource), which can query any JSON REST API.

Setup steps

  1. In Grafana, go to Plugins and install the Infinity datasource plugin.
  2. Add a new datasource of type Infinity. Name it DomainCat API. No additional configuration needed — the URLs are set per panel.
  3. Import the DomainCat dashboard template (JSON) via Dashboards → Import.
  4. When prompted, select your DomainCat API datasource and enter your API key in the API_KEY variable.

Manual panel configuration

If you prefer to build panels manually, use these settings in the Infinity query editor:

SettingValue
TypeJSON
SourceURL
MethodGET
URL (domains)https://domaincat.app/api/domains?api_key=YOUR_KEY
URL (status)https://domaincat.app/api/status?api_key=YOUR_KEY
FormatTable
Root selector(leave empty)

Dashboard Template

Download the pre-built Grafana dashboard JSON. It includes 6 stat panels (total, expiring soon, expired counts) and a full domain table with color-coded SSL expiry thresholds.

Download grafana-dashboard.json

Requires Grafana 10+ and the Infinity datasource plugin (v2.0+).

DomainCat
Hi! How can I help you today?