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).
Prefix Custom. 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.