Contracts a handle deployed
GET/api/v1/profiles/{handle}/contracts
The contracts any of the handle's wallets deployed on this deployment's network, newest first (address breaks a tie), with the same attribution as the profile page. Keyset-paginated: a page boundary never repeats or skips a contract. Without an indexer the deployment walks the bound wallet's Horizon history, capped; when neither is available it cannot enumerate contracts and says so with source 'none' and truncated true, never an empty answer that reads as 'no contracts'.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| handle | path | string | Handle to look up (case-insensitive). |
| cursor? | query | string | Opaque pagination cursor from meta.nextCursor. |
| limit? | query | integer | Number of contracts to return (default 25, max 100). |
Example request
curl example
curl -s -H "Accept: application/json" "https://signet-web-pearl.vercel.app/api/v1/profiles/alice/contracts?limit=25"@signet/sdk example
import { SignetClient } from '@signet/sdk';
const signet = new SignetClient({ baseUrl: 'https://signet-web-pearl.vercel.app' });
const result = await signet.listContracts('alice', { limit: 25 });Responses
200 · A page of contracts.
| Field | Type | Description |
|---|---|---|
| data | ProfileContract[] | |
| address | string | Soroban contract ID (C...). |
| contractType | "wasm" | "stellar_asset" | null | Executable type, once the indexer has checked it; null otherwise. |
| deployTxHash | string | Hash of the deploying transaction. |
| deployedAt | string | ISO-8601 UTC deploy time. |
| deployer | string | The handle's wallet that deployed it. |
| network | "testnet" | "mainnet" | "futurenet" | "local" | |
| wasmHash | string | null | Indexed SHA-256 of the executable; null without the indexer. |
| meta | object | |
| cap | integer | null | |
| nextCursor | string | null | |
| source | "database" | "horizon" | "none" | |
| total | integer | null | Contracts in the whole list; null when it is partial. |
| truncated | boolean | True when the list may be incomplete (capped, or no layer answered). |
400 · Invalid handle, cursor or limit.
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": [
{
"address": "CAMYYJCHOQZSTF2KF6WY4UMFXS75VI46NEGKWE6XHWFULYD46BE5EUXZ",
"contractType": "wasm",
"deployTxHash": "string",
"deployedAt": "2026-09-20T12:00:00.000Z",
"deployer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
"network": "testnet",
"wasmHash": "b2a1f39f0e8f1c5bd3a2e6c1d0f4b7a8c9e2d1f0a3b4c5d6e7f8091a2b3c4d5e"
}
],
"meta": {
"cap": 3,
"nextCursor": "string",
"source": "database",
"total": 3,
"truncated": false
}
}