Calling this endpoint begins the ACME DNS-01 certificate issuance process for a domain that has already been verified. The response is returned immediately with a DNS challenge that you must satisfy — the actual certificate is provisioned in the background while the service polls your DNS for the expected TXT record.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/plutoploy/dns-handling/llms.txt
Use this file to discover all available pages before exploring further.
Endpoint
Path Parameters
The unique identifier of the domain to issue a certificate for. The domain must currently have a status of
verified. Domains in any other status — including certificate_pending, active, or failed — will be rejected.Request Body
No request body is required or accepted.What Happens Internally
When this endpoint is called, the following steps occur synchronously before the 202 response is returned:- ACME account setup — The service checks the database for an existing ACME account. If one exists, its RSA-2048 private key is loaded. If not, a new RSA-2048 key pair is generated, a new account is registered with the ACME provider (e.g. Let’s Encrypt), and the key and account KID are persisted to the database for reuse.
- Order creation — A new ACME order is placed for the domain name, and the DNS-01 authorization challenge is extracted from the order’s first authorization.
- Response preparation — The
_acme-challenge.<domain>.name and the required TXT value (the ACME key authorization digest) are returned to the caller. - Status transition — The domain’s status is updated to
certificate_pendingin the database. - Background polling starts — A goroutine begins polling DNS every 10 seconds for up to 5 minutes, looking for the expected TXT record at the challenge domain.
- Order completion — Once the TXT record is detected, the service initiates the ACME challenge validation, polls for authorization, generates a fresh RSA-2048 certificate key, submits a CSR, finalizes the order, retrieves the certificate chain, and stores the certificate PEM and private key PEM in the database. The domain status is then updated to
active.
Response — 202 Accepted
The internal identifier for this ACME order, stored in the database. Can be used to correlate logs or records if debugging certificate issuance.
Always
certificate_pending for a successful call to this endpoint. Poll GET /domains/{id} to observe when the status transitions to active or failed.The fully-qualified DNS name at which the TXT record must be set, for example
_acme-challenge.example.com.. This follows the ACME DNS-01 specification and includes the trailing dot.The ACME key authorization value that must be set as the content of the TXT record at
challenge_domain. This is a base64url-encoded SHA-256 digest and is distinct from the domain verification token used in earlier steps.A human-readable summary combining
challenge_domain and expected_txt_value, suitable for display in a dashboard or CLI output.Example Request
Example Response
The background poller runs for a maximum of 5 minutes, checking every 10 seconds. If the TXT record containing
expected_txt_value is not detected at challenge_domain within that window, the domain status transitions to failed and the certificate is not issued. DNS propagation delays vary by provider — set the record as soon as possible after receiving the 202 response.Error Responses
| Status | Condition |
|---|---|
404 Not Found | No domain exists with the given id. |
400 Bad Request | The domain exists but its status is not verified. The error message includes the current status. |
500 Internal Server Error | ACME account setup failed (e.g. key generation or ACME provider registration error) or the ACME order could not be created. |