Create Managed Client CA

POST /v1/client-cas/managed

Have ngris create a client certificate authority for your account, then issue a certificate for each device from it. ngris keeps the CA's private key; it can't be exported. Attach the CA to endpoints like an uploaded one, with PUT /v1/endpoints/{uuid}/mtls: every certificate it issues is then accepted there. Endpoints trust CAs, not single certificates, so create one CA for each group of devices that should reach different endpoints.

The CA is listed with your other CAs with "kind": "managed". Download its public certificate with GET /v1/client-cas/{uuid}/certificate.pem. Plan-gated: needs both the mtls_attachment and the managed_client_ca entitlements; how many managed CAs the account can have is plan_limits.max_managed_cas on GET /v1/account/plan. Managed CAs don't count toward the uploaded client CA limit.

Request body

name string Req
The CA's name, for example Company laptops: 1 to 64 characters, on one line.

Response (201 Created)

The CA, in the shape of GET /v1/client-cas/{uuid}:

uuid string (uuid)
The CA's uuid. Pass it to the mTLS config in ca_uuids and to the certificate routes.
kind string
Always managed here.
name, ca_pem, subject_cn, fingerprint, not_before, not_after
The name, the CA's public certificate (PEM), its subject, SHA-256 fingerprint and validity (ten years).

Deprecated: until the sunset this response also carries the legacy integer id and *_id fields. Don't use them; read uuid and the *_uuid fields.

Errors

400 Bad Request
No name, a name longer than 64 characters or over more than one line, or a body that isn't JSON.
401 Unauthorized
Missing auth.
403 Forbidden
Caller lacks the cert:write permission; the plan doesn't include mtls_attachment or managed_client_ca ("code": "entitlement_required"); or the account has reached its plan's number of managed CAs.
429 Too Many Requests
Too many certificate requests for the account. Retry-After says when to try again.
503 Service Unavailable
"Managed client certificates aren't available right now." Try again later.
Request
curl -X POST "https://api.ngris.com/v1/client-cas/managed" \ -H "X-API-KEY: <your_api_key>" \ -H "Content-Type: application/json" \ -d '{"name": "Company laptops"}'
Response — 201 Created
{ "uuid": "019b2c40-1a2b-7c3d-8e4f-5a6b7c8d9e0f", "user_uuid": "019a52c2-ca1e-78ba-ab5c-50362cc29134", "name": "Company laptops", "description": "", "ca_pem": "-----BEGIN CERTIFICATE-----\nMIIB...\n-----END CERTIFICATE-----\n", "subject_cn": "Company laptops", "subject_raw": "CN=Company laptops,O=ngris managed client CA", "issuer_cn": "Company laptops", "issuer_raw": "CN=Company laptops,O=ngris managed client CA", "fingerprint": "3f:a9:1c:...", "not_before": "2026-10-29T10:00:00Z", "not_after": "2036-10-29T10:00:00Z", "kind": "managed", "created_at": "2026-10-29T10:00:00Z", "updated_at": "2026-10-29T10:00:00Z" }
Was this helpful?
Was this helpful?