Skip to content

Releases: CabalSpy/cabalspy-rust

v0.3.0

Choose a tag to compare

@TokioGaijin TokioGaijin released this 26 Oct 10:53

Curated calls: calls().list(CallsOpts) and calls().stats(period, chains, tiers) for GET /v1/calls and GET /v1/calls/stats, with typed Call and CallStatsResponse. Pagination.total now reads null as 0. Docs: https://docs.cabalspy.xyz/calls

v0.2.0

Choose a tag to compare

@TokioGaijin TokioGaijin released this 07 Oct 12:21

Public demo access: try the API without signing up.

Added

  • CabalSpy::demo() and CabalSpyBuilder::demo(): use the public demo key (DEMO_API_KEY = "demo") against https://api.cabalspy.xyz and wss://stream.cabalspy.xyz. Never used by default.
  • CabalSpy::is_demo().
  • Error::DemoLimit { body, rate_limit, resets_in_seconds, upgrade } for HTTP 429 demo_limit_reached. It is not retried. Other 429s are still Error::RateLimited.
  • Envelope::demo: Option<DemoInfo> with notice, remaining_today (falls back to X-Demo-Remaining) and upgrade links (DemoUpgrade).
  • ApiErrorBody::resets_in_seconds.
  • README section "Try it without signing up" with the keyless https://demo-api.cabalspy.xyz host and the demo limits.

Breaking changes (0.x minor bump)

  • Error is not #[non_exhaustive], so the new DemoLimit variant breaks exhaustive matches without a wildcard arm.
  • Envelope and ApiErrorBody have new public fields, which breaks code that builds them with struct literals.

Demo limits

20 requests per IP per UTC day (REST and WebSocket share the budget), data delayed by 15 minutes, at most 5 rows per list. For realtime data, get a free test key (1,000 requests/month) at https://apidashboard.cabalspy.xyz/ or pay per call with x402.

🤖 Generated with Claude Code

v0.1.1

Choose a tag to compare

@TokioGaijin TokioGaijin released this 02 Oct 10:55
  • Fixed the repository URL (was a placeholder) and the homepage shown on crates.io.
  • README: links to the SDK overview on cabalspy.xyz/sdks, the MCP server, the x402 clients and the CabalSpy Terminal.

No API changes.