---
title: Sudhanva API SDKs for Python, Ruby, Go, Rust, and JavaScript
description: Official clients for the public sudhanva.me API.
canonical: https://sudhanva.me/developers/sdks/
last-updated: 2026-10-01
---

# Sudhanva API SDKs for Python, Ruby, Go, Rust, and JavaScript

The official SDKs are small clients (typed in Python, Go, Rust, and TypeScript) for the
public `https://sudhanva.me/api/v1` surface. They require no API key and follow the
[OpenAPI 3.1 contract](https://sudhanva.me/openapi.json).
Each SDK has its own release line. The [CLI](https://sudhanva.me/developers/cli/) ships in
the JavaScript package at `0.2.0`. Use the
[machine-readable SDK catalog](https://sudhanva.me/.well-known/sdk-catalog.json)
as the canonical version map.

| Language   | Version | Requires     | Registry                                                                            |
| ---------- | ------- | ------------ | ----------------------------------------------------------------------------------- |
| Python     | `0.2.0` | Python 3.10+ | [PyPI](https://pypi.org/project/sudhanva/0.2.0/)                                    |
| Go         | `0.2.0` | Go 1.26+     | [pkg.go.dev](https://pkg.go.dev/github.com/nsudhanva/sudhanva-go@v0.2.0)            |
| Ruby       | `0.2.0` | Ruby 3.3+    | [RubyGems](https://rubygems.org/gems/sudhanva/versions/0.2.0)                       |
| Rust       | `0.1.0` | Rust 1.85+   | [crates.io](https://crates.io/crates/sudhanva/0.1.0)                                |
| JavaScript | `0.2.0` | Node.js 22+  | [GitHub Packages](https://github.com/nsudhanva/homebrew-sudhanva/pkgs/npm/sudhanva) |

## Python

Requires Python 3.10 or later.

```sh
python -m pip install sudhanva==0.2.0
```

```python
from sudhanva import Client

client = Client()
profile = client.profile()
posts = client.posts(limit=5, tag="kubernetes")
```

- [Package on PyPI](https://pypi.org/project/sudhanva/0.2.0/)
- [Source, examples, and tests](https://github.com/nsudhanva/sudhanva-python)
- [0.2.0 release notes](https://github.com/nsudhanva/sudhanva-python/releases/tag/v0.2.0)

## Go

Requires Go 1.26 or later.

```sh
go get github.com/nsudhanva/sudhanva-go@v0.2.0
```

- [Package documentation](https://pkg.go.dev/github.com/nsudhanva/sudhanva-go@v0.2.0)
- [Source, examples, and tests](https://github.com/nsudhanva/sudhanva-go)
- [0.2.0 release notes](https://github.com/nsudhanva/sudhanva-go/releases/tag/v0.2.0)

## Ruby

Requires Ruby 3.3 or later.

```sh
gem install sudhanva --version 0.2.0
```

- [Package on RubyGems](https://rubygems.org/gems/sudhanva/versions/0.2.0)
- [Source, examples, and tests](https://github.com/nsudhanva/sudhanva-ruby)

## Rust

Requires Rust 1.85 or later (edition 2024). The client is async and runs on Tokio; the
`blocking` feature adds a synchronous client.

```sh
cargo add sudhanva@0.1.0
```

```rust
let client = sudhanva::Client::new();
let profile = client.profile().await?;
let posts = client.posts(sudhanva::PostsOptions::new().limit(5).tag("kubernetes")).await?;
```

- [Package on crates.io](https://crates.io/crates/sudhanva/0.1.0)
- [API documentation on docs.rs](https://docs.rs/sudhanva/0.1.0)
- [Source, examples, and tests](https://github.com/nsudhanva/sudhanva-rust)

## JavaScript and TypeScript

Requires Node.js 22 or later; the library also runs on Bun, Deno, browsers, and edge
runtimes such as Cloudflare Workers. It ships ES modules with TypeScript types. The package
is published to GitHub Packages, which requires a token even for public packages. Add these
lines to your `.npmrc`, with `GITHUB_TOKEN` set to a personal access token (classic) that
has the `read:packages` scope:

```ini
@nsudhanva:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
```

```sh
npm install @nsudhanva/sudhanva
```

```js
import { Client } from '@nsudhanva/sudhanva';

const client = new Client();
const { profile } = await client.profile();
const posts = await client.posts({ limit: 5, tag: 'kubernetes' });
```

- [Package on GitHub Packages](https://github.com/nsudhanva/homebrew-sudhanva/pkgs/npm/sudhanva)
- [Source, examples, and tests](https://github.com/nsudhanva/homebrew-sudhanva/tree/main/cli)
- [0.2.0 release notes](https://github.com/nsudhanva/homebrew-sudhanva/releases/tag/v0.2.0)
- [GitHub Packages npm registry guide](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry)

## Shared behavior

All five clients retrieve the public profile and articles, combine reads through the batch
endpoint, create and poll idempotent profile-insight jobs, query NLWeb search, and expose
non-success responses as structured errors.

In every SDK, an error carries the HTTP status, `code`, `message`, `hint`, `docs_url`
(`docsUrl` in JavaScript), and the decoded body. The clients map RFC 9457 problem details from the profile-insight
endpoints onto the same fields.

The Python, Go, Ruby, and JavaScript SDKs have no runtime dependencies. The Rust SDK depends on
reqwest, serde, serde_json, thiserror, and tokio.
