Skip to content

SSL monitoring API · Certificate expiry webhooks · Alert integrations

SSL Certificate Monitoring API

Certimon's SSL certificate monitoring runs hourly checks against every registered hostname and fans expiry events out to Microsoft Teams, PagerDuty and Telegram. This page documents how those integrations look on the wire today, and the REST endpoint shape planned for direct programmatic access.

What "SSL monitoring API" means at Certimon today

A monitoring API is a continuous capability, not a one-off check. The job is to watch a list of hostnames over time, notice when a certificate is approaching expiry, and push that event into the system that should react. Certimon does this end-to-end: register a domain through the Telegram bot or the web dashboard at app.certimon.com, set one or more reminder windows, and the service handles the scheduling, TLS handshake and alert dispatch.

The current API surface is the alert side — webhooks into Microsoft Teams, PagerDuty Events API v2 and Telegram. That covers the most common reason teams reach for a monitoring API in the first place: getting expiry events into their existing incident pipeline without writing a cron job that parses openssl s_client output.

If you need a one-shot HTTP check rather than continuous monitoring with alerts, read SSL Checker API: alternatives and design for the request/response shape comparison.

Example webhook payloads

Every alert carries the same core fields: hostname, port, issuer, expiry timestamp, days remaining, and which configured reminder window fired. The transport wraps that core in the format the destination expects.

PagerDuty Events API v2 trigger

POST https://events.pagerduty.com/v2/enqueue
Content-Type: application/json

{
  "routing_key": "R0UT1NGK3Y...",
  "event_action": "trigger",
  "dedup_key": "certimon:example.com:443:30d",
  "payload": {
    "summary": "SSL certificate for example.com expires in 30 days",
    "severity": "warning",
    "source": "certimon",
    "component": "example.com:443",
    "group": "ssl-expiry",
    "class": "certificate",
    "custom_details": {
      "host": "example.com",
      "port": 443,
      "issuer": "Let's Encrypt",
      "valid_until": "2026-06-24T23:59:59Z",
      "days_remaining": 30,
      "reminder_window_days": 30,
      "status": "expiring_soon"
    }
  }
}

Microsoft Teams Adaptive Card

POST https://prod-XX.westeurope.logic.azure.com/workflows/.../triggers/...
Content-Type: application/json

{
  "type": "message",
  "attachments": [{
    "contentType": "application/vnd.microsoft.card.adaptive",
    "content": {
      "type": "AdaptiveCard",
      "version": "1.4",
      "body": [
        { "type": "TextBlock", "size": "Large", "weight": "Bolder",
          "text": "SSL expiry warning: example.com" },
        { "type": "FactSet", "facts": [
          { "title": "Host",            "value": "example.com:443" },
          { "title": "Issuer",          "value": "Let's Encrypt" },
          { "title": "Expires",         "value": "2026-06-24 23:59 UTC" },
          { "title": "Days remaining",  "value": "30" },
          { "title": "Reminder window", "value": "30 days" }
        ]}
      ]
    }
  }]
}

Telegram messages are plain text. The bot formats the same fields into a single message so the chat history stays readable on mobile.

Planned REST endpoints

A read/write REST API is on the roadmap so callers can register domains, list monitored certificates and pull a snapshot of expiry state from CI, an inventory system or a status page. The shape below is what Certimon plans to ship and welcomes feedback on before locking it in.

Authentication

Authorization: Bearer ck_live_***   # account-scoped API token
X-Certimon-Account: acct_123        # optional, for multi-account users

List monitored domains

GET /v1/domains
{
  "data": [
    {
      "host": "example.com",
      "port": 443,
      "reminder_windows_days": [30, 7, 1],
      "last_checked_at": "2026-05-25T22:00:00Z",
      "valid_until": "2026-07-25T23:59:59Z",
      "days_remaining": 61,
      "issuer": "Let's Encrypt",
      "status": "ok"
    }
  ],
  "next_cursor": null
}

Register or update a domain

PUT /v1/domains/example.com
{
  "port": 443,
  "reminder_windows_days": [30, 7, 1],
  "destinations": ["telegram", "pagerduty:routing_key_id", "teams:workflow_id"]
}

On-demand check

GET /v1/check?host=example.com&port=443
{
  "host": "example.com",
  "port": 443,
  "checked_at": "2026-05-25T22:01:13Z",
  "status": "ok",
  "days_remaining": 61,
  "valid_from": "2026-04-26T00:00:00Z",
  "valid_until": "2026-07-25T23:59:59Z",
  "issuer": "Let's Encrypt",
  "subject": "CN=example.com",
  "subject_alt_names": ["example.com", "www.example.com"],
  "hostname_matches": true,
  "chain_valid": true,
  "protocol": "TLSv1.3",
  "error": null
}

Rate limits

Planned at 60 reads/minute and 5,000/day per token. Burst above is throttled, not billed.

Idempotency

PUT /v1/domains/<host> is idempotent. Reposting the same body is a no-op.

Safety

Private IPs, localhost and ports outside the allowlist are rejected to avoid SSRF abuse.

Pricing

Certimon's monitoring service is free for unlimited domains today, including the Microsoft Teams, PagerDuty and Telegram alert integrations. There is no per-domain charge, no trial period and no premium plan.

The REST API described above will follow the same approach: a generous free tier suitable for small teams and side projects, with optional paid limits only if a usage pattern emerges that needs them. Want early access or a higher quota for a specific workload? Email [email protected] and Certimon will get back to you.

Wire SSL expiry into your alerting today

Set up the Microsoft Teams, PagerDuty or Telegram integration in the web dashboard. The REST endpoints arrive on top of the same monitoring core when they ship.

Related: SSL Checker API design · Certimon docs · Free SSL monitoring