Profiles

Get embeddable badge descriptor

Public, unauthenticated. Everything needed to embed the verification badge for a username: the subject it asserts, the live verified count, the badge image URL for each style, and ready-to-paste Markdown/HTML snippets. There is NO 404 branch — an unknown username, a profile that is not public, and a published profile with no live proof all answer 200 with state no_public_record, so a caller never has to treat "nothing to show" as an error and the three cases stay indistinguishable.

get/api/v1/profiles/badge/{username}

Request

  • Base URL: https://api.proof.holdings
  • URL: https://api.proof.holdings/api/v1/profiles/badge/{username}
  • Auth: none declared

Path parameters

usernamestring required

Username

Example:jane_doe

Response

Badge descriptor

usernamestring required
subjectstring required

What the badge asserts ABOUT — a verified domain where the profile has one, else the business or display name, else the @handle. In the no_public_record state it is always the requested handle, so a profile the endpoint declines to describe leaks no name

verified_countinteger required

LIVE count of visible proofs whose backing asset is still active — a revoked asset still present in the profile snapshot is not counted. Zero in the no_public_record state

state'published' | 'no_public_record' required

Branch on THIS, not the HTTP status. An unknown username, a profile that is not public, and a published profile with no live proof all answer 200 with no_public_record and are deliberately indistinguishable from one another — this endpoint must not become the oracle that separates cases GET /profiles/u/{username} answers with a uniform 404

checked_atstring required

When this answer was computed (ISO 8601)

profile_urlstring required

Example response

{
  "subject": "team.management",
  "profile_url": "https://proof.holdings/u/team_mgmt"
}

Changes

No recorded changes to this operation across all 1 revision of this API.