Issue a Badge
Please note that an archived badge template cannot be used to issue new badges.
Duplicate Badges
A badge is considered a duplicate
if it shares the same badge_template
as another badge and if it fulfills one or more of the following criteria:
- Has the same
recipient_email
- Issued to the same user
- Has the same
issuer_earner_id
Duplicate badges cannot be issued by default. However, organization admins can allow earners to receive duplicate badges from a particular badge template via editing the badge template settings.
Required Fields
recipient_email
issued_to_first_name
issued_to_last_name
badge_template_id
issued_at
Optional Fields
-
issued_to_middle_name
the user's middle name -
issuer_earner_id
allows you to attach your own system's user ID to a badge for recordkeeping. Theissuer_earner_id
will be returned in API calls and in reports, but it will not be shown to the user on the Credly site. Default:null
-
locale
allows you to define the language badge notification emails will be sent in. Available locales include:"en", "fr", "de", "ko", "ja", "zh-CN", "pt", "es-ES", "es-US", "fr-CA", "pt-BR"
. Default:"en"
-
suppress_badge_notification_email
prevents Credly from sending notification or reminder emails to the user about this badge. This allows you to send your own badge notification to the user without sending a duplicate email. Default:false
. -
expires_at
allows you to specify an expiration date for the badge. If leftnull
the badge template's default expiration is used. Set this tofalse
to indicate "no expiration". -
country_name
allows you to indicate what country the earner of this badge is from -
state_or_province
allows you to indicate what state or province the earner of this badge is from - evidence
Request
POST /organizations/<organization_id>/badges
Request Body
{
"recipient_email": "user1@example.com",
"badge_template_id": "cfaf2910-ea5f-46f1-89a5-db525dad6e58",
"issued_at": "2014-04-01 09:41:00 -0500",
"issued_to_first_name": "Earner First Name",
"issued_to_last_name": "Earner Last Name",
"expires_at": null,
"issuer_earner_id": "abc123",
"locale": "en",
"suppress_badge_notification_email": false
}
Response
201 Created
Location: <badge_url>
{
"data": {
"user": {
"id": "08cba456-8063-4001-a6d9-9ad7a8e8bd6e",
"email": "08cba456-8063-4001-a6d9-9ad7a8e8bd6e@example.com",
"first_name": "Alfred",
"middle_name": "Beaker",
"last_name": "Skiles",
"current_position_name": "*****",
"current_organization_name": "*****",
"confirmed": true,
"photo": null,
"photo_url": null,
"url": "https://www.credly.com/users/alfred-beaker-skiles"
},
"created_by": {
"type": "Organization",
"id": "e6eda68e-e3b9-4824-8176-2ea8d74570f7",
"name": "Organization 267",
"url": "https://api.credly.com/v1/organizations/e6eda68e-e3b9-4824-8176-2ea8d74570f7",
"vanity_url": "https://www.credly.com/org/organization-267",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
},
"issuer": {
"summary": "issued by Organization 267",
"entities": [
{
"label": "Issued by",
"primary": true,
"entity": {
"type": "Organization",
"id": "e6eda68e-e3b9-4824-8176-2ea8d74570f7",
"name": "Organization 267",
"url": "https://api.credly.com/v1/organizations/e6eda68e-e3b9-4824-8176-2ea8d74570f7",
"vanity_url": "https://www.credly.com/org/organization-267",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
}
}
]
},
"printing_enabled": false,
"print_method": null,
"badge_template": {
"primary_badge_template_id": null,
"variant_name": null,
"id": "a5396cfb-7c87-4982-b830-82973564fe26",
"allow_duplicate_badges": true,
"description": "Dynamically deliver go forward e-tailers",
"default_expires_at": null,
"default_expires_at_date": null,
"default_expires_at_type": null,
"earn_this_badge_url": null,
"enable_earn_this_badge": false,
"enable_detail_attribute_visibility": true,
"global_activity_url": "https://www.example.com/foo",
"lock_badge_state": false,
"name": "Badge Template 109",
"state": "active",
"public": true,
"badges_count": 1,
"recipient_type": "User",
"send_expiring_badge_notifications": false,
"settings_enable_related_badges": true,
"show_badge_lmi": false,
"show_lmi_jobs": false,
"show_skill_tag_links": true,
"vanity_slug": "badge-template-109",
"record_to_blockchain": null,
"translatable": false,
"printing_disabled": false,
"visibility": "public",
"variants_allowed": false,
"variant_type": null,
"allow_delete": false,
"allow_archive": true,
"available_locales": [
],
"only_one_skill_required": false,
"linkedin_share_default_message": "View my verified achievement from @Org_Name.",
"level": null,
"time_to_earn": null,
"cost": null,
"type_category": null,
"criteria_url_name": null,
"criteria_url": null,
"certification": true,
"state_updated_at": null,
"created_at": "2014-04-01T14:41:00.000Z",
"updated_at": "2014-04-01T14:41:00.000Z",
"show_template_settings": false,
"get_issue_count": 1,
"get_variants_issue_count": 0,
"image": {
"id": "2eeeec33-bf14-41ee-b053-34d8b4e08928",
"url": "/system/test/images/2eeeec33-bf14-41ee-b053-34d8b4e08928/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"url": "https://www.credly.com/org/organization-267/badge/badge-template-109",
"owner": {
"type": "Organization",
"id": "e6eda68e-e3b9-4824-8176-2ea8d74570f7",
"name": "Organization 267",
"enable_blockchain": false,
"url": "https://api.credly.com/v1/organizations/e6eda68e-e3b9-4824-8176-2ea8d74570f7",
"vanity_url": "https://www.credly.com/org/organization-267",
"vanity_slug": "organization-267",
"verified": true,
"viewable": true
},
"alignments": [
{
"id": "31c08040-eaef-4019-a303-65eb61849327",
"name": "Alignment 116",
"url": "http://www.example.com/alignment",
"description": "Self-enabling cohesive task-force"
}
],
"recommendations": [
{
"id": "5f550d81-60b2-4166-b0e2-438f7f08c565",
"title": "Recommendation Title",
"type": "information",
"activity_url": "http://www.example.com/recommendation"
}
],
"required_badge_templates": [
],
"badge_template_activities": [
{
"id": "fe2cfc80-ffbd-404a-9b98-1c815419a352",
"title": "Kickboxing Activity",
"activity_type": "Schedule / Registration",
"activity_url": "http://www.example.com/awesomepage",
"required_badge_template_id": null
}
],
"skills": [
"Skill 335",
"Skill 336",
"Skill 337"
],
"endorsements": [
]
},
"id": "85e43b0a-6bb8-4d46-b6de-f6bba7d324b9",
"issued_to": "Earner First Name Earner Last Name",
"issued_to_first_name": "Earner First Name",
"issued_to_middle_name": null,
"issued_to_last_name": "Earner Last Name",
"issuer_earner_id": "abc123",
"locale": "en",
"public": true,
"translate_metadata": false,
"replacement_badge_id": null,
"replaces_badge_id": null,
"revocation_reason": null,
"state": "pending",
"suppress_badge_notification_email": false,
"updated_at": "2014-04-01T14:41:00.000Z",
"completed_pathway_id": null,
"recipient_email": "user1@example.com",
"country": null,
"country_code": null,
"state_or_province": null,
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": null,
"expires_at_date": null,
"issued_at": "2014-04-01T14:41:00.000Z",
"issued_at_date": "2014-04-01",
"state_updated_at": null,
"is_private_badge": false,
"image": {
"id": "2eeeec33-bf14-41ee-b053-34d8b4e08928",
"url": "/system/test/images/2eeeec33-bf14-41ee-b053-34d8b4e08928/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"alignments": [
{
"name": "Alignment 116",
"description": "Self-enabling cohesive task-force"
}
],
"evidence": [
],
"accept_badge_url": "https://www.credly.com/badges/85e43b0a-6bb8-4d46-b6de-f6bba7d324b9/accept"
},
"metadata": {
}
}
Badge Evidence
A Badge can have multiple items of evidence associated with it. The four evidence types are
KeyValueGroupEvidence
, PlainTextEvidence
, UrlEvidence
, and IdEvidence
. Here is an example of creating a
badge with all four types:
Request Body
{
"recipient_email": "test@example.com",
"badge_template_id": "63f87fa1-f7e5-4925-981d-54ec312df1ec",
"issued_at": "2014-04-01 09:41:00 -0500",
"issued_to": "Firstname Lastname",
"issued_to_first_name": "Firstname",
"issued_to_last_name": "Lastname",
"expires_at": null,
"evidence": [
{
"type": "KeyValueGroupEvidence",
"name": "Custom Evidence",
"values": [
{
"type": "KeyValuePairEvidence",
"key": "Testing Center",
"value": "Central Test Facility, Minneapolis, MN",
"url": "http://www.url-in-custom-evidence-is-optional.com"
}
]
},
{
"type": "PlainTextEvidence",
"title": "Evidence",
"description": "The evidence is clear."
},
{
"type": "UrlEvidence",
"value": "http://www.example.com/evidence",
"description": "Description in URL evidence is optional",
"name": "Evidence"
},
{
"type": "IdEvidence",
"title": "Drivers License Example",
"description": "AAABBBCCC"
}
]
}
Response
201 Created
Location: <badge_url>
{
"data": {
"user": {
},
"created_by": {
"type": "Organization",
"id": "442575ba-7aaf-4253-b956-0de0a95e3083",
"name": "Organization 271",
"url": "https://api.credly.com/v1/organizations/442575ba-7aaf-4253-b956-0de0a95e3083",
"vanity_url": "https://www.credly.com/org/organization-271",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
},
"issuer": {
"summary": "issued by Organization 271",
"entities": [
{
"label": "Issued by",
"primary": true,
"entity": {
"type": "Organization",
"id": "442575ba-7aaf-4253-b956-0de0a95e3083",
"name": "Organization 271",
"url": "https://api.credly.com/v1/organizations/442575ba-7aaf-4253-b956-0de0a95e3083",
"vanity_url": "https://www.credly.com/org/organization-271",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
}
}
]
},
"printing_enabled": false,
"print_method": null,
"badge_template": {
"primary_badge_template_id": null,
"variant_name": null,
"id": "9f72da48-e79c-4e4b-a14f-bcbde0492e53",
"allow_duplicate_badges": true,
"description": "Dynamically deliver go forward e-tailers",
"default_expires_at": null,
"default_expires_at_date": null,
"default_expires_at_type": null,
"earn_this_badge_url": null,
"enable_earn_this_badge": false,
"enable_detail_attribute_visibility": true,
"global_activity_url": "https://www.example.com/foo",
"lock_badge_state": false,
"name": "Badge Template 111",
"state": "active",
"public": true,
"badges_count": 1,
"recipient_type": "User",
"send_expiring_badge_notifications": false,
"settings_enable_related_badges": true,
"show_badge_lmi": false,
"show_lmi_jobs": false,
"show_skill_tag_links": true,
"vanity_slug": "badge-template-111",
"record_to_blockchain": null,
"translatable": false,
"printing_disabled": false,
"visibility": "public",
"variants_allowed": false,
"variant_type": null,
"allow_delete": false,
"allow_archive": true,
"available_locales": [
],
"only_one_skill_required": false,
"linkedin_share_default_message": "View my verified achievement from @Org_Name.",
"level": null,
"time_to_earn": null,
"cost": null,
"type_category": null,
"criteria_url_name": null,
"criteria_url": null,
"certification": true,
"state_updated_at": null,
"created_at": "2014-04-01T14:41:00.000Z",
"updated_at": "2014-04-01T14:41:00.000Z",
"show_template_settings": false,
"get_issue_count": 1,
"get_variants_issue_count": 0,
"image": {
"id": "d5c7ab70-70e9-41b2-993a-8f3c7649ca55",
"url": "/system/test/images/d5c7ab70-70e9-41b2-993a-8f3c7649ca55/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"url": "https://www.credly.com/org/organization-271/badge/badge-template-111",
"owner": {
"type": "Organization",
"id": "442575ba-7aaf-4253-b956-0de0a95e3083",
"name": "Organization 271",
"enable_blockchain": false,
"url": "https://api.credly.com/v1/organizations/442575ba-7aaf-4253-b956-0de0a95e3083",
"vanity_url": "https://www.credly.com/org/organization-271",
"vanity_slug": "organization-271",
"verified": true,
"viewable": true
},
"alignments": [
{
"id": "3cb80c7c-7772-4aff-b00d-672daada8ebb",
"name": "Alignment 120",
"url": "http://www.example.com/alignment",
"description": "Self-enabling cohesive task-force"
}
],
"recommendations": [
{
"id": "470532d8-9ba0-4b8b-ad81-9015e16469b4",
"title": "Recommendation Title",
"type": "information",
"activity_url": "http://www.example.com/recommendation"
}
],
"required_badge_templates": [
],
"badge_template_activities": [
{
"id": "a30b24bb-0498-4094-abbe-bfa63c2f2933",
"title": "Kickboxing Activity",
"activity_type": "Schedule / Registration",
"activity_url": "http://www.example.com/awesomepage",
"required_badge_template_id": null
}
],
"skills": [
"Skill 341",
"Skill 342",
"Skill 343"
],
"endorsements": [
]
},
"id": "2ec89987-de49-413e-9e16-6df144dc5242",
"issued_to": "Firstname Lastname",
"issued_to_first_name": "Firstname",
"issued_to_middle_name": null,
"issued_to_last_name": "Lastname",
"issuer_earner_id": null,
"locale": "en",
"public": true,
"translate_metadata": false,
"replacement_badge_id": null,
"replaces_badge_id": null,
"revocation_reason": null,
"state": "pending",
"suppress_badge_notification_email": false,
"updated_at": "2014-04-01T14:41:00.000Z",
"completed_pathway_id": null,
"recipient_email": "test@example.com",
"country": null,
"country_code": null,
"state_or_province": null,
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": null,
"expires_at_date": null,
"issued_at": "2014-04-01T14:41:00.000Z",
"issued_at_date": "2014-04-01",
"state_updated_at": null,
"is_private_badge": false,
"image": {
"id": "d5c7ab70-70e9-41b2-993a-8f3c7649ca55",
"url": "/system/test/images/d5c7ab70-70e9-41b2-993a-8f3c7649ca55/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"alignments": [
{
"name": "Alignment 120",
"description": "Self-enabling cohesive task-force"
}
],
"evidence": [
{
"id": "3c3d6000-84a7-4c53-b028-fdad3aa7d21c",
"type": "KeyValueGroupEvidence",
"name": "Custom Evidence",
"values": [
{
"key": "Testing Center",
"value": "Central Test Facility, Minneapolis, MN",
"url": "http://www.url-in-custom-evidence-is-optional.com"
}
]
},
{
"id": "792d5270-78d2-414a-b910-6c16da7df4e3",
"type": "PlainTextEvidence",
"title": "Evidence",
"description": "The evidence is clear."
},
{
"id": "4532b892-e4dc-4ef7-b460-fd58e65835a4",
"type": "UrlEvidence",
"name": "Evidence",
"description": "Description in URL evidence is optional",
"value": "http://www.example.com/evidence"
},
{
"id": "127d0782-0384-4666-a502-3e78ab5771cc",
"type": "IdEvidence",
"title": "Drivers License Example",
"description": "AAABBBCCC"
}
],
"accept_badge_url": "https://www.credly.com/badges/2ec89987-de49-413e-9e16-6df144dc5242/accept"
},
"metadata": {
}
}
Get Issued Badges
Request
GET /organizations/<organization_id>/badges
Query Param | Description |
---|---|
filter=<filter> |
Gets badges issued by the specified organization that match the filter |
sort=<sort> |
Sorts the results based on the sort parameter |
page=<page_number> |
Gets the specified page of badges with the specified state issued by the specified organization |
Filtering
The filter
parameter has the following format: key::value
. You can combine keys for stricter searches, e.g. state::pending|user_id::42
.
Results can be filtered with the following keys:
Key | Description |
---|---|
query |
Partial matches on badge user full name, or user email address (partial email address matches beginning with '@' e.g. @example.com or @*.example.com) |
state |
Returns badges in the specified state (pending , accepted , rejected , revoked ); allows multiple states delimited by comma |
user_id |
Returns badges for the user with the specified user ID |
issued_at_min |
Returns badges with issue date on or after the specified date (YYYY-MM-DD) |
issued_at_max |
Returns badges with issue date on or before the specified date (YYYY-MM-DD) |
issued_at_date_min |
Returns badges with the time zone-agnostic issue date on or after the specified date (YYYY-MM-DD) |
issued_at_date_max |
Returns badges with the time zone-agnostic issue date on or before the specified date (YYYY-MM-DD) |
issuer_id |
Returns badges issued by an organization with the specified ID; allows multiple IDs delimited by comma |
issuer_earner_id |
Returns badges with the specified issuer earner ID |
public |
Returns badges that are public or non-public for specified true or false value |
badge_templates[owner_id] |
Returns issued badges owned by an organization with the specified ID; allows multiple IDs delimited by comma |
badge_templates[name] |
Partial matches on badge template name |
badge_templates[reporting_tags] |
Returns badges with specified reporting tags as a comma delimited list |
badge_templates[skills] |
Returns badges matching any of the skills specified as a comma delimited list |
created_at_min |
Returns badges created on or after the specified date (YYYY-MM-DD) |
created_at_max |
Returns badges created on or before the specified date (YYYY-MM-DD) |
expires_at_min |
Returns badges expiring on or after the specified date (YYYY-MM-DD), including badges with no expiration date |
expires_at_max |
Returns badges expiring on or before the specified date (YYYY-MM-DD) |
expires_at_date_min |
Returns badges with time zone-agnostic expiration on or after the specified date (YYYY-MM-DD), including badges with no expiration date |
expires_at_date_max |
Returns badges with time zone-agnostic expiration on or before the specified date (YYYY-MM-DD) |
state_updated_at_min |
Returns badges with state change on or after the specified date (YYYY-MM-DD) |
state_updated_at_max |
Returns badges with state change on or before the specified date (YYYY-MM-DD) |
updated_at_min |
Returns badges with change on or after the specified date (YYYY-MM-DD) |
updated_at_max |
Returns badges with change on or before the specified date (YYYY-MM-DD) |
badge_template_id |
Returns badges with the specified badge template ID; allows multiple IDs delimited by comma |
recipient_email |
Returns issued badges with recipient email matching the specified value |
recipient_email_all |
Returns issued badges belonging to the user who has a primary or secondary email matching the specified value |
Sorting
The sort
parameter has the following format: key1|key2
. You can optionally include a -
to indicate descending order. e.g. -issued_at
would return results in order with the most recently issued badges first.
Results can be sorted with the following keys:
Key | Description |
---|---|
created_at |
Date the badge was created |
issued_at |
Date the badge was issued |
state_updated_at |
Date the badge's state was updated (pending , accepted , rejected , revoked ) |
badge_templates[name] |
Name of the badge template |
users[first_name] |
First name of the user that the badge was issued to |
users[last_name] |
Last name of the user that the badge was issued to |
Paging
At most 50 results are returned at a time. Include an optional page
parameter to fetch the next
page of results. Requests made with excessively large page numbers may be prohibited and respond
with 400 Bad Request
. If you need to access large volumes of badge data, use the
Get Badges in Bulk endpoint, instead.
Response
200 OK
{
"data": [
{
"user": {
"id": "779c8150-3020-4799-8f4d-0b306885ea9a",
"email": "779c8150-3020-4799-8f4d-0b306885ea9a@example.com",
"first_name": "Alfred",
"middle_name": "Beaker",
"last_name": "Skiles",
"current_position_name": "*****",
"current_organization_name": "*****",
"confirmed": true,
"photo": null,
"photo_url": null,
"url": "https://www.credly.com/users/alfred-beaker-skiles.8b4522fc"
},
"created_by": {
"type": "Organization",
"id": "6c816b4b-ee8b-4f47-8468-2e8ce0ced20c",
"name": "Organization 273",
"url": "https://api.credly.com/v1/organizations/6c816b4b-ee8b-4f47-8468-2e8ce0ced20c",
"vanity_url": "https://www.credly.com/org/organization-273",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
},
"issuer": {
"summary": "issued by Organization 273",
"entities": [
{
"label": "Issued by",
"primary": true,
"entity": {
"type": "Organization",
"id": "6c816b4b-ee8b-4f47-8468-2e8ce0ced20c",
"name": "Organization 273",
"url": "https://api.credly.com/v1/organizations/6c816b4b-ee8b-4f47-8468-2e8ce0ced20c",
"vanity_url": "https://www.credly.com/org/organization-273",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
}
}
]
},
"printing_enabled": false,
"print_method": null,
"badge_template": {
"primary_badge_template_id": null,
"variant_name": null,
"id": "7d47e38d-76d4-4749-b3eb-0b7395016474",
"allow_duplicate_badges": true,
"description": "Dynamically deliver go forward e-tailers",
"default_expires_at": null,
"default_expires_at_date": null,
"default_expires_at_type": null,
"earn_this_badge_url": null,
"enable_earn_this_badge": false,
"enable_detail_attribute_visibility": true,
"global_activity_url": "https://www.example.com/foo",
"lock_badge_state": false,
"name": "Badge Template 112",
"state": "active",
"public": true,
"badges_count": 0,
"recipient_type": "User",
"send_expiring_badge_notifications": false,
"settings_enable_related_badges": true,
"show_badge_lmi": false,
"show_lmi_jobs": false,
"show_skill_tag_links": true,
"vanity_slug": "badge-template-112",
"record_to_blockchain": null,
"translatable": false,
"printing_disabled": false,
"visibility": "public",
"variants_allowed": false,
"variant_type": null,
"allow_delete": true,
"allow_archive": false,
"available_locales": [
],
"only_one_skill_required": false,
"linkedin_share_default_message": "View my verified achievement from @Org_Name.",
"level": null,
"time_to_earn": null,
"cost": null,
"type_category": null,
"criteria_url_name": null,
"criteria_url": null,
"certification": true,
"state_updated_at": null,
"created_at": "2014-04-01T14:41:00.000Z",
"updated_at": "2014-04-01T14:41:00.000Z",
"show_template_settings": false,
"get_issue_count": 0,
"get_variants_issue_count": 0,
"image": {
"id": "299822fc-916b-483f-8fdb-0899f4d198c8",
"url": "/system/test/images/299822fc-916b-483f-8fdb-0899f4d198c8/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"url": "https://www.credly.com/org/organization-273/badge/badge-template-112",
"owner": {
"type": "Organization",
"id": "6c816b4b-ee8b-4f47-8468-2e8ce0ced20c",
"name": "Organization 273",
"enable_blockchain": false,
"url": "https://api.credly.com/v1/organizations/6c816b4b-ee8b-4f47-8468-2e8ce0ced20c",
"vanity_url": "https://www.credly.com/org/organization-273",
"vanity_slug": "organization-273",
"verified": true,
"viewable": true
},
"alignments": [
{
"id": "ce9c009d-ea9a-413d-a4cb-390c68f0b161",
"name": "Alignment 122",
"url": "http://www.example.com/alignment",
"description": "Self-enabling cohesive task-force"
}
],
"recommendations": [
{
"id": "2c646a16-472e-41f3-8732-5ee9f40d0916",
"title": "Recommendation Title",
"type": "information",
"activity_url": "http://www.example.com/recommendation"
}
],
"required_badge_templates": [
],
"badge_template_activities": [
{
"id": "9df6923e-fb54-498e-8a2a-a10d2cfdb132",
"title": "Kickboxing Activity",
"activity_type": "Schedule / Registration",
"activity_url": "http://www.example.com/awesomepage",
"required_badge_template_id": null
}
],
"skills": [
"Skill 344",
"Skill 345",
"Skill 346"
],
"endorsements": [
]
},
"id": "3392ae98-9a54-4032-9e8d-dfc89a0de0b1",
"issued_to": "Alfred Beaker Skiles",
"issued_to_first_name": "Alfred",
"issued_to_middle_name": "Beaker",
"issued_to_last_name": "Skiles",
"issuer_earner_id": null,
"locale": "en",
"public": true,
"translate_metadata": false,
"replacement_badge_id": null,
"replaces_badge_id": null,
"revocation_reason": null,
"state": "accepted",
"suppress_badge_notification_email": false,
"updated_at": "2014-04-01T14:41:00.000Z",
"completed_pathway_id": null,
"recipient_email": "user10001@example.com",
"country": "United States",
"country_code": "USA",
"state_or_province": "Minnesota",
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": "2016-04-01T14:41:00.000Z",
"expires_at_date": "2016-04-01",
"issued_at": "2014-04-01T14:41:00.000Z",
"issued_at_date": "2014-04-01",
"state_updated_at": "2014-04-01T14:41:00.000Z",
"is_private_badge": false,
"image": {
"id": "299822fc-916b-483f-8fdb-0899f4d198c8",
"url": "/system/test/images/299822fc-916b-483f-8fdb-0899f4d198c8/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"alignments": [
{
"name": "Alignment 122",
"description": "Self-enabling cohesive task-force"
}
],
"evidence": [
{
"id": "0a586c01-0758-40ea-a274-69a88f2cb7f8",
"type": "UrlEvidence",
"name": "Acclaim",
"description": "Description in URL evidence is optional",
"value": "http://www.example.com/path-to-earner-specific-evidence"
}
],
"badge_url": "https://www.credly.com/badges/3392ae98-9a54-4032-9e8d-dfc89a0de0b1"
}
],
"metadata": {
"count": 1,
"current_page": 1,
"total_count": 1,
"total_pages": 1,
"per": 50,
"previous_page_url": null,
"next_page_url": null
}
}
Get Badges in Bulk
You can get large amounts of badge data more efficiently by using an endpoint similar to Get Issued Badges
Query Param | Description |
---|---|
filter=<filter> |
Gets badges issued by the specified organization that match the filter |
badge_format=<format_name> |
Determines the response payload content can be default or minimal
|
For performance reasons the high volume endpoint does not support the sort
parameter, instead results are sorted by created_at
. Badges with the same created_at
will be further sorted by id
Request
GET /organizations/<organization_id>/high_volume_issued_badge_search
Filtering
This endpoint supports the same filtering options available for Badge Search Filters
Paging
The only paging mechanism available is a forward cursor. The url returned in the next_page_url
will be not empty when there is more data to obtain. To cursor through the results, repeatedly request the url returned in next_page_url
until its null in value.
Badge Response Formats
Default
The default response format contains most of the same badge and badge template information as the Get Issued Badges endpoint. It is useful when a moderate amount of data is required at the cost of performance.
Response
200 OK
{
"data": [
{
"id": "6b9a5222-489a-468d-8818-be2b23ee9a2e",
"issued_to": "Alfred Beaker Skiles",
"issued_to_first_name": "Alfred",
"issued_to_middle_name": "Beaker",
"issued_to_last_name": "Skiles",
"issuer_earner_id": null,
"locale": "en",
"public": true,
"recipient_email": "user20001@example.com",
"replacement_badge_id": null,
"revocation_reason": null,
"state": "accepted",
"suppress_badge_notification_email": false,
"issued_at_date": "2014-04-01",
"expires_at_date": "2016-04-01",
"badge_url": "https://www.credly.com/badges/9f53aa64-ce37-4dbe-b6bb-b6d0f02c774d",
"updated_at": "2014-04-01T14:41:00.000Z",
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": "2016-04-01T14:41:00.000Z",
"issued_at": "2014-04-01T14:41:00.000Z",
"state_updated_at": "2018-01-26T20:39:43.166Z",
"badge_template": {
"id": "54338420-6837-4757-a771-f239f37c3923",
"description": "Dynamically deliver go forward e-tailers",
"global_activity_url": "https://example.com/foo",
"name": "Badge Template 1",
"state": "active",
"public": true,
"vanity_slug": "badge-template-1",
"image": {
"id": "56c140da-a7ae-4766-8dd2-b627487b2b3a",
"url": "https://cdn.example.com/path/to/image.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"url": "https://www.credly.com/org/organization-1/badge/badge-template-1",
"owner": {
"type": "Organization",
"id": "26d9aced-5233-45ae-96c1-6fdb08692b34"
},
"state_updated_at": null,
"created_at": "2014-04-01T14:41:00.000Z",
"updated_at": "2014-04-01T14:41:00.000Z"
},
"created_by": {
"type": "Organization",
"id": "26d9aced-5233-45ae-96c1-6fdb08692b34"
},
"issuer": {
"summary": "issued by Organization 1",
"entities": [
{
"label": "Issued by",
"primary": true,
"type": "Organization",
"id": "296087f5-6820-44c6-93aa-cea556aca312",
"name": "Organization 1"
}
]
},
"user": {
"id": "63baa914-0ced-4bb7-b301-a6a1847feed0"
}
}
],
"metadata": {
"next_page_url": null
}
}
Minimal
The minimal response format has just enough information to identify the badges returned and view some minimal information about them. This format is best used when large amounts of data are needed in a short time.
Response
200 OK
{
"data": [
{
"id": "67ee7b52-069a-443f-89c3-d9a85dfd2873",
"issued_to": "Alfred Beaker Skiles",
"issued_to_first_name": "Alfred",
"issued_to_middle_name": "Beaker",
"issued_to_last_name": "Skiles",
"issuer_earner_id": null,
"locale": "en",
"public": true,
"recipient_email": "user10001@example.com",
"state": "accepted",
"badge_url": "https://www.credly.com/badges/9f53aa64-ce37-4dbe-b6bb-b6d0f02c774d",
"updated_at": "2014-04-01T14:41:00.000Z",
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": "2016-04-01T14:41:00.000Z",
"issued_at": "2014-04-01T14:41:00.000Z",
"state_updated_at": "2018-01-26T20:17:45.444Z",
"badge_template": {
"id": "2150de13-abd7-47d0-a696-68855cac1bae",
"name": "Badge Template 2"
},
"user": {
"id": "63855321-2f8e-42f2-8d6c-48b94ea70966"
}
}
],
"metadata": {
"next_page_url": null
}
}
Replace a Badge
Replacing a badge will create a new badge to take the place of an existing one.
Fields that are not provided will not assume the values from the replaced badge.
(with the exception of expires_at
)
For example, if state_or_province
is not provided the new badge will not include location information.
If a notification_message
is included, the badge's recipient will receive an email including that message.
The recipient_email
may be changed on a replacement,
however this feature is only available on badges with a state of pending
.
Providing a change of recipient_email
on badges in other states will result in an error.
If attempts are made to access the old badge, the service will return a redirect to the new badge's location.
expires_at generated values
If expires_at
is included, but left blank, then the value is generated using the badge template's default
expiration date if it exists. If no default exists, the badge becomes non-expiring.
The default expiration will also be used if the expires_at
parameter is omitted, but the previous badge was expiring.
To override this behavior and force a badge to be non-expiring, expires_at
must be set explicitly to false
.
Required Fields
badge_template_id
issued_at
Optional Fields
country_name
expires_at
issued_to_first_name
issued_to_middle_name
issued_to_last_name
issuer_earner_id
notification_message
state_or_province
evidence
Request
POST /organizations/<organization_id>/badges/<badge_id>/replace
Request Body
{
"badge_template_id": "4008b9b1-1251-40a3-ba90-1bbc9720fc37",
"issued_at": "2014-04-01 09:41:00 -0500",
"issued_to": "Firstname Lastname",
"issued_to_first_name": "Firstname",
"issued_to_last_name": "Lastname",
"issuer_earner_id": "earner-1",
"expires_at": false,
"country_name": "United States of America",
"state_or_province": "Minnesota",
"evidence": [
{
"type": "UrlEvidence",
"value": "http://www.example.com/evidence",
"description": "Description in URL evidence is optional",
"name": "Evidence"
}
],
"notification_message": "Lorem ipsum dolor"
}
Response
201 Created
Location: <badge_url>
{
"data": {
"user": {
"id": "78bcff89-3a6e-4823-bf4b-d3c1ffaaa30f",
"email": "78bcff89-3a6e-4823-bf4b-d3c1ffaaa30f@example.com",
"first_name": "Alfred",
"middle_name": "Beaker",
"last_name": "Skiles",
"current_position_name": "*****",
"current_organization_name": "*****",
"confirmed": true,
"photo": null,
"photo_url": null,
"url": "https://www.credly.com/users/alfred-beaker-skiles"
},
"created_by": {
"type": "Organization",
"id": "4a795c20-cd14-495e-bed3-76da6b8b8545",
"name": "Organization 261",
"url": "https://api.credly.com/v1/organizations/4a795c20-cd14-495e-bed3-76da6b8b8545",
"vanity_url": "https://www.credly.com/org/organization-261",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
},
"issuer": {
"summary": "issued by Organization 261",
"entities": [
{
"label": "Issued by",
"primary": true,
"entity": {
"type": "Organization",
"id": "4a795c20-cd14-495e-bed3-76da6b8b8545",
"name": "Organization 261",
"url": "https://api.credly.com/v1/organizations/4a795c20-cd14-495e-bed3-76da6b8b8545",
"vanity_url": "https://www.credly.com/org/organization-261",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
}
}
]
},
"printing_enabled": false,
"print_method": null,
"badge_template": {
"primary_badge_template_id": null,
"variant_name": null,
"id": "6400ecf6-d4c0-4b1f-a291-28ccbaedaee4",
"allow_duplicate_badges": true,
"description": "Dynamically deliver go forward e-tailers",
"default_expires_at": null,
"default_expires_at_date": null,
"default_expires_at_type": null,
"earn_this_badge_url": null,
"enable_earn_this_badge": false,
"enable_detail_attribute_visibility": true,
"global_activity_url": "https://www.example.com/foo",
"lock_badge_state": false,
"name": "Badge Template 106",
"state": "active",
"public": true,
"badges_count": 0,
"recipient_type": "User",
"send_expiring_badge_notifications": false,
"settings_enable_related_badges": true,
"show_badge_lmi": false,
"show_lmi_jobs": false,
"show_skill_tag_links": true,
"vanity_slug": "badge-template-106",
"record_to_blockchain": null,
"translatable": false,
"printing_disabled": false,
"visibility": "public",
"variants_allowed": false,
"variant_type": null,
"allow_delete": true,
"allow_archive": false,
"available_locales": [
],
"only_one_skill_required": false,
"linkedin_share_default_message": "View my verified achievement from @Org_Name.",
"level": null,
"time_to_earn": null,
"cost": null,
"type_category": null,
"criteria_url_name": null,
"criteria_url": null,
"certification": true,
"state_updated_at": null,
"created_at": "2014-04-01T14:41:00.000Z",
"updated_at": "2014-04-01T14:41:00.000Z",
"show_template_settings": false,
"get_issue_count": 0,
"get_variants_issue_count": 0,
"image": {
"id": "1c716140-29c6-49df-8df3-af3a4f4429d3",
"url": "/system/test/images/1c716140-29c6-49df-8df3-af3a4f4429d3/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"url": "https://www.credly.com/org/organization-261/badge/badge-template-106",
"owner": {
"type": "Organization",
"id": "4a795c20-cd14-495e-bed3-76da6b8b8545",
"name": "Organization 261",
"enable_blockchain": false,
"url": "https://api.credly.com/v1/organizations/4a795c20-cd14-495e-bed3-76da6b8b8545",
"vanity_url": "https://www.credly.com/org/organization-261",
"vanity_slug": "organization-261",
"verified": true,
"viewable": true
},
"alignments": [
{
"id": "c20af11a-323d-464b-83f7-c765effaffef",
"name": "Alignment 110",
"url": "http://www.example.com/alignment",
"description": "Self-enabling cohesive task-force"
}
],
"recommendations": [
{
"id": "db9d6919-a145-4027-83b2-c175b6f07422",
"title": "Recommendation Title",
"type": "information",
"activity_url": "http://www.example.com/recommendation"
}
],
"required_badge_templates": [
],
"badge_template_activities": [
{
"id": "617dfbce-e1cb-48af-a9ed-ddb38911b29b",
"title": "Kickboxing Activity",
"activity_type": "Schedule / Registration",
"activity_url": "http://www.example.com/awesomepage",
"required_badge_template_id": null
}
],
"skills": [
"Skill 326",
"Skill 327",
"Skill 328"
],
"endorsements": [
]
},
"id": "7b3135a9-3a88-4f3a-9440-a7fb143dae59",
"issued_to": "Firstname Lastname",
"issued_to_first_name": "Firstname",
"issued_to_middle_name": null,
"issued_to_last_name": "Lastname",
"issuer_earner_id": "earner-1",
"locale": "en",
"public": true,
"translate_metadata": false,
"replacement_badge_id": null,
"replaces_badge_id": "8f9f3cb1-1bae-4dd5-a070-39a617368e3a",
"revocation_reason": null,
"state": "accepted",
"suppress_badge_notification_email": false,
"updated_at": "2014-04-01T14:41:00.000Z",
"completed_pathway_id": null,
"recipient_email": "user2@example.com",
"country": "United States",
"country_code": "USA",
"state_or_province": "Minnesota",
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": null,
"expires_at_date": null,
"issued_at": "2014-04-01T14:41:00.000Z",
"issued_at_date": "2014-04-01",
"state_updated_at": "2014-04-01T14:41:00.000Z",
"is_private_badge": false,
"image": {
"id": "1c716140-29c6-49df-8df3-af3a4f4429d3",
"url": "/system/test/images/1c716140-29c6-49df-8df3-af3a4f4429d3/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"alignments": [
{
"name": "Alignment 110",
"description": "Self-enabling cohesive task-force"
}
],
"evidence": [
{
"id": "6652506d-64e3-475d-856d-7cadf2931559",
"type": "UrlEvidence",
"name": "Evidence",
"description": "Description in URL evidence is optional",
"value": "http://www.example.com/evidence"
}
],
"accept_badge_url": "https://www.credly.com/badges/7b3135a9-3a88-4f3a-9440-a7fb143dae59/accept",
"badge_url": "https://www.credly.com/badges/7b3135a9-3a88-4f3a-9440-a7fb143dae59"
},
"metadata": {
}
}
Validation Errors
Attempts to replace a badge that has already been replaced will result in a 422 with an error response that
includes the current replacement badge ID in the metadata
field.
Response
422 Unprocessable Entity
{
"data": {
"message": "Validation failed: This badge cannot be replaced because it has already been replaced.",
"errors": [
{
"attribute": "base",
"attribute_label": "Base",
"messages": [
"This badge cannot be replaced because it has already been replaced."
]
}
]
},
"metadata": {
"current_badge_id": "bd137a0a-bcd3-4646-a943-cf9f3038cbe9"
}
}
Revoke a Badge
Revoking a badge will cause requests to the badge's OBI hosted assertion (/api/v1/obi/badgeassertions/<badgeid>) to return HTTP 410 Gone
.
Request
PUT /organizations/<organization_id>/badges/<badge_id>/revoke
Request Body
{
"reason": "Check bounced",
"suppress_revoke_notification_email": false
}
suppress_revoke_notification_email
is optional. Set it to true
to suppress the email
notification that is ordinarily sent to the earner when a badge is revoked.
Response
200 OK
{
"data": {
"user": {
"id": "b72d1ea5-434e-4461-87c7-6d0fd488d799",
"email": "b72d1ea5-434e-4461-87c7-6d0fd488d799@example.com",
"first_name": "Alfred",
"middle_name": "Beaker",
"last_name": "Skiles",
"current_position_name": "*****",
"current_organization_name": "*****",
"confirmed": true,
"photo": null,
"photo_url": null,
"url": "https://www.credly.com/users/alfred-beaker-skiles"
},
"created_by": {
"type": "Organization",
"id": "0b463b20-6b63-473f-946d-a10632c679d3",
"name": "Organization 257",
"url": "https://api.credly.com/v1/organizations/0b463b20-6b63-473f-946d-a10632c679d3",
"vanity_url": "https://www.credly.com/org/organization-257",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
},
"issuer": {
"summary": "issued by Organization 257",
"entities": [
{
"label": "Issued by",
"primary": true,
"entity": {
"type": "Organization",
"id": "0b463b20-6b63-473f-946d-a10632c679d3",
"name": "Organization 257",
"url": "https://api.credly.com/v1/organizations/0b463b20-6b63-473f-946d-a10632c679d3",
"vanity_url": "https://www.credly.com/org/organization-257",
"internationalize_badge_templates": false,
"share_to_ziprecruiter": true,
"twitter_url": "https://twitter.com/example",
"verified": true
}
}
]
},
"printing_enabled": false,
"print_method": null,
"badge_template": {
"primary_badge_template_id": null,
"variant_name": null,
"id": "2d4767c2-c2a5-4e91-94cf-f53a992bcb64",
"allow_duplicate_badges": true,
"description": "Dynamically deliver go forward e-tailers",
"default_expires_at": null,
"default_expires_at_date": null,
"default_expires_at_type": null,
"earn_this_badge_url": null,
"enable_earn_this_badge": false,
"enable_detail_attribute_visibility": true,
"global_activity_url": "https://www.example.com/foo",
"lock_badge_state": false,
"name": "Badge Template 104",
"state": "active",
"public": true,
"badges_count": 0,
"recipient_type": "User",
"send_expiring_badge_notifications": false,
"settings_enable_related_badges": true,
"show_badge_lmi": false,
"show_lmi_jobs": false,
"show_skill_tag_links": true,
"vanity_slug": "badge-template-104",
"record_to_blockchain": null,
"translatable": false,
"printing_disabled": false,
"visibility": "public",
"variants_allowed": false,
"variant_type": null,
"allow_delete": true,
"allow_archive": false,
"available_locales": [
],
"only_one_skill_required": false,
"linkedin_share_default_message": "View my verified achievement from @Org_Name.",
"level": null,
"time_to_earn": null,
"cost": null,
"type_category": null,
"criteria_url_name": null,
"criteria_url": null,
"certification": true,
"state_updated_at": null,
"created_at": "2014-04-01T14:41:00.000Z",
"updated_at": "2014-04-01T14:41:00.000Z",
"show_template_settings": false,
"get_issue_count": 0,
"get_variants_issue_count": 0,
"image": {
"id": "77b8da5b-9d45-44ee-8dd0-a28615fd943d",
"url": "/system/test/images/77b8da5b-9d45-44ee-8dd0-a28615fd943d/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"url": "https://www.credly.com/org/organization-257/badge/badge-template-104",
"owner": {
"type": "Organization",
"id": "0b463b20-6b63-473f-946d-a10632c679d3",
"name": "Organization 257",
"enable_blockchain": false,
"url": "https://api.credly.com/v1/organizations/0b463b20-6b63-473f-946d-a10632c679d3",
"vanity_url": "https://www.credly.com/org/organization-257",
"vanity_slug": "organization-257",
"verified": true,
"viewable": true
},
"alignments": [
{
"id": "36ffa523-51ea-44fa-a59e-f12acc3fb211",
"name": "Alignment 106",
"url": "http://www.example.com/alignment",
"description": "Self-enabling cohesive task-force"
}
],
"recommendations": [
{
"id": "6f58eb26-a1ed-4ae2-82f5-baf258a8adfe",
"title": "Recommendation Title",
"type": "information",
"activity_url": "http://www.example.com/recommendation"
}
],
"required_badge_templates": [
],
"badge_template_activities": [
{
"id": "0643137c-3c7b-4cc4-ada9-b3e584e09ab4",
"title": "Kickboxing Activity",
"activity_type": "Schedule / Registration",
"activity_url": "http://www.example.com/awesomepage",
"required_badge_template_id": null
}
],
"skills": [
"Skill 320",
"Skill 321",
"Skill 322"
],
"endorsements": [
]
},
"id": "a158606d-d714-4f42-991c-fb072b4e0111",
"issued_to": "Alfred Beaker Skiles",
"issued_to_first_name": "Alfred",
"issued_to_middle_name": "Beaker",
"issued_to_last_name": "Skiles",
"issuer_earner_id": null,
"locale": "en",
"public": true,
"translate_metadata": false,
"replacement_badge_id": null,
"replaces_badge_id": null,
"revocation_reason": "Check bounced",
"state": "revoked",
"suppress_badge_notification_email": false,
"updated_at": "2014-04-01T14:41:00.000Z",
"completed_pathway_id": null,
"recipient_email": "user10001@example.com",
"country": "United States",
"country_code": "USA",
"state_or_province": "Minnesota",
"created_at": "2014-04-01T14:41:00.000Z",
"expires_at": "2016-04-01T14:41:00.000Z",
"expires_at_date": "2016-04-01",
"issued_at": "2014-04-01T14:41:00.000Z",
"issued_at_date": "2014-04-01",
"state_updated_at": "2014-04-01T14:41:00.000Z",
"is_private_badge": false,
"image": {
"id": "77b8da5b-9d45-44ee-8dd0-a28615fd943d",
"url": "/system/test/images/77b8da5b-9d45-44ee-8dd0-a28615fd943d/fake-600x600.png"
},
"image_url": "https://cdn.example.com/path/to/image.png",
"alignments": [
{
"name": "Alignment 106",
"description": "Self-enabling cohesive task-force"
}
],
"evidence": [
{
"id": "d188fd09-20a6-4791-8a6c-79dc39e6af1c",
"type": "UrlEvidence",
"name": "Acclaim",
"description": "Description in URL evidence is optional",
"value": "http://www.example.com/path-to-earner-specific-evidence"
}
]
},
"metadata": {
}
}
Validation Errors
Attempts to revoke a badge that has already been replaced will result in a 422 with an error response that
includes the current replacement badge ID in the metadata
field.
Response
422 Unprocessable Entity
{
"data": {
"message": "Validation failed: This badge cannot be revoked because it has been replaced.",
"errors": [
{
"attribute": "base",
"attribute_label": "Base",
"messages": [
"This badge cannot be revoked because it has been replaced."
]
}
]
},
"metadata": {
"current_badge_id": "ed326c02-09d2-465d-ad81-19de77029f59"
}
}
Delete a Badge
Deleting a badge will remove all information, statistics, and history related to that badge from Credly's server. This deletion process complies with the GDPR regulations regarding the deletion of a user's personal data. As this process can take some time to accomplish, an email will be sent to the organization's technical contact email when it has finished.
After the process has been completed, all attempts to view the deleted badge or badge stats either via the UI or API will return a 404
response. Deleted data can not be recovered.
Request
DELETE /organizations/<organization_id>/badges/<badge_id>
Request Body
There is no request body for this operation.
Response
204 No Content
Replaced Badges
Replaced badges can not be deleted directly via the API. If a badge has been replaced, you should call DELETE
on the current version. In this case, all previous forms of the badge will be automatically deleted at the same time as the active one.
Response
The following response will be returned if you attempt to delete a replaced badge through the API.
422 Unprocessable Entity
{
"data": {
"message": "You can not delete replaced badges. Delete the current version instead."
},
"metadata": null
}