Quickstart
Issue your first certificate in five minutes.
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.
3. Issue a certificate
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:
{
"data": {
"id": "8f4d…",
"uniqueCode": "ABC12345",
"recipientName": "Jane Doe",
"status": "Issued",
"verificationUrl": "https://YOUR_DOMAIN/verify/ABC12345",
"issuedAt": "2026-04-19T09:10:11.123Z"
}
}
4. Verify it
Anyone can verify a certificate publicly — no API key required:
curl https://YOUR_DOMAIN/api/v1/verify/ABC12345
5. 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.
Next steps
- Authentication — scopes, rotation, security.
- Rate limits — headers and 429 handling.
- Errors — error envelope and full code table.
- API reference — interactive OpenAPI explorer.