List My Certificates

GET /v1/certificates/self

List the TLS certificates of your account's domains, newest first: the certificates you uploaded and the ones ngris issued through ACME (acme_issued: true). To list one domain's certificates, use GET /v1/domains/self/{uuid}/certificates.

Account scope: these are the certificates of your active account, shared with its members per your role's permissions. Use switch account to work with a different account's certificates.

The list carries no PEM data. Download returns a certificate with its private key.

Requires the custom_ssl entitlement on your plan.

Query parameters

page int
1-based page number. Default 1.
page_size int
Certificates per page. Default 15, max 200.
q string
Keeps certificates whose name or domain name contains this text.
status string
active, expiring or expired: keeps certificates with that status (below).

Response (200 OK)

A JSON object {"items": [...], "total", "page", "page_size"}. total counts every certificate that matches the filters. Each item:

uuid string (uuid)
The certificate's uuid: used in the download/delete URLs and as certificate_uuid to attach it via PUT /v1/endpoints/{uuid}/certificate.
domain_uuid, domain_name string
The custom domain the certificate belongs to. Empty strings when it belongs to no domain.
name string
The label you gave the certificate at upload. ACME certificates are named LE cert for <domain>.
cn string
Subject Common Name read from the certificate. Empty when the certificate can't be parsed.
sans string[] | null
The DNS names (Subject Alternative Names) the certificate covers. null when it has none or can't be parsed.
issuer string
The issuer's organization (e.g. DigiCert Inc), else its Common Name, else Unknown.
not_before, not_after datetime
Validity window, RFC 3339. 0001-01-01T00:00:00Z when the date isn't recorded.
status string
active, expiring (expires within 30 days) or expired, from not_after.
is_active boolean
Whether the certificate is switched on. An expired certificate stays on and is served until it is replaced: renewed, or another certificate uploaded or assigned.
is_default boolean
true for the certificate served for its domain (one per domain). Change it with PUT /v1/domains/self/{uuid}/active-cert.
acme_issued boolean
true for a certificate ngris issued through ACME, false for one you uploaded.
quota_paused boolean
true when the certificate is paused because the account is over its plan's custom-certificate limit: it is kept but not served.
quota_paused_at datetime?
When it was paused. Only present when quota_paused is true.
created_at datetime
When the certificate was uploaded or first issued.

Deprecated: until the sunset each item also carries the legacy integer id and domain_id fields (domain_id is null when the certificate belongs to no domain). Don't use them; read uuid and domain_uuid.

Errors

400 Bad Request
status is not active, expiring or expired, or the page is past the first 100,000 certificates.
401 Unauthorized
Missing auth.
403 Forbidden
Your role can't read certificates, or your plan doesn't include the custom_ssl entitlement ("code": "entitlement_required").
Request
curl "https://api.ngris.com/v1/certificates/self?status=expiring" \ -H "X-API-KEY: <your_api_key>"
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") for c in client.certificates.list()["items"]: print(f"{c['uuid']} {c['name']} {c['status']} expires {c['not_after']}")
Response — 200 OK
{ "items": [ { "uuid": "019c11a4-2e0b-7c51-9a40-6b1f0d2e7a93", "domain_uuid": "019bd08f-98db-71b2-8e54-f518d319f111", "domain_name": "example.com", "name": "wildcard from DigiCert", "issuer": "DigiCert Inc", "cn": "*.example.com", "sans": ["*.example.com", "example.com"], "not_before": "2026-01-01T00:00:00Z", "not_after": "2026-11-01T23:59:59Z", "is_active": true, "is_default": false, "acme_issued": false, "status": "expiring", "created_at": "2026-01-02T10:00:00Z", "quota_paused": false } ], "total": 1, "page": 1, "page_size": 15 }
Was this helpful?
On this page
List My Certificates
Was this helpful?