API ReferenceCoordination

Coordination

Structural coordination detection — who copies whom, which wallets cluster into the same funding or execution family, and which tokens are being pushed by coordinated groups right now.

Conyr models coordination as five primitives:

PrimitiveQuestion it answers
FollowsDoes wallet B systematically copy wallet A’s trades?
EntitiesWhich wallets share enough funding or execution evidence to belong to the same family?
CampaignsIs this token being pushed by a coordinated group right now?
CrowdHow loud is the crowd on this token, minute by minute?
HealthIs the live signal pipeline keeping up?

Layer 3 only — Security Intelligence.

⚠️

The degraded flag. The follows, entity, entity-detail, entity-members, and campaigns responses may carry "degraded": true when the live signal pipeline is lagging. Render the data faintly or surface a “signal delayed” note — do not hide it. The crowd response does not include a degraded field — use /v1/coordination/health to gauge crowd freshness.


Follows

GET /v1/wallet/{address}/follows

Wallets this address follows (followsOut) and wallets that follow this address (followsIn). Conyr only surfaces edges that pass internal calibration gates for confidence, support count, and distinct-token diversity.

Parameters

ParameterInTypeRequiredDefaultDescription
addresspathstringyesSolana wallet address
limitqueryintegerno50Max 200 — number of edges returned per direction (followsOut / followsIn)

Example

curl -H "Authorization: Bearer $API_KEY" \
  "https://api.conyr.ai/v1/wallet/7xKXtg.../follows"

Response

{
  "address": "7xKXtg...",
  "followsOut": [
    {
      "leaderWallet": "4mNqR...",
      "followerWallet": "7xKXtg...",
      "confidence": 0.91,
      "supportCount": 18,
      "distinctTokens": 7,
      "lastMatchTsMs": 1709654400000,
      "active": true,
      "degraded": false
    }
  ],
  "followsIn": [],
  "degraded": false
}
FieldDescription
confidenceCalibrated 0–1 score for the follow relationship
supportCountNumber of independent observations backing the edge
distinctTokensNumber of distinct tokens the pattern was observed on
activeWhether the edge is currently being reinforced by recent activity

Cache TTL: 30 seconds.


Entities

An entity is a cluster of wallets that share funding lineage, bundle execution evidence, or both.

Entity kinds

ValueMeaning
shared_funderMembers were funded from a common direct or root funder
shared_executionMembers co-executed bundle transactions in the same slots

GET /v1/wallet/{address}/entity

Returns the entity (if any) this wallet belongs to.

Response

{
  "address": "7xKXtg...",
  "membership": {
    "walletAddress": "7xKXtg...",
    "entityId": "ent_abc123",
    "entityKind": "shared_funder",
    "rootWallet": "9aBcD...",
    "memberCount": 14,
    "confidence": 0.87,
    "lastSeenTsMs": 1709654400000,
    "degraded": false
  },
  "siblingsSample": ["4mNqR...", "2pQrS...", "8tVuW..."],
  "degraded": false
}

siblingsSample is a small sample of co-members for quick UI hydration. For the full member list use the entity-detail endpoints below. membership is null if this wallet doesn’t currently belong to a tracked entity.

Cache TTL: 60 seconds.

GET /v1/entity/{entity_id}

Full entity record with embedded member sample.

{
  "entityId": "ent_abc123",
  "entityKind": "shared_funder",
  "rootWallet": "9aBcD...",
  "memberCount": 14,
  "confidence": 0.87,
  "firstSeenTsMs": 1709500000000,
  "lastSeenTsMs": 1709654400000,
  "degraded": false,
  "members": [
    { "walletAddress": "4mNqR...", "confidence": 0.92, "lastSeenTsMs": 1709654400000 }
  ]
}

Cache TTL: 60 seconds.

GET /v1/entity/{entity_id}/members

Paginated full member list.

Parameters

ParameterInTypeRequiredDefaultConstraints
entity_idpathstringyes
pagequeryintegerno0
page_sizequeryintegerno100Max 500

Response

{
  "entityId": "ent_abc123",
  "page": 0,
  "pageSize": 100,
  "total": 14,
  "members": [
    { "walletAddress": "4mNqR...", "confidence": 0.92, "lastSeenTsMs": 1709654400000 }
  ],
  "degraded": false
}

Cache TTL: 60 seconds.


Campaigns

A campaign is a time-bounded coordinated push on a token — multiple wallets and entities buying in lockstep.

Campaign status

status is not a closed enum of just active/closed. Campaigns are bucketed by their lowercased status: any of active, open, forming, escalating, or escalated lands the campaign in active[]; every other value (e.g. closed, finalized) lands it in recent[].

BucketStatusesMeaning
active[]active, open, forming, escalating, escalatedCampaign is currently live or building on the token
recent[]closed, finalized (any other status)Campaign has cooled off and been finalized

GET /v1/token/{mint}/campaigns

{
  "mint": "EPjFWd...",
  "active": [
    {
      "tokenMint": "EPjFWd...",
      "campaignId": "camp_xyz789",
      "status": "active",
      "startedTsMs": 1709654000000,
      "lastSeenTsMs": 1709654400000,
      "participantWallets": 18,
      "participantEntities": 3,
      "confidence": 0.83,
      "degraded": false
    }
  ],
  "recent": [],
  "degraded": false
}

active contains campaigns currently in progress on the token; recent contains recently-closed campaigns for context.

Cache TTL: 15 seconds.


Crowd

Per-minute crowd state for a token — total trades, unique wallet count, score, and a regime label.

Crowd regime

ValueMeaning
quietBaseline activity, no crowd pattern detected
trending_crowdSustained elevated participation
crowded_launchCrowd pattern around a launch window

GET /v1/token/{mint}/crowd

{
  "mint": "EPjFWd...",
  "current": {
    "bucketStartMs": 1709654400000,
    "totalTrades": 142,
    "uniqueWallets": 87,
    "crowded": true,
    "crowdScore": 0.78,
    "crowdRegime": "trending_crowd"
  },
  "minutes": [
    {
      "bucketStartMs": 1709654340000,
      "totalTrades": 98,
      "uniqueWallets": 64,
      "crowded": false,
      "crowdScore": 0.42,
      "crowdRegime": "quiet"
    }
  ]
}

crowdScore is calibrated 0–1; crowded is the boolean Conyr uses to drive the regime transition.

Cache TTL: 15 seconds.


Coordination Health

GET /v1/coordination/health

Runtime snapshot of the coordination pipeline’s freshness. Use this to decide whether to render “signal delayed” banners across coordination surfaces.

{
  "healthy": true,
  "degradedWindowMs": 0,
  "droppedMessagesLastMinute": 0,
  "observedAtMs": 1709654400000
}

Cache TTL: 30 seconds.


WebSocket Streams

Coordination primitives also stream live. See WebSockets.

ChannelFires when
wallet:{address}:followA follow edge involving the address activates, updates, or expires
wallet:{address}:entityThe address’s entity membership changes
token:{mint}:campaignA campaign on the mint activates, updates, or closes

If subjects appear silent, fall back to the REST endpoints above and check /v1/coordination/health.