Profile Endpoints
Public profiles, CSS, and decentralized identity.
Public Profile Resolution
GET /u/{handle}
Retrieve a user's public profile. Supports content negotiation via Accept header or ?format query parameter.
HTML response (default)
curl https://api.boxowl.me/u/yourname \
-H "Accept: text/html"
Returns a styled HTML profile card with identity, public profiles, and injected custom CSS.
JSON response
curl https://api.boxowl.me/u/yourname?format=json
Response 200 OK:
{
"handle": "yourname",
"displayName": "Ali",
"firstName": "Alice",
"preferredName": "Ali",
"socialLinks": [
{
"platform": "github",
"url": "https://github.com/yourname"
}
],
"links": [],
"didByHandle": "did:web:boxowl.me/user:yourname"
}
Only fields marked Public in the user's vault are included. If the handle does not exist, returns 404 Not Found.
Profile CSS Management
Custom CSS for the public profile page is managed through the vault endpoints:
GET /api/v1/vault/profile-css— read current CSSPUT /api/v1/vault/profile-css— update CSS (sanitized server-side)DELETE /api/v1/vault/profile-css— remove custom CSS
See the Vault Endpoints page for curl examples.
did:web Discovery
GET /.well-known/did.json
Returns the domain-level DID document for did:web:boxowl.me.
curl https://api.boxowl.me/.well-known/did.json
Response 200 OK:
{
"handle": "yourname",
"displayName": "Ali",
"firstName": "Alice",
"preferredName": "Ali",
"socialLinks": [
{
"platform": "github",
"url": "https://github.com/yourname"
}
],
"links": [],
"didByHandle": "did:web:boxowl.me/user:yourname"
}
User DID Resolution
GET /did/{handle}
Resolve a user's DID document by handle.
curl https://api.boxowl.me/did/yourname
Response 200 OK:
{
"handle": "yourname",
"displayName": "Ali",
"firstName": "Alice",
"preferredName": "Ali",
"socialLinks": [
{
"platform": "github",
"url": "https://github.com/yourname"
}
],
"links": [],
"didByHandle": "did:web:boxowl.me/user:yourname"
}
Keys are generated lazily on first resolution and persisted. W3C DID Core 1.0 compliant.