The EU AI Act arrives August 2. Can you prove where your AI data goes?
Client libraries

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.

composer require · npm i · pip install

use Akumi\Sdk\Akumi; $akumi = Akumi::fromApiKey($_ENV['AKUMI_API_KEY']); $res = $akumi->chat->create([ 'model' => 'mistral/mistral-small-2603', 'messages' => [ ['role' => 'user', 'content' => 'Summarize this contract.'], ], ]);

A REST API is not an SDK. 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.

Three libraries, one API.

Install 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

PSR-18 HTTP client with an auto-discovered Laravel bridge: service provider, config, and facade.

$ composer require akumi-cloud/sdk
$akumi = Akumi::fromApiKey($key);
$akumi->chat->create([...]);
View on GitHub
TypeScript @akumi/sdk

Native fetch, zero runtime dependencies, dual ESM and CJS, full type definitions. Node 18+.

$ npm i @akumi/sdk
const akumi = Akumi.fromApiKey(key);
await akumi.chat.create({ ... });
View on GitHub
Python akumi

Built on httpx, with both a synchronous and an asynchronous client. Python 3.9+.

$ pip install akumi
client = Akumi.from_api_key(key)
client.chat.create(params={ ... })
View on GitHub

Generated from the spec. Never out of sync.

Generated, not hand-written

Every SDK is emitted from the same OpenAPI spec that defines the API, by our own code generator. When the API gains a parameter, the libraries regenerate. The client cannot drift from the platform.

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. Async client in Python, async generators in TypeScript and PHP. Retries on transient errors and typed exceptions per status, built in.

Already have an OpenAI client?

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 first-class, typed access to the native surface.

Install the SDK. Ship in minutes.

Create a key, install your library, and make your first EU-sovereign call before the coffee is cold.