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

# Overview

> The Aether Python SDK.

The SDK has five public operations and one automatic feature. Everything is `async` and exported from `aether_sdk`.
Authentication is done via the **API key**, that can be created and managed from Aether Dashboard.

## Operations

> [accordion] emit\_delta(delta)
>
> **Endpoint:** `POST /v1/connected/deltas`\
> **Auth:** API key\
> **Returns:** `DeltaAck | None`\
> **On failure:** Returns `None`, never raises.

> [accordion] emit\_delta\_strict(delta)
>
> **Endpoint:** `POST /v1/connected/deltas`\
> **Auth:** API key\
> **Returns:** `DeltaAck`\
> **On failure:** Raises an `AetherError` subclass.

> [accordion] request\_trigger\_plan(plan)
>
> **Endpoint:** `POST /v1/connected/trigger-plans`\
> **Auth:** API key of the top-level orchestrator only\
> **Returns:** `TriggerPlanOut`\
> **On failure:** Raises (403 if the key isn't the orchestrator's).

> [accordion] get\_health()
>
> **Endpoint:** `GET /health`\
> **Auth:** None\
> **Returns:** `dict`\
> **On failure:** Raises.

> [accordion] wrap\_node(fn, \*, extract, workspace\_revision, api\_key)
>
> **Endpoint:** Calls `emit_delta` for each extracted event\
> **Auth:** API key\
> **Returns:** The wrapped LangGraph node\
> **On failure:** Same as `emit_delta`.

## Not in the SDK

* The SDK can't create, list or revoke API keys.
* Environments, systems, contracts, and saved deltas and plans are not available in the SDK or a Connected System.
* LLM usage is sent internally by the usage recorder.

> [!TIP]
>
> **Helper:** `to_jsonable(value)` turns dataclasses, including ones nested in dicts and lists, into JSON-ready values for delta payloads.

## Usage recorder

The SDK records the token usage of LLM calls to OpenAI, Anthropic and Google (Gemini) in the background.
You don't need to change your code. It works for any client that uses httpx under the hood, including the official provider SDKs.

It turns on when the app starts, as long as `AETHER_API_KEY` is set. Set `AETHER_LLM_USAGE=off` to turn it off.

For each call it reads the token counts from a copy of the response. Your app gets the response unchanged, and streaming
responses are covered too. A background thread sends the records to Aether in batches and retries if a send fails. If Aether can't be reached, usage records may be dropped, but your app is never blocked and never sees an error.

This is internal to the SDK. It has no public API, so you can't call, configure or extend it beyond the on/off switch.

> [!WARNING]
>
> No personal LLM provider credentials or data are sent to Aether.

> [card] [Installation](https://documentation.aibydna.com/desp/aether/python-sdk/installation.md)
>
> Install the SDK and set up credentials.

> [card] [Quick start](https://documentation.aibydna.com/desp/aether/python-sdk/quickstart.md)
>
> Your first working script.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.