Skip to main content
The Python and TypeScript SDKs expose an identical surface by design - same resources, same semantics, mirrored naming (snake_case in Python, camelCase in TypeScript).

Install

Authentication

api_key/token/auth are mutually exclusive. Verify a credential with client.auth.whoami(). How the two credential types differ: Authentication. Other constructor options: base_url/baseUrl (defaults to https://api.engini.io), provider (LLM adapter, defaults to OpenAI), verify (TLS control for private CAs / staging).

The resources

Execute a tool

Errors, pagination & rate limits

  • Every failure raises a typed error from one hierarchy (EnginiAuthError, EnginiRateLimitError, EnginiToolExecutionError…) - full tree and handling patterns: Errors & pagination.
  • You never page manually: list methods auto-paginate and return complete arrays.
  • The SDK does not retry automatically - on EnginiRateLimitError, back off per the API’s rate-limit rules.

Python vs TypeScript in one minute

  • Python is fully synchronous; TypeScript is fully async (await everything).
  • Execute’s arguments param: arguments (Python) vs args (TS); options are keyword-only (Python) vs a trailing options object (TS).
  • Providers import from the root in TS (import { AnthropicProvider } from "@engini/sdk") but from submodules in Python (from engini.providers.anthropic import AnthropicProvider).
  • List methods auto-paginate in both - you always get the full array.
  • Neither SDK retries automatically - handle EnginiRateLimitError/EnginiServerError yourself if you need retries.