formo profiles command group lets you look up individual wallet profiles, search your user base, merge-update identity properties, and manage labels.
Lifecycle Threshold Options
profiles get and profiles search accept optional lifecycle threshold overrides:
formo profiles get <address>
Fetch a single wallet profile by address or ENS name.
Requires
profiles:read scope on your API key.Options
The lifecycle threshold options listed above are also supported.
Examples
formo profiles search
Search wallet profiles with optional filters, sorting, free-text search, and pagination.
Requires
profiles:read scope on your API key.Options
The lifecycle threshold options listed above are also supported.
--order-by Values
last_onchain, first_onchain, net_worth_usd, updated_at, tx_count, first_seen, last_seen, num_sessions, revenue, volume, points
Examples
{ data, total, page, size, has_more }.
When --timestamp is present, wallet-enrichment fields come from the stored base snapshot closest to that instant. If two snapshots are equally close, the later snapshot is returned. Expanded chains, apps, and tokens come from the selected profiling batch. Project engagement fields, project-defined identity overrides, and labels remain current. Omitting --timestamp returns the latest profile.
Filters
--filters accepts a JSON array of canonical filter objects. Resource filters use a stable field plus named qualifier properties (chain_id, app_id, token_address, scope, tag_id):
Filter Operators
eq, neq, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, notEmpty, isEmpty
The long-form spellings (equals, notEquals, greater, greaterOrEqual, less, lessOrEqual, notIn, includes) are retired. The API rejects them with a 400 naming the token. Use only the canonical operators above.
The vocabulary is shared, but each field implements a subset — an unsupported pairing is a 400:
notEmpty and isEmpty are value-less existence checks; the value is ignored.
formo profiles update <address>
Merge-update identity properties on a single wallet profile. Provide --properties, --unset, or both.
Requires
profiles:write scope on your API key.Options
Allowed property keys:
user_id, display_name, email, farcaster, discord, twitter, telegram, instagram, website, github, linkedin, facebook, tiktok, youtube, reddit, avatar, description, location, ens, lens, basenames, linea
A deleted property reads as
null everywhere, including over any globally-enriched fallback value, until a new value is set. user_id cannot be unset (it participates in identity stitching).formo profiles properties batch
Batch update first-party profile properties for up to 100 wallets.
Requires
profiles:write scope on your API key.Options
null values:
ENS names are not resolved in batch requests. Use wallet addresses in each
address field.formo profiles labels create <address>
Upsert one or more labels on a wallet profile. Provide either a single label with --tag-id or a wallet-local batch with --labels.
Requires
profiles:write scope on your API key.Options
Examples
formo profiles labels batch
Batch upsert labels across up to 100 wallets.
Requires
profiles:write scope on your API key.Options
ENS names are not resolved in batch requests. Use wallet addresses in each
address field.formo profiles labels delete <address>
Delete a label from a wallet profile. Pass --chain-id to scope deletion to a chain-specific label.
Requires
profiles:write scope on your API key.