---
title: "Official SDKs"
description: "Client libraries for JavaScript, Python, PHP, Ruby, and Go — the full INBIO API in your language."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.in.bio/llms.txt
> Use this file to discover all available pages before exploring further.

# Official SDKs

Official client libraries for the INBIO API. Every SDK is published under the
same name — **`inbio`** (npm: `inbio-sdk`) — covers the entire [REST API](/api), and follows the
same design: a one-line free shortener that needs no account, a full client
for the authenticated API, typed models, a consistent error hierarchy, and a
webhook signature verifier.

| Language | Package | Install |
| --- | --- | --- |
| [JavaScript / TypeScript](/sdks/javascript) | [`inbio-sdk` on npm](https://www.npmjs.com/package/inbio-sdk) | `npm install inbio-sdk` |
| [Python](/sdks/python) | [`inbio` on PyPI](https://pypi.org/project/inbio/) | `pip install inbio` |
| [PHP](/sdks/php) | [`inbio/inbio` on Packagist](https://packagist.org/packages/inbio/inbio) | `composer require inbio/inbio` |
| [Ruby](/sdks/ruby) | [`inbio` on RubyGems](https://rubygems.org/gems/inbio) | `gem install inbio` |
| [Go](/sdks/go) | `inbio-go` module | `go get github.com/getinbio/inbio-go` |

## Shorten a URL in one line

No account, no API key — the [free shorten endpoint](/api/free-shorten) works
out of the box in every SDK:

```js
import { shorten } from "inbio-sdk";
const link = await shorten("https://example.com/very/long/url");
// link.short_url → "https://in.bio/a8K2p"
```

```python
import inbio
link = inbio.shorten("https://example.com/very/long/url")
```

## What every SDK includes

- **Free keyless shorten** — one function call, rate-limited per IP.
- **Links** — list with filters, auto-paginating iteration, create with every
  option (custom slug, tags, folder, UTM, expiration, password, click limit),
  update, delete, enable/disable, and bulk create.
- **QR codes** — fetch a link's QR as PNG or SVG bytes, ready to write to a file.
- **Analytics** — time series, countries, devices, browsers, referrers.
- **Folders, tags, and account usage.**
- **Webhook verification** — constant-time signature check with replay
  protection for [outbound webhooks](/api/webhooks).
- **Typed errors** — authentication, plan/scope access, validation,
  rate-limit (with retry-after), and state-conflict errors you can catch
  individually.
- **Zero runtime dependencies** in every language.

## Authentication

The authenticated API needs a token (create one under **Settings → API
tokens** — API access is available on Pro and Business plans). Every SDK reads
the `INBIO_API_TOKEN` environment variable automatically, or accepts the token
explicitly in the client constructor.

Source: https://docs.in.bio/sdks/index.mdx
