ACME Status

GET /v1/domains/self/{uuid}/acme/status

Current state of automated TLS certificate issuance for a custom domain. The platform issues certificates via Let's Encrypt (or another configured ACME CA) using the DNS-01 challenge against the provider you configured. This endpoint reports whether the cert is issued, pending challenge, or in error, plus when it was last issued and when it'll auto-renew.

Useful for surfacing TLS health to users and for integrations that need to wait for a fresh cert before deploying. Renewal happens automatically ~30 days before expiry — to force an immediate reissue, use POST /v1/domains/self/{uuid}/reissue-ssl.

Path parameters

uuid string (uuid) Req
Domain UUID.

Response (200 OK)

status string
issued | pending | renewing | error | not_started.
issued_at datetime | null
When the active cert was issued. null if no cert has been issued yet.
expires_at datetime | null
Active cert expiry. Let's Encrypt issues 90-day certs.
renew_at datetime | null
When the platform's renewal worker will auto-renew this cert. Typically expires_at - 30d.
last_attempt_at datetime | null
Most recent issuance/renewal attempt timestamp.
last_error string | null
Error message from the most recent failed attempt. Empty if the last attempt succeeded.
challenges array
Pending ACME challenges (only populated while status: "pending"). Each: {type, name, value, validation_state}. For DNS-01 challenges, the platform handles the TXT-record dance with the DNS provider — you don't need to do anything.

Errors

401 Unauthorized
Missing auth.
404 Not Found
Domain doesn't exist or doesn't belong to the calling user.
Request
curl "https://api.ngris.com/v1/domains/self/<uuid>/acme/status" \ -H "X-API-KEY: <your_api_key>"
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") status = client.domains.get_acme_status("<domain_uuid>") if status["status"] == "error": print("ACME failed:", status["last_error"])
Response — issued
{ "status": "issued", "issued_at": "2026-04-15T08:23:00Z", "expires_at": "2026-07-14T08:23:00Z", "renew_at": "2026-06-14T08:23:00Z", "last_attempt_at": "2026-04-15T08:23:00Z", "last_error": null, "challenges": [] }
Response — error
{ "status": "error", "issued_at": "2026-01-15T08:23:00Z", "expires_at": "2026-04-15T08:23:00Z", "renew_at": null, "last_attempt_at": "2026-04-29T12:00:00Z", "last_error": "DNS provider returned 401 — credentials may have been rotated", "challenges": [] }
On this page
ACME Status
Iris