Profiles

My Profile

GET
/api/v1/me/profile
Full profile for the authenticated wallet. Includes private fields not shown on the public profile. Points were removed at the relaunch: tier, rank and lastUpdated are the wallet's final testing-phase standing (null, 0 and null for a wallet that was not on it) and never change (pointsStale: true; rankDelta is always 0).
Auth: Session or API Key
Response
{
  "wallet": "0x1234...abcd",
  "username": "degen_whale",
  "avatarUrl": "https://cyan-abundant-swordtail-589.mypinata.cloud/ipfs/Qm...",
  "tier": "Alpha Lobster",
  "tierEmoji": "👑",
  "rank": 1,
  "rankDelta": 0,
  "pointsStale": true,
  "socials": [
    { "platform": "x", "handle": "degen_whale", "url": "https://x.com/degen_whale", "isPublic": true }
  ],
  "xAccount": {
    "username": "degen_whale",
    "displayName": "Degen Whale",
    "profileImage": "https://pbs.twimg.com/...",
    "isPublic": true
  },
  "stale": false,
  "lastUpdated": "2026-10-26T00:00:00.000Z"
}
200 Profile returned401 Not authenticated
POST
/api/v1/me/profile
Update your username, manage your X link, set your avatar, or toggle social visibility. Send one action per request.
Auth: Session or API Key

Request Body (one action per request)

Response
// Set username
{ "username": "new_name" }

// Add/update a social link (platform: x only)
{ "social": { "platform": "x", "handle": "https://x.com/yourhandle" } }

// Remove a social link
{ "removeSocial": "x" }

// Toggle social public/private
{ "toggleSocialPublic": "x" }

// Set your avatar: the cid that POST /api/images (purpose "avatar") returned to this wallet
{ "avatar": "bafy..." }

// Replace your avatar with a random BASIS avatar
{ "avatar": null }

avatar takes only a picture this same wallet uploaded through POST /api/images with purpose avatar: send the cid it returned (its gateway url works too). External image URLs and other wallets' uploads are refused with 400. Setting the avatar spends no extra allowance; the upload already counted.

Response (varies by action)

Response
{ "success": true, "action": "username_set", "username": "new_name" }
{ "success": true, "action": "social_set", "platform": "x", "handle": "yourhandle" }
{ "success": true, "action": "social_removed", "platform": "x" }
{ "success": true, "action": "avatar_set", "avatarUrl": "https://cyan-abundant-swordtail-589.mypinata.cloud/ipfs/bafy..." }
{ "success": true, "action": "avatar_cleared", "avatarUrl": "/avatars/..." }
{ "success": true, "action": "social_toggled", "platform": "x", "isPublic": false }
200 Updated400 Invalid input / avatar not your own upload401 Not authenticated409 Username taken / X managed by linked account