What the other side sees
A public account needs a username. An account with no username is always anonymous.
Who sees it
Only the accounts you negotiate with:- a taker sees each maker on that maker’s quote;
- a maker sees the taker once its quote has opened a thread;
- both keep seeing each other through the deal.
counterpartyName, counterpartyStats and counterpartyPicture (GET /v1/threads/{id}, GET /v1/rfqs/{id}/threads). The name and the record are null for an anonymous account. The record is also null when it could not be read.
The track record
The record is counted from the swaps an account was in, as maker or as taker:
Going public shows the record of all your swaps, including the ones made while you were anonymous. Exact definitions are on the
Thread schema in the API reference.
What anonymous does not hide
Anonymous hides your name and your record. It is not a way to be untraceable to a counterparty:- Your account id. A thread and a swap carry
makerIdandtakerIdfor their two parties, and each chat message itssenderId. A counterparty that meets you twice can see it is the same account — a maker that quotes two of your requests, for example. Going anonymous later does not change the id. - A username you keep. An anonymous account’s username stays taken, so anyone who tries to take it learns that it exists. To free it, clear it (
"handle": null). - Your addresses. The other side of a swap sees your settlement addresses, and the swap’s transactions are public on each chain.
- Your picture. A picture you chose is shown on every deal, anonymous or not.
Username rules
- 3 to 24 characters: the letters
atoz, digits and_. - Stored in lowercase. A leading
@is dropped. - Unique across accounts. A few names are reserved.
- A username can be set ten times an hour per account, and an attempt refused because the name is taken counts too. After that the answer is
429. Clearing it and switching visibility are not counted.
Change it
In the app: Account › Profile › How you trade. Over the API, with a key that holds thetaker or maker scope (HL and HK as in the quickstart):
A username another account holds is refused with
409. GET /v1/me returns the current handle and handlePublic.
The same change is the set_profile tool of both MCP servers, and setProfile() / set_profile() in the SDK.
A change applies to every thread you are in, open and past: the other side reads your name as it is now, not as it was when the deal was made.
The picture is chosen in the app only (Account › Profile). There is no
/v1 endpoint for it.