TLS Check API

API reference

TLS Check HTTP endpoints on api.syndaq.com.

All TLS Check endpoints are served from https://api.syndaq.com/v1/tls/.

Authenticated requests require a valid TLS Check key. Lookup routes require your tl_sec_ secret key.

Endpoints overview

MethodPathAuthPurpose
GET/v1/tls/lookupSecret keyLookup by ?host= query parameter
GET/v1/tls/lookup/{host}Secret keyLookup by hostname in the URL path
GET/v1/tls/statusPublic or secret keyPlan limits and quota snapshot

Response headers

Successful and error responses may include:

HeaderDescription
X-Request-IdUnique ID for support and log correlation
X-RateLimit-LimitPlan requests per minute for this key
X-RateLimit-RemainingRequests left in the current minute window
X-RateLimit-ResetUnix timestamp when the minute window resets
X-Quota-LimitMonthly quota for the subscription
X-Quota-RemainingLookups left this calendar month (UTC)
X-Quota-PeriodCurrent quota month (YYYY-MM)
Retry-AfterSeconds to wait after HTTP 429

GET /v1/tls/lookup

Returns certificate metadata for a public hostname.

Request

Pass the target host using one of these forms:

GET /v1/tls/lookup/example.com
GET /v1/tls/lookup?host=example.com

You may omit https:// and path segments. Port defaults to 443 when not specified.

Headers:

Authorization: Bearer tl_sec_YOUR_SECRET_KEY

v1 scope

v1 returns hostname certificate metadata (validity window, issuer/subject, SANs, protocol, fingerprint). It is not a full cipher-suite audit, vulnerability scan, or certificate transparency search.

Success response (200)

{
  "success": true,
  "host": "example.com",
  "port": 443,
  "cached": true,
  "valid": true,
  "issuer": "DigiCert Inc",
  "subject": "example.com",
  "not_before": "2025-01-15T00:00:00Z",
  "not_after": "2026-02-15T23:59:59Z",
  "days_remaining": 215,
  "san": ["example.com", "www.example.com"],
  "protocol": "TLSv1.3",
  "fingerprint_sha256": "a1b2c3d4e5f678901234567890abcdef1234567890abcdef1234567890abcdef",
  "request_id": "e6d04020be9b57b1e1069d6e483c0443"
}

Response fields

FieldTypeDescription
hoststringNormalized hostname that was checked
portintegerTLS port used for the check
cachedbooleantrue when Syndaq already holds a recent result for this lookup
validbooleanWhether the presented certificate is currently within its validity window
issuerstringCertificate issuer summary
subjectstringCertificate subject summary
not_beforestringCertificate not-before timestamp
not_afterstringCertificate not-after timestamp
days_remainingintegerDays until expiry (may be negative if expired)
sanarraySubject Alternative Name hostnames
protocolstringNegotiated TLS protocol when available
fingerprint_sha256stringSHA-256 fingerprint of the certificate

GET /v1/tls/status

Returns key status, plan limits, and quota usage without performing a lookup.

Request

GET /v1/tls/status
Authorization: Bearer tl_sec_YOUR_SECRET_KEY

The public key (tl_pub_) is accepted on this route.

Success response (200)

{
  "success": true,
  "status": "active",
  "product": "tls",
  "plan": "starter",
  "rate_limit_per_minute": 60,
  "monthly_quota": 5000,
  "quota_unlimited": false,
  "quota_remaining": 4920,
  "quota_period": "2026-07"
}

Errors

Failed requests return JSON with success: false, error, error_code, and usually request_id.

HTTPerror_codeTypical cause
400invalid_hostMissing or malformed hostname
401missing_credentialsNo API key provided
401invalid_api_keyUnknown, inactive, or revoked key
401wrong_key_typePublic key used on a lookup endpoint
403ip_not_allowedCaller IP not on the key allowlist
422host_not_allowedPrivate, reserved, or non-routable target
429rate_limit_exceededPer-minute limit exceeded
429quota_exceededMonthly quota exhausted
502lookup_failedTemporary TLS check failure
500internal_errorUnexpected server error

Handle non-200 responses in your application and retry transient errors with exponential backoff.