AI Power Grid — Python SDK
Open-model, OpenAI-compatible inference across community-operated GPUs.
Release status:
grid-sdkis published on PyPI. Use a current release so the OpenAI-compatible client and native Grid media helpers stay in sync.
The Grid API speaks the OpenAI protocol, so this SDK is a thin layer over the
official openai package: it points at the Grid, reads your key from the
environment, and adds Grid-specific conveniences. Everything you know from the
OpenAI SDK works unchanged.
Install
pip install grid-sdk
Quick start
Sign in at the Grid developer console,
create an API key, then set it as AIPG_API_KEY:
from grid_sdk import Grid
client = Grid() # reads AIPG_API_KEY from the environment
stream = client.chat.completions.create(
model="gpt-oss-120b",
messages=[{"role": "user", "content": "Explain AI Power Grid in one line."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
See what's online
The Grid's available models change as workers connect and disconnect. Don't hardcode a model blindly — ask which ones are servable right now:
client = Grid()
print(client.online_models())
# ['gpt-oss-120b', 'qwen3-27b', ...]
An empty list means no workers are connected — requests will 503 until one is.
Credits
credits = client.grid.credits()
print(credits["total_spendable_usd"])
This is Core's canonical promotional, daily-free, and purchased account view. The SDK does not maintain a local free-use counter.
Async
import asyncio
from grid_sdk import AsyncGrid
async def main():
client = AsyncGrid()
resp = await client.chat.completions.create(
model="gpt-oss-120b",
messages=[{"role": "user", "content": "Hi"}],
)
print(resp.choices[0].message.content)
asyncio.run(main())
Video, img2img, ControlNet, LoRAs — the full Grid
The OpenAI-compatible surface covers text and basic txt2img. For the full media
parameter surface, use client.grid, which calls the synchronous /v1 image
and video endpoints:
client = Grid()
# Video:
result = client.grid.video(
prompt="a timelapse of a city at night",
model="LTX-2.3",
width=768, height=512, seconds=4, fps=24,
)
# img2img / ControlNet / LoRAs — anything the workers support:
result = client.grid.image(
prompt="make it watercolor",
models=["FLUX.2 Klein 4B FP8"],
source_image="<base64>",
loras=[{"name": "watercolor", "model": 1.0}],
)
# Or full control with a raw payload:
result = client.grid.generate({"prompt": "...", "models": [...], "params": {...}})
client.grid waits for the synchronous Grid response and returns the finished
OpenAI-shaped result. Use timeout for long media jobs; there is no SDK
submit/poll mode on this /v1 client.
It's just OpenAI underneath
Grid subclasses openai.OpenAI, so anything the OpenAI SDK does — images,
tool calling, structured output, the full .chat/.images/.models surface —
works here too. You can also point existing OpenAI code at the Grid by setting
base_url="https://api.aipowergrid.io/v1" if you'd rather not switch packages.
Config
Grid(api_key=...) |
Explicit key (overrides env) |
AIPG_API_KEY |
Env var read when no key is passed |
Grid(base_url=...) |
Override the endpoint (default https://api.aipowergrid.io/v1) |
Links
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grid_sdk-0.1.2.tar.gz.
File metadata
- Download URL: grid_sdk-0.1.2.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88b310db8d3a72aff77fb896b19e76a98b1fda0a5606557769ea07f92a130c0b
|
|
| MD5 |
5b9dcfdab0e6e2420b6a8b2c8f290981
|
|
| BLAKE2b-256 |
ff5f42b4994a8e518c62aa0dd7abfb7b18b93e2841a22aeb09c5a726f396d461
|
Provenance
The following attestation bundles were made for grid_sdk-0.1.2.tar.gz:
Publisher:
release.yml on AIPowerGrid/grid-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grid_sdk-0.1.2.tar.gz -
Subject digest:
88b310db8d3a72aff77fb896b19e76a98b1fda0a5606557769ea07f92a130c0b - Sigstore transparency entry: 2656466841
- Sigstore integration time:
-
Permalink:
AIPowerGrid/grid-sdk-python@d1d31fdf5dbefcaa8fe66555a01d2927a56c6852 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/AIPowerGrid
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d1d31fdf5dbefcaa8fe66555a01d2927a56c6852 -
Trigger Event:
release
-
Statement type:
File details
Details for the file grid_sdk-0.1.2-py3-none-any.whl.
File metadata
- Download URL: grid_sdk-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd61de83ae936847e9b49c80df085ba83795fff6fc6c7189640142a0bebcc214
|
|
| MD5 |
fb12d9dd37cab43efb06f4752fe348f0
|
|
| BLAKE2b-256 |
404fbdcf2bc6633cfc2141cbc719a7f0e289b822f4b8998855b449194398ae15
|
Provenance
The following attestation bundles were made for grid_sdk-0.1.2-py3-none-any.whl:
Publisher:
release.yml on AIPowerGrid/grid-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grid_sdk-0.1.2-py3-none-any.whl -
Subject digest:
fd61de83ae936847e9b49c80df085ba83795fff6fc6c7189640142a0bebcc214 - Sigstore transparency entry: 2656466906
- Sigstore integration time:
-
Permalink:
AIPowerGrid/grid-sdk-python@d1d31fdf5dbefcaa8fe66555a01d2927a56c6852 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/AIPowerGrid
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d1d31fdf5dbefcaa8fe66555a01d2927a56c6852 -
Trigger Event:
release
-
Statement type: