Skip to main content
PUT

Deleting properties

Send null as a property value to delete (unset) it. Set and unset compose in a single call, and every key you did not mention is left untouched:
A deleted property reads as null everywhere (profile reads, the Users table, search, and filters such as notEmpty), including over any globally-enriched fallback value, until a new value is set. One exception: a deleted location falls back to device geo rather than reading as absent.
user_id cannot be unset; it participates in identity stitching, so { "user_id": null } fails validation with 400 BAD_REQUEST. The literal string _is_deleted is a reserved internal value and is rejected wherever a property value is accepted.
Wallet-enrichment snapshots are versioned, but first-party property overrides (and their deletions) are always current. A point-in-time read with timestamp reflects the latest overrides, so a deletion also masks reads of snapshots taken before it.

Authorizations

Authorization
string
header
required

Workspace API key (e.g. formo_xxx). Create one in the Formo dashboard under Team Settings > API.

Path Parameters

address
string
required

Wallet address. Accepts an EVM (0x...) or Solana address, or an ENS name (e.g. vitalik.eth) which is resolved to an address.

Body

application/json

Merge-update of profile properties. Only the listed keys are accepted; unknown keys are rejected. At least one key must be provided. A null value unsets the property (not allowed for user_id). The literal string _is_deleted is a reserved internal tombstone and is rejected as a value.

user_id
string
display_name
string | null
email
string | null
farcaster
string | null
discord
string | null
twitter
string | null
telegram
string | null
instagram
string | null
website
string | null
github
string | null
linkedin
string | null
facebook
string | null
tiktok
string | null
youtube
string | null
reddit
string | null
avatar
string | null
description
string | null
location
string | null
ens
string | null
lens
string | null
basenames
string | null
linea
string | null

Response

Properties updated. Returns the merged identity (the keys actually set, plus address + updated_at) so callers can cache without a follow-up read.

Echo of the wallet identity after the merge-update applied. Synthesised from the request payload; analytics ingestion is eventually consistent, so the response reflects the applied write rather than a follow-up read.

address
string
required
updated_at
string<date-time>
required
user_id
string | null
display_name
string | null
email
string | null
farcaster
string | null
discord
string | null
twitter
string | null
telegram
string | null
instagram
string | null
website
string | null
github
string | null
linkedin
string | null
facebook
string | null
tiktok
string | null
youtube
string | null
reddit
string | null
avatar
string | null
description
string | null
location
string | null
ens
string | null
lens
string | null
basenames
string | null
linea
string | null