1. Sign in — your personal workspace is created for you#
Sign in at app.aigridapp.com with your organization account. The console authenticates through single sign-on.
Your first sign-in provisions a personal workspace: a personal organization with you as its Owner, a managed team, a managed project and a project wallet. Nothing to apply for and nothing to approve — the workspace is ready the moment you land.
2. Fund the project wallet#
Wallets live on projects, and a new project starts unfunded — calls fail with
402 insufficient_budget until you top up. In your personal workspace you are the Owner, so
open the project's Wallet page and choose Add funds (between $5 and $10,000). A top-up
is settled against a billing record from Settings → Billing — add one there first if the
dialog reports none on file. Click Add $X to confirm; the wallet is credited immediately.
3. Create a project-scoped API key#
Open API keys and create a key, choosing the project it belongs to. Every key is bound to exactly one project, and that project is the charging context of every call the key makes.
Keys look like aig_… and the secret is shown once — store it before you close the page.
Keys expire after 90 days by default (configurable from 1 to 365 at creation), and you can
optionally restrict a key to a list of models and set a spending limit with a
daily, weekly, monthly or lifetime reset.
In a personal workspace there is no assignment step: the managed project can reach every
published product visible to the workspace. In a company organization, an Owner or
administrator first assigns the product versions a project may call — an unassigned model
answers 403 product_not_assigned.
4. Point your SDK at the grid#
from openai import OpenAI
import os
client = OpenAI(
base_url="https://api.aigridapp.com/v1", # <- the only change
api_key=os.environ["AIGRID_API_KEY"],
)
reply = client.chat.completions.create(
model="openai/gpt-oss-20b",
messages=[{"role": "user", "content": "Hello, grid."}],
)
print(reply.choices[0].message.content)Or straight from the shell:
curl https://api.aigridapp.com/v1/chat/completions \
-H "Authorization: Bearer $AIGRID_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "openai/gpt-oss-20b", "messages": [{"role": "user", "content": "Hello, grid."}]}'Because the key already names its project, you do not select one per call. The optional
X-AIGrid-Project header may only restate the bound project — anything else is refused
with 403 project_mismatch. Run GET /v1/models with the same key to list exactly what it
can call.
Every call you make is metered back to its project, product and person — see Usage and metering.