Skip to main content
Callouts are switched on per instance on request. Contact us (contact@cabalspy.xyz) to enable them. Without them every endpoint answers 403 feature_not_enabled.
A callout is a user of your platform publicly calling a token: “this one goes up”. CabalSpy ID stamps the token’s price and market cap at that moment and tracks how the token performs from there, the same way CabalSpy scores its own calls. You get each callout’s current and peak multiple, statistics per user, a leaderboard of your callers, a live stream, webhooks and callout competitions. A key only reaches the callouts of its own instance. GET /v1/me lists "callouts" in features when they are switched on for your instance.

Who can make a callout

You make a callout from your backend, in the name of one of your users:
  • a platform user, by external_id or csid_id,
  • or a person who signed in to your app with CabalSpy ID and granted the scope thesis, by csid_id.
To read the callouts or stats of a person who signed in with CabalSpy ID (not a platform user), the thesis scope is not needed: it is enough that they use your app. Your instance’s callout settings decide the rest: Independent of the settings, a user can call the same token only once per 24 hours: a new callout on that token is possible once the first day of the previous one is over. Users paused from writing theses cannot make callouts either.

How a callout is tracked

1

At the call

The current price and market cap of the token are stamped on the callout (at_call). A token without a market price cannot be called (no_price).
2

First 24 hours

The price is read every minute. Each read updates the current multiple (now.x) and, when it is a new high, the peak (peak). Milestones are announced as they are reached.
3

First day scored

About five minutes after the first 24 hours, the day is scored on price candles, like the CabalSpy call statistics, and callout.scored is sent. From now on the multiples are measured against the candle entry.
4

While the token is active

The price is read every 5 minutes, and once a day the highest high of that day’s 5-minute candles is added to the peak, so a spike between two reads still counts.
5

Tracking stops

When the token’s market cap stays below $10,000 for 24 hours in a row, or the token has no price at all for 24 hours in a row, tracking stops, the callout’s status becomes final and callout.final is sent. Its score stays as it was.
The 24-hour clock for an inactive token starts at the first read below $10,000 after the first day, or at the end of the first day if the token is below $10,000 then. A token the market data provider no longer prices counts as below $10,000. Any read at $10,000 or more resets the clock. A temporary error at the provider changes nothing. tracking.below_10k_since shows when the current clock started. tracking.stop_reason says why tracking stopped: inactive when the last read before the stop had a market cap below $10,000, no_price when the token had no price. While a callout is in its first day it is never stopped. All callouts on the same token share one price read per round, however many users called it.

Scoring

The score of a callout is its peak multiple:
Entry price. Until the first day is scored, the entry is the price stamped at the call. After that, it is the candle entry, as in the CabalSpy call statistics:
  • the close of the 1-minute candle right before the call, so nothing after the call is used;
  • if trading only starts in the minute of the call (a fresh token), the close of that candle;
  • if the first trade comes at most 2 minutes after the call, the open of that candle.
Highest price. Only prices seen after the call count: the highest high of the first day’s candles (1-minute candles for the first hour, then 5-minute candles), and every price read and the highest high of each later day’s 5-minute candles. Only candles that start after the call count. The price stamped at the call is the entry, never the peak. Right after the call, before any later price was seen, score_x and peak.x are exactly 1.0. During the first day they rise above 1.0 once a read is higher than the price at the call. Once the first day is scored on candles, the multiples are measured against the candle entry, so score_x can move at that moment, and it can be below 1.0 when the token never traded above the entry after the call. After that it only rises, with every new high while the token is tracked. Price is compared with price, so the token supply does not matter. Market caps for the current and peak price are the price times the supply known at the call. They are null when the supply is unknown.

The first day

Once the first day is scored, every callout carries first_day:

Milestones

When a callout’s peak multiple reaches 2x, 3x, 5x, 10x, 20x, 50x or 100x, a callout.milestone event is sent on the stream and as a webhook, with milestone_x. Each milestone is announced once per callout. When the price jumps past several milestones between two reads, only the highest one reached is announced.

Statuses

Callouts you remove disappear from every list, statistic, leaderboard and competition.

Statistics and leaderboard

Stats and the leaderboard summarize the callouts made in a period (6h, 1d, 7d or 30d), each with its current score:

Webhooks and stream

The callout webhooks are only offered to instances with callouts switched on. See Callout events and the callouts stream.

Dashboard

When callouts are switched on, the instance shows a Callouts tab with the settings, and the Competitions tab can create callout competitions.

Endpoints