Handling Custom Attributes in Templates
CertifyMe allows you to dynamically insert custom data fields into your digital credentials using custom attributes. This guide outlines how to use the CertifyMe API to assign these attributes during the credential issuance process.
Audience: Developers integrating CertifyMe’s credential issuance API into their systems, particularly those using custom fields in templates.
Overview
Custom attributes are dynamic data fields defined within a template on the CertifyMe platform. These can include information such as "eventdate", "Credits", "CourseName", and more. When issuing a credential via API, you must provide these custom values prefixed with Custom. followed by the exact field name used in the template.
Endpoint Information
URL:
https://eu2.certifyme.org/api/v2/credential
Method:
POST
Headers:
Authorization: <API Token>
accept: application/json
content-type: application/json
Request Body Parameters
| Field | Type | Description |
|---|---|---|
name |
string | Recipient's full name. |
email |
string | Recipient's email address. |
template_ID |
string | ID of the template to be used (retrieved from the CertifyMe dashboard). |
text |
string | Additional text shown on certificate (e.g., designation). |
verify_mode |
string | Verification type (e.g., SSN, Code, None). |
verify_code |
string | Verification code if applicable. |
Custom.<Field> |
string | Custom attributes defined in the template (see examples below). |
Custom field names must exactly match those defined in your CertifyMe template (case-sensitive).
PrefixCustom.is mandatory for all custom fields.
Custom Attribute Syntax
"Custom.<FieldName>": "<Value>"
Where:
<FieldName>is the exact name of the custom field as defined in the template.<Value>is the value you’d like to assign to that field.
Example Requests
1. Single Custom Attribute: eventdate
curl --request POST \
--url https://eu2.certifyme.org/api/v2/credential \
--header 'Authorization: <API Token>' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"name": "Anju",
"template_ID": "12",
"email": "anju@certifyme.cc",
"text": "Manager, CertifyMe",
"verify_mode": "SSN",
"verify_code": "123456",
"Custom.eventdate": "29th April"
}'
2. Multiple Custom Attributes: eventdate, Credits
curl --request POST \
--url https://eu2.certifyme.org/api/v2/credential \
--header 'Authorization: <API Token>' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"name": "Anju",
"template_ID": "12",
"email": "anju@certifyme.cc",
"text": "Manager, CertifyMe",
"verify_mode": "SSN",
"verify_code": "123456",
"Custom.eventdate": "29th April",
"Custom.Credits": "100"
}'
3. Extended Example with More Custom Fields
curl --request POST \
--url https://eu2.certifyme.org/api/v2/credential \
--header 'Authorization: <API Token>' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"name": "Anju",
"template_ID": "12",
"email": "anju@certifyme.cc",
"text": "Manager, CertifyMe",
"verify_mode": "SSN",
"verify_code": "123456",
"Custom.eventdate": "29th April",
"Custom.Credits": "100",
"Custom.CourseName": "Advanced Leadership"
}'
Tips for Success
- Custom field names must be an exact match (case-sensitive).
- Prefix
Custom.is mandatory. - You may include as many custom fields as are defined in the template.
- Use the API playground to generate and validate request payloads.
Support
For support or questions, please contact support@certifyme.cc.
Frequently Asked Questions
What exactly counts as a custom attribute in the CertifyMe API?
In my experience, anything that isn’t the standard name or email can be a custom attribute. Think of things like ‘EventDate’, ‘CourseName’, or even a specific ‘Credits’ count—if you’ve defined it in your template, you can send it via the API using that Custom. prefix.
Does the capitalization of my field names actually matter?
Yes, it really does. I’ve spent enough time debugging to tell you that if your template says ‘eventdate’ and your API call says ‘EventDate’, it won’t map correctly. Keep them exactly the same, case and all.
Is there a limit to how many custom fields I can include in one request?
Honestly, you can include as many as you’ve set up in your template. I usually recommend only sending what you actually need on the certificate to keep your JSON payloads clean, but the API won’t stop you if you have a dozen attributes.
Why do I need to add 'Custom.' before my field names in the code?
That’s just how our system differentiates between standard fields and your own custom ones. It’s mandatory for every single dynamic field you create, so don’t skip it or the data won’t show up on the final credential.
