Quickstart
Issue your first certificate in five minutes.
API access requires the Business plan or an active partner contract. A valid key on any other plan returns
403 forbidden— see Authentication.
1. Create an API key
- Sign in to Certify+.
- Go to Settings → API Keys.
- Click New API key, name it (e.g.
My integration), and leave the default scopes. - Copy the key shown in the dialog. It will not be shown again.
2. Find a template ID
List your templates:
curl https://YOUR_DOMAIN/api/v1/templates \
-H "Authorization: Bearer YOUR_API_KEY"
Pick the id of the template you want to use. Only active templates are returned.
3. Issue a certificate
The body is templateId plus exactly one of recipient (single) or recipients (batch). Sending neither, or both, fails with 422.
curl -X POST https://YOUR_DOMAIN/api/v1/certificates \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "TEMPLATE_UUID",
"recipient": {
"name": "Jane Doe",
"email": "jane@example.com",
"data": { "course": "Intro to TypeScript" }
}
}'
Response (201, abridged):
{
"data": {
"id": "8f4d…",
"uniqueCode": "ABC12345",
"recipientName": "Jane Doe",
"status": "Issued",
"verificationUrl": "https://YOUR_DOMAIN/verify/ABC12345",
"issuedAt": "2026-04-19T09:10:11.123Z",
"downloadCount": 0,
"emailCount": 0,
"verificationCount": 0
}
}
4. Verify it
Anyone can verify a certificate publicly — no API key required:
curl https://YOUR_DOMAIN/api/v1/verify/ABC12345
5. Download the PDF
Returns application/pdf bytes, not JSON. The PDF is rendered once at issue time and frozen, so repeat calls serve the same artifact.
curl https://YOUR_DOMAIN/api/v1/certificates/CERT_UUID/pdf \
-H "Authorization: Bearer YOUR_API_KEY" \
-o certificate.pdf
6. Email it to the recipient
Sends the delivery email with the PDF attached, to the certificate's stored address (pass recipientEmail to override for this one send). Returns 202 — delivery is asynchronous.
curl -X POST https://YOUR_DOMAIN/api/v1/certificates/CERT_UUID/send \
-H "Authorization: Bearer YOUR_API_KEY"
Poll the send history for delivery status:
curl https://YOUR_DOMAIN/api/v1/certificates/CERT_UUID/emails \
-H "Authorization: Bearer YOUR_API_KEY"
Only Issued certificates can be emailed — a revoked or draft one returns 409 conflict.
7. Issue in batch
Swap recipient for recipients (up to 500 per request):
{
"templateId": "TEMPLATE_UUID",
"recipients": [
{ "name": "Jane Doe", "email": "jane@example.com" },
{ "name": "John Smith", "email": "john@example.com" }
]
}
The response includes per-recipient results, so partial failures don't abort the batch. Batch issuance is also partial with respect to quota: if you have fewer certificates left than recipients, you still get 201 with the overflow marked failed in results. Always check created and failed.
8. Watch your quota
curl https://YOUR_DOMAIN/api/v1/usage \
-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"tier": "Business",
"certificates": { "limit": 2000, "used": 142, "remaining": 1858, "resetAt": "2026-05-01T00:00:00.000Z" }
}
}
limit and remaining are null on partner accounts, where quota is contractual.
Next steps
- Authentication — entitlement, scopes, CORS, rotation, security.
- Rate limits — headers and 429 handling.
- Errors — error envelope and full code table.
- API reference — interactive OpenAPI explorer.