# SDKs Official Synthient client libraries wrap the [HTTP API](https://docs.synthient.com/ipapi) with typed responses, batch lookups, feed downloads, and real-time streams, so you can integrate without hand-writing requests. - [Node](https://docs.synthient.com/sdks/node): `@synthient/synthient` - [Python](https://docs.synthient.com/sdks/python): `synthient` - [Java](https://docs.synthient.com/sdks/java): `com.synthient:synthient-java` - [C#](https://docs.synthient.com/sdks/csharp): `Synthient.Client` - [PHP](https://docs.synthient.com/sdks/php): `synthient/synthient-php` - [Go](https://docs.synthient.com/sdks/go): `github.com/synthient/synthient-go` - [Rust](https://docs.synthient.com/sdks/rust): `synthient` - [Ruby](https://docs.synthient.com/sdks/ruby): `synthient` ## Packages | Language | Install | Requires | Reference | | ------------------------------------------------ | ------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------------------- | | [Node](https://docs.synthient.com/sdks/node) | `npm install @synthient/synthient` | Node.js 22.12 | [npm](https://www.npmjs.com/package/@synthient/synthient) | | [Python](https://docs.synthient.com/sdks/python) | `pip install synthient` | Python 3.11 | [PyPI](https://pypi.org/project/synthient/) | | [Java](https://docs.synthient.com/sdks/java) | `com.synthient:synthient-java:1.0.0` | Java 21 | [Javadoc](https://javadoc.io/doc/com.synthient/synthient-java) | | [C#](https://docs.synthient.com/sdks/csharp) | `dotnet add package Synthient.Client` | .NET 8 | [NuGet](https://www.nuget.org/packages/Synthient.Client) | | [PHP](https://docs.synthient.com/sdks/php) | `composer require synthient/synthient-php` | 64-bit PHP 8.3 | [Packagist](https://packagist.org/packages/synthient/synthient-php) | | [Go](https://docs.synthient.com/sdks/go) | `go get github.com/synthient/synthient-go` | Go 1.26 | [pkg.go.dev](https://pkg.go.dev/github.com/synthient/synthient-go) | | [Rust](https://docs.synthient.com/sdks/rust) | `cargo add synthient` | Rust 1.85 (1.88 without the MSRV-aware resolver), Tokio | [docs.rs](https://docs.rs/synthient) | | [Ruby](https://docs.synthient.com/sdks/ruby) | `bundle add synthient` | Ruby 3.3 | [RubyDoc](https://rubydoc.info/gems/synthient) | ## What every SDK covers Each SDK exposes the same surface in its language's idioms, and each language page documents every type and method with examples. - **Lookups**: one IP address, a batch of up to 1000, or a domain, plus the account and health endpoints. - **Feeds**: the proxy, anonymizer, torrent, JA4T, and four Helios feeds, each with a real-time stream and hourly and daily Parquet exports. - **Errors**: a typed API error carrying the status code, problem details, request ID, and `Retry-After`. - **Retries**: account and feed requests retry on `500`, `502`, `503`, and `504`, on transport failures, and on rate limits that carry `Retry-After`. Billed lookups and the health check retry only on rate limits that carry `Retry-After`, so a lookup is never charged twice. - **Response metadata**: a hook that sees every API response, including request IDs and rate limit headers. - **gRPC schema**: a fetcher for the protobuf schema of the [gRPC API](https://docs.synthient.com/grpc), in every SDK except PHP. The [CLI](https://docs.synthient.com/cli) covers the same surfaces from the terminal.