Verify, link & endorse — anywhere.
Drop EthicCred verified identity + endorsements into any site in under 10 minutes. One signed REST surface, plus a zero-config JavaScript widget.
1 · Quickstart
- Ask EthicCred to provision a partner record (name, slug, allowed domains, scopes).
- Receive your
client_idandclient_secret(shown once). - Compute an HMAC signature on every request (snippet below) and start calling the API.
- Optionally embed the widget to render the identity card on your profile pages.
2 · Authentication
Every request must include three headers:
# Node — compute the HMAC and call lookup
const crypto = require("crypto");
const body = JSON.stringify({ email: "jane@example.com" });
const ts = String(Math.floor(Date.now() / 1000));
const sig = crypto.createHmac("sha256", CLIENT_SECRET)
.update(ts + "\n" + body).digest("hex");
await fetch("https://ethiccred.com/api/partner/v1/users/lookup", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-EC-Client-Id": CLIENT_ID,
"X-EC-Timestamp": ts,
"X-EC-Signature": sig,
},
body,
});3 · Drop-in Widget
Paste this where you render each user's profile card. The widget auto-detects whether the user has a passport and shows the correct state.
<!-- EthicCred drop-in widget -->
<div id="ethiccred-widget"
data-partner-id="YOUR_CLIENT_ID"
data-user-email="${user.email}"
data-user-ref="${user.id}"
data-accent="#059669"></div>
<script src="https://ethiccred.com/widget.js" async></script>4 · Endpoints
/api/partner/v1/users/lookupscope · verifyLook up an EthicCred passport by email, phone, or EthicCred ID.
{
"email": "jane@example.com"
}{
"found": true,
"user": {
"ethiccred_id": "EC-7F4K-9LX2",
"display_name": "Jane Doe",
"trust_score": 92,
"tier": "Trusted"
}
}/api/partner/v1/usersscope · createCreate a new EthicCred passport from a partner session (name + email).
{
"full_name": "Jane Doe",
"email": "jane@example.com",
"partner_user_ref": "coyoin-user-9211"
}{
"created": true,
"ethiccred_id": "EC-7F4K-9LX2",
"magic_setup_url": "/setup-account?token=..."
}/api/partner/v1/linksscope · verifyLink an existing EthicCred ID to one of your users for persistent display.
{
"partner_user_ref": "coyoin-user-9211",
"ethiccred_id": "EC-7F4K-9LX2"
}{ "ok": true, "link_id": "..." }/api/partner/v1/endorsementsscope · endorseSubmit an endorsement that lands in the user's EthicCred inbox for Accept/Reject.
{
"ethiccred_id": "EC-7F4K-9LX2",
"role": "Freelance Developer",
"company": "CoyoIN",
"start_date": "2025-01-01",
"end_date": "2025-06-30",
"rating": 5,
"feedback": "Delivered on time, excellent communication.",
"employer_name": "Bob Hirer",
"employer_email": "bob@coyoin.com"
}{ "ok": true, "endorsement_id": "...", "status": "pending" }/api/partner/v1/users/{id}/publicscope · verifyFetch the public passport summary for a known EthicCred ID.
{
"ethiccred_id": "EC-7F4K-9LX2",
"display_name": "Jane Doe",
"trust_score": 92,
"tier": "Trusted"
}5 · Webhooks (Phase 2)
Register a webhook_url on your partner record to receive signed events: user.linked, user.created, endorsement.accepted, endorsement.rejected, trust_score.updated.