# Akumi SDKs: PHP, TypeScript and Python clients

Official client libraries for PHP, TypeScript and Python, generated from the same OpenAPI spec that runs the API, so the methods, types and errors always match.

## Akumi, in your language.

Official client libraries for PHP, TypeScript and Python, generated from the same OpenAPI spec that runs the API. The methods, types and errors always match the platform. Point one at your EU base_url, set a key, and call chat.create.

The same three calls in every language. Only the import line differs.

## Hand-rolled clients rot.

You can curl the API. But every team that does ends up writing the same plumbing: auth headers, retries, a streaming parser, status-to-error mapping, and request and response types that drift the moment the API changes. It is undifferentiated work, and it breaks quietly, in production, the week after someone ships a new parameter.

## Install it with your package manager.

Authenticate with a key and reach every endpoint: chat, models, memory, threads and the audit log. Each library is published to its own repository and registry, with its own versioning.

### PHP

akumi-cloud/sdk. A PSR-18 HTTP client with an auto-discovered Laravel bridge: service provider, config and facade. Install with composer require akumi-cloud/sdk.

### TypeScript

@akumi/sdk. Native fetch, zero runtime dependencies, dual ESM and CJS, and full type definitions. Node 18 and above. Install with npm i @akumi/sdk.

### Python

akumi. Built on httpx, with both a synchronous and an asynchronous client. Python 3.9 and above. Install with pip install akumi.

## Never out of sync.

The libraries are emitted from the OpenAPI spec that defines the API, so the client cannot drift from the platform.

### Generated, not hand-written

Every SDK comes out of the same OpenAPI spec that defines the API, through our own generator. When the API gains a parameter, the libraries regenerate.

### Secure by construction

Your API key only ever rides the Authorization header, in every language. Never a query string, never the body. The same rule is enforced in the PHP, TypeScript and Python transports.

### Sync, async, streaming

Token streaming is a native generator or async iterator, not a callback. An async client in Python, async generators in TypeScript and PHP. Retries on transient errors and typed exceptions per status, built in.

## Keep it.

The inference API is OpenAI-compatible, so your existing client works by changing one base_url. Reach for an Akumi SDK when you want typed access to the native surface.

### Your OpenAI client still works

Point its base_url at Akumi and set your key. No rewrite, no new dependency, EU-resident by default.

### The SDK is for the native parts

Memory, conversation threads, the audit log and routing parameters, fully typed instead of stringly-typed JSON.

### No lock-in

The wire format is plain OpenAI-compatible HTTP, described by a spec you can read. Leaving is changing a base_url back.

### One client, every service

The firewall, retrieval, routing and the cache ride as parameters on the same chat call. There are no separate endpoints to wire up.

## Questions people ask about the SDKs.

### Do I need an SDK to use Akumi?

No. The inference API is OpenAI-compatible, so an existing OpenAI client works by changing one base_url. The SDKs exist for the parts that are ours: memory, threads, the audit log and the routing parameters.

### Which languages are supported?

PHP, TypeScript and Python, each published to its own registry with its own versioning. Any other language can call the API directly, and the OpenAPI spec is published so you can generate a client.

### How do the libraries stay current?

They are generated from the same OpenAPI spec that defines the API rather than written by hand, so a new parameter on the platform becomes a new parameter in each library.

### Where does my API key go?

In the Authorization header, in every language. Never in a query string and never in the body. The rule is enforced in the transport of all three libraries.

### Is streaming supported?

Yes. Token streaming is a native generator or async iterator rather than a callback: an async client in Python, and async generators in TypeScript and PHP.

### Are the SDKs open source?

Each library is published to its own public repository and package registry, so you can read what your dependency does before you install it.

## Install the SDK. Ship in minutes.

Add a payment method, create a key, install your library, and make your first EU-resident call before the coffee is cold.
