> ## Documentation Index
> Fetch the complete documentation index at: https://developers.essal.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# SDKs Overview

> Official Essal SDKs for Node.js, Python, Ruby, and Go — installation, configuration, and basic usage.

Essal provides official SDKs for the most common server-side languages. All SDKs wrap the same REST API, handle authentication, implement retry/backoff logic, and expose typed models for each app's entities.

## Available SDKs

<CardGroup cols={2}>
  <Card title="Node.js / TypeScript" icon="node-js" href="/sdks/node">
    `@essal/sdk` — supports ESM and CommonJS. Full TypeScript types included.
  </Card>

  <Card title="Python" icon="python" href="/sdks/python">
    `essal-python` — compatible with Python 3.9+. Async support via `asyncio`.
  </Card>

  <Card title="Ruby" icon="gem" href="/sdks/ruby">
    `essal-ruby` — compatible with Ruby 3.0+.
  </Card>

  <Card title="Go" icon="golang" href="/sdks/go">
    `github.com/essal/essal-go` — idiomatic Go client with context support.
  </Card>
</CardGroup>

## Common Features Across All SDKs

* **Auto-retry**: Handles `429` and `5xx` responses with exponential backoff
* **Pagination helpers**: Built-in page iterator and cursor helpers
* **Environment switching**: Single config option to target sandbox, staging, or production
* **Typed responses**: Entity models with IDE autocomplete support
* **Webhook verification**: Helper to verify `X-Essal-Signature` payloads

## Quick Example

```js theme={null}
import { EssalClient } from "@essal/sdk";

const client = new EssalClient({
  apiKey: process.env.ESSAL_API_KEY,
  environment: "production",
});

// List documents
const docs = await client.office.documents.list({ limit: 10 });

// Create a Sales contact
const contact = await client.sales.contacts.create({
  display_name: "Jane Smith",
  email: "jane@acmecorp.com",
});

// Create a Project task
const task = await client.project.tasks.create("proj_01HXYZ9876", {
  title: "Design review",
  priority: "high",
});
```

## Versioning

SDK versions follow the API version. The current major version is **v1**. Pin your SDK to a minor version in production to avoid unexpected breaking changes.

## Community SDKs

Community-maintained SDKs are available for Java, PHP, and .NET. These are not officially supported but are listed in the [GitHub repository](https://github.com/essal/community-sdks).
