Skip to main content

Users

The DFOS API exposes public user profiles. A profile carries only public identity information — a protocol DID, handle, display name, avatar, bio, and profile links. It never exposes presence (whether someone is online), account data, or any exact numbers about a person.

Public by default

DFOS user profiles are public by design. Every profile is listed and fetchable by default, and an owner can opt out to make their profile private. A private profile does not appear in the listing, and fetching it directly returns 404 Not Found — indistinguishable from a profile that does not exist.

Identifying a user

GET /v1/users/{user} accepts three forms of identifier:

  • Handle (username), e.g. bvalosek. Handles are case-insensitive.
  • Identity entity id, e.g. identity_6encc4akrze2ah9kntzd9t.
  • Protocol DID, e.g. did:dfos:6encc4akrze2ah9kntzd9tc8zr24crc — the same did value the API returns.

A handle is a mutable alias: it can change or be released, and a released handle may later belong to a different user. The identity id and protocol DID are the canonical, stable identifiers to store.

Legacy internal identifiers are not accepted and return 404 Not Found.

Listing

GET /v1/users lists public profiles, cursor-paginated. Ordering is deterministic and stable across pages but otherwise unspecified — do not depend on it. Test/QA accounts are excluded from the listing.

See Conventions for the pagination contract, and Posts for how a user appears as a post author.