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
| Name | In | Type | Description |
|---|---|---|---|
| handle | path | string | Handle 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.
| Field | Type | Description |
|---|---|---|
| data | Profile | |
| archived | boolean | Whether the profile is archived. |
| avatarUrl? | string | null | Avatar image URL. |
| bio? | string | null | Public bio or description. |
| counts | object | |
| contracts | integer | |
| invocations | integer | |
| wallets | integer | |
| countsAreLowerBounds | boolean | True if counts are bounded by retention or indexing caps. |
| displayName? | string | null | Display name of the handle owner. |
| handle | string | Unique handle registered on Signet. |
| joinedAt? | string | null | ISO-8601 UTC timestamp when the handle was registered. |
| network | "testnet" | "mainnet" | "futurenet" | "local" | Network context. |
| primaryWallet | string | null | Primary 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. |
| address | string | Stellar account public key (G...) or contract ID (C...). |
| attestedAt | string | null | ISO-8601 UTC timestamp when the link was verified, or null. |
| indexingPending? | boolean | True when the indexer has not yet finished scanning the wallet. |
| primary | boolean | Whether this is the primary wallet for the handle. |
| source | string | Provenance of the wallet link (e.g. 'curated', 'cli_link', 'none'). |
| meta | object | |
| network | string | |
| source | string | Layer 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"
}
}