Skip to content
API reference · Profiles

Look up a profile

GEThttps://fomodata.dev/v1/profiles
Scopes:profiles:readRate class:heavyFlag:PROFILES_API_ENABLED

Look up one profile by exactly one of id, handle or fomo_user_id.

Resolution order: FomoData's index first; for live keys an unknown handle is looked up once through the authorized upstream (misses are cached for 10 minutes). Only public profile metadata is returned — never PnL, balances or private account data.

Example request

curl 'https://fomodata.dev/v1/profiles?handle=@milo' \
  -H "Authorization: Bearer $FOMODATA_API_KEY"

Parameters

Query parameters
idstring
FomoData profile id.
handlestring
Fomo handle, with or without @.
fomo_user_idstring
Fomo's stable user id (survives handle renames).

Response

200 The profile

application/jsonProfile
  • objectenumrequired"profile"
  • idstringrequired
  • handlestringrequired
  • display_namestring | nullrequired
  • avatar_urlstring (uri) | nullrequired
  • profile_urlstring (uri) | nullrequired
  • biostring | nullrequired
  • verifiedboolean | nullrequired
  • sourceenumrequiredWhere the data came from. sandbox = clearly-labelled test fixtures."fomo""sandbox"
  • livemodebooleanrequired
  • created_atstring (date-time) | nullrequiredAccount creation time upstream, when known.
  • first_seen_atstring (date-time)requiredWhen FomoData first observed this profile.
  • updated_atstring (date-time)required
  • source_updated_atstring (date-time) | nullrequired
  • staleboolean
  • walletobjectOnly present when the Wallets API is enabled and the association is public/authorized.+ 2 child attributes
    • addressstringrequired
    • networkstringrequired
200 · example
{
  "object": "profile",
  "id": "fp_4KZq8mXw2T0aN6rB1cYd9E",
  "handle": "@milo",
  "display_name": "Milo",
  "avatar_url": "https://example.com",
  "profile_url": "https://fomo.family/profile/milo",
  "bio": "string",
  "verified": true,
  "source": "fomo",
  "livemode": true,
  "created_at": "2026-10-07T10:04:12.000Z",
  "first_seen_at": "2026-10-07T10:04:12.000Z",
  "updated_at": "2026-10-07T10:04:12.000Z",
  "source_updated_at": "2026-10-07T10:04:12.000Z",
  "stale": true,
  "wallet": {
    "address": "string",
    "network": "evm"
  }
}

Errors

StatusWhen
401Missing, invalid, revoked or expired API key
403Insufficient scope, live access not approved, or history limit
404Not found (or feature disabled)
422Validation failed
429Rate limit or quota exceeded
503Upstream unavailable

All errors use the standard envelope. See error codes for every code value.