Profile for a handle

GET/api/v1/profiles/{handle}

Whether the handle exists on this deployment, the wallet it is bound to, and aggregate activity counts. Operations are served by their own paginated endpoint; no reputation score is exposed. `countsAreLowerBounds` is true when a retention window or read cap bounded the counts.

Parameters

Parameters
NameInTypeDescription
handlepathstringHandle to look up (case-insensitive).

Example request

curl example
curl -s -H "Accept: application/json" "https://signet-web-pearl.vercel.app/api/v1/profiles/alice"
@signet/sdk example
import { SignetClient } from '@signet/sdk';

const signet = new SignetClient({ baseUrl: 'https://signet-web-pearl.vercel.app' });
const result = await signet.getProfile('alice');

Responses

200 · The profile.

Fields of a 200 response
FieldTypeDescription
dataProfile
archivedbooleanWhether the profile is archived.
avatarUrl?string | nullAvatar image URL.
bio?string | nullPublic bio or description.
countsobject
contractsinteger
invocationsinteger
walletsinteger
countsAreLowerBoundsbooleanTrue if counts are bounded by retention or indexing caps.
displayName?string | nullDisplay name of the handle owner.
handlestringUnique handle registered on Signet.
joinedAt?string | nullISO-8601 UTC timestamp when the handle was registered.
network"testnet" | "mainnet" | "futurenet" | "local"Network context.
primaryWalletstring | nullPrimary Stellar address bound to this handle, or null when the handle exists but no primary wallet is readable (e.g. an archived registry entry).
wallets?Wallet[]List of associated wallets.
addressstringStellar account public key (G...) or contract ID (C...).
attestedAtstring | nullISO-8601 UTC timestamp when the link was verified, or null.
indexingPending?booleanTrue when the indexer has not yet finished scanning the wallet.
primarybooleanWhether this is the primary wallet for the handle.
sourcestringProvenance of the wallet link (e.g. 'curated', 'cli_link', 'none').
metaobject
networkstring
sourcestringLayer that answered ('database' or 'chain').

400 · Invalid handle.

404 · No profile for this handle.

429 · Rate limit exceeded.

500 · Internal server error.

Example response

Generated from the schema; real values differ.

example response
{
  "data": {
    "archived": false,
    "avatarUrl": "string",
    "bio": "string",
    "counts": {
      "contracts": 3,
      "invocations": 3,
      "wallets": 3
    },
    "countsAreLowerBounds": false,
    "displayName": "string",
    "handle": "alice",
    "joinedAt": "2026-09-20T12:00:00.000Z",
    "network": "testnet",
    "primaryWallet": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
    "wallets": [
      {
        "address": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
        "attestedAt": "2026-09-20T12:00:00.000Z",
        "indexingPending": false,
        "primary": false,
        "source": "string"
      }
    ]
  },
  "meta": {
    "network": "string",
    "source": "string"
  }
}