Authenticate to the Credly API using HTTP Basic Auth with your API key; all requests go to https://api.credly.com/v1/ per the developer docs at https://www.credly.com/docs/getting_started
Retrieve the target badge template ID via GET /organizations/{organization_id}/badge_templates to map your internal certification name to a Credly template
POST to /organizations/{organization_id}/badges with body fields: badge_template_id, issued_to_first_name, issued_to_last_name, recipient_email, and optionally issuer_earner_id (your internal user ID for reconciliation)
Set duplicate_behavior to 'replace' if you want the new issuance to supersede a previous one, 'deny' to block duplicates, or 'allow' to permit multiple badges; note this only applies when the template's allow_duplicate_badges is false
Handle the suppress_badge_notification_email=true flag to suppress Credly's default email and send your own branded notification
Check the returned issued badge object for state field; value 'accepted' means the earner has already claimed it; 'pending' means awaiting acceptance
Known gotchas
The Credly API uses HTTP Basic Auth with the API key as the username and a blank password—not OAuth; sending an OAuth Bearer token returns 401
Bulk issuance endpoints use the high_volume_issued_badge_search endpoint for retrieval, not the standard list endpoint; using the wrong endpoint for large datasets causes pagination failures
Badge template IDs are organization-scoped; a template_id from one organization cannot be used in API calls scoped to a different organization_id
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp