Skip to main content

SDKs

First-party clients for the DataMaxi+ API. All SDKs are generated from the same OpenAPI spec, so endpoint coverage is identical and types stay in lock-step across languages — when a new endpoint ships on the REST API, every SDK gains a typed wrapper for it in the next release.

LanguagePackageFull reference
Pythondatamaxipython.datamaxiplus.com
Rustdatamaxirust.datamaxiplus.com
TypeScript@bisonai/datamaxiSee TypeScript

Per-language deep dives (full method reference, type definitions, async/await patterns) live on the dedicated subdomains. The pages in this section give you enough to install, authenticate, and make a first call without bouncing.

Choosing an SDK

  • Python — analysis, research notebooks, trading bots, anything that touches pandas/NumPy. Default choice for most users.
  • Rust — low-latency systems, market-makers, anything where allocation and GC matter. Strongly-typed end to end.
  • TypeScript — browser dashboards, Node services, Edge runtimes (Cloudflare Workers, Vercel Edge). Same package on both sides; see TypeScript page for browser-vs-server key safety.

Common patterns

All SDKs follow the same conventions; the language idioms differ but the moving parts don't.

API key via env var. Set DTMX_API_KEY once and the client picks it up. Constructor-arg auth also works for multi-tenant code.

Rate-limit handling. SDKs surface HTTP 429 as a typed error with retry-after metadata. Apply your own backoff or use the built-in retry helpers. See Rate Limits.

Pagination. Most list/history endpoints return a tuple of (page, next_fn) (Python/TS) or (page, cursor) (Rust). Call the next function/cursor to fetch the following page; receive None/null when exhausted.

Errors. All client errors map to a single SDK exception type with the upstream HTTP status, error code, and message preserved. See Errors.

Streaming. WebSocket subscriptions are exposed as iterators / async iterators / Stream impls — same payload shape as the raw WS API.