---
title: "Wallet funding-graph connections"
method: GET
path: "/v1/wallets/{address}/connections"
tags: ["Wallets"]
---

# Wallet funding-graph connections

`GET /v1/wallets/{address}/connections`

## Request

- Base URL: `https://crowdintel.xyz/api`
- URL: `https://crowdintel.xyz/api/v1/wallets/{address}/connections`
- Auth: HTTP bearer

**Min tier: `free`.** The wallet's MEANINGFUL typed funding-graph links from `wallet_edges` — shared-CEX deposit reuse, pass-through distributors, gas providers, direct CEX links, and coordinated trade timing — each normalised to the counterparty (with an exchange label when it is a known CEX), plus the wallet's own cluster membership. Raw `usdc_out`/`usdc_up`/`usdc_out2` money-flow edges are excluded (cash movement, not a connection). **Confidence honesty:** edges with `confidence < 0.5` are heuristic/weak inferences (leads, not proof); raw on-chain transfers carry `confidence = 1`. Bounded to the single address and hard-capped by `limit` (default 100, max 500).

## Path parameters

- `address` string, required

## Query parameters

- `limit` integer

## Response `200`

Wallet connections.

- WalletConnections
  - `address` string
  - `cluster_id` string, nullable: The wallet's persistent cluster id if it belongs to one, else null.
  - `role` string, nullable: member | intermediary | funder within its cluster, or null when unclustered.
  - `connection_count` integer
  - `connections` WalletConnection[]
    - `counterparty` string
    - `edge_type` 'deposit_reuse' | 'distributor' | 'gas' | 'usdc_cex' | 'temporal': deposit_reuse = shared CEX deposit address; distributor = zero-balance pass-through; gas = POL top-up provider; usdc_cex = direct CEX link; temporal = coordinated trade timing.
    - `direction` 'outgoing' | 'incoming': outgoing = wallet is the edge source; incoming = wallet is the edge destination.
    - `confidence` number: 1 = raw on-chain transfer. **< 0.5 = heuristic/weak inference** (deposit-reuse off a shared sweep signature, temporal co-timing) — a lead, not proof.
    - `total_amount` number
    - `transfer_count` integer
    - `first_seen_at` string, date-time
    - `last_seen_at` string, date-time
    - `counterparty_label` string, nullable: Exchange label if the counterparty is a known CEX address, else null.

## Other responses

- `400`: Malformed parameters or a rejected guardrail (e.g. unfiltered trades query, cluster blowup, window > 90 days).
- `401`: Missing, invalid, or revoked API key. Returned before the rate limiter runs, so it carries no `X-RateLimit-*` headers.
- `403`: Key valid but its tier is below this endpoint's minimum. Returned before the rate limiter runs, so it carries no `X-RateLimit-*` headers.
- `429`: Hourly or monthly rate limit exceeded.

---

[API](https://skmtc.dev/crowdintel/apis/crowdintel-api.md) · [All operations](https://skmtc.dev/crowdintel/apis/crowdintel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crowdintel/apis/crowdintel-api/revisions/7059cfe9320d?raw)
