Skip to content

One API for every AI model your product uses.

AetherGrid sits between your application and the AI providers. Send one request and it picks the right model, handles failures, and shows you exactly what each call cost.

aethergrid / live viewDemo data

01application

  • support-agentlive
  • search-reranklive
  • triagelive
  • eval-runnertest
  • docs-qalive
  • summariserlive
  • playgroundtest

02aethergrid router

req_01jcn214z0emt2djsvvv4n
  1. received
  2. ranked
  3. dispatched
  4. recorded
strategy
cost · policy: require_tools · min_context_window 128,000
candidates
8 → 7 eligible · gemini-2.5-flash: circuit breaker open
chosen
claude-haiku-4.5 via experiential-labs
routing_reason
cheapest eligible candidate at $1.20/M input

03models · providers

  • llama-3.3-70b-instruct

    self-hosted

    330 ms$0.14/M

    fast

  • mistral-large-3

    self-hosted

    290 ms$0.24/M

    balanced

  • deepseek-v3.2

    self-hosted

    640 ms$0.34/M

    balanced

  • claude-haiku-4.5

    experiential-labs

    460 ms$1.20/M

    succeeded

  • claude-sonnet-4.5

    anthropic

    940 ms$3.60/M

    balanced

  • claude-opus-4.6

    anthropic

    1420 ms$18.00/M

    frontier

  • gpt-5.1

    openai

    1180 ms$1.50/M

    frontier

  • gemini-2.5-flash

    google

    —

    circuit breaker open

04observability / requests

timemodelstatuslatencyyour cost
··:··:··.···claude-haiku-4.5succeededfallback488 ms$0.008064
··:··:··.···claude-sonnet-4.5succeeded962 ms$0.010044
··:··:··.···llama-3.3-70b-instructsucceeded341 ms$0.000364
··:··:··.···gpt-5.1succeededstream1,204 ms$0.010734
··:··:··.···mistral-large-3succeeded276 ms$0.000253
request_idreq_01jcn214z0emt2djsvvv4nrouting_reasoncheapest eligible candidate at $1.20/M inputdid_fallbacktrue · attempt 2 · first attempt llama-3.3-70b-instruct · 502customer_cost_usdprovider cost plus the service markupcost_is_estimatedfalse · provider reported the cost
Providers
Six providers, one integration
anthropic · openai · google · azure-openai · experiential-labs · self-hosted
Routing
Pick by cost, speed, quality or balance
explicit · cost · latency · quality · balanced
Cost
The price of every call, on every response
cost_usd · cost_is_estimated · routing_reason

request / lifecycle

Watch a request move
through AetherGrid.

Press run and follow one request from arrival to record. You will see the rules it is checked against, the models considered, the one that wins and why, the response, and the entry it leaves in your request log.

This is a demonstration. It replays the same request every time with illustrative numbers, and nothing here calls a provider or spends money. The real thing is one call to POST /v1/chat/completions with your key.
aethergrid / request simulationDemo request
idle
01requestPOST /v1/chat/completions

"Summarize this document and identify the key risks."

projectproduction

strategyquality

02policyproject routing policy

strategyquality · quality tier, then cost

require_toolstrue

min_context_window128,000

03routereligibility, then ranking

candidates6

eligible4

eliminatedgemini-2.5-pro: circuit breaker open · gpt-5-mini: adapter unconfigured

rankingquality + cost

04candidates6 considered
05selected model—

— awaiting the router

06response—

— awaiting the router

07telemetryobservability / requests

— the request lands here, retrievable by id

Every AI request your product makes passes through one place that knows which model answered, why, and what it cost.

POST /v1/chat/completions·six adapters·four strategies·one request log

routing / strategies

The same request.
You choose what matters.

Pick cost, speed, quality or a balance. AetherGrid first removes any model it cannot actually call, such as a provider you have not connected or one that is currently failing, then ranks the rest and tells you, in plain words, which model won and why.

Rankings use live data: current prices, the response times your own traffic has measured, and each provider's health right now. You can ask which model would be chosen without spending anything at POST /v1/chat/route-preview.
routing / candidates7 eligible · 3 eliminatedIllustrative data
modeladapterp50your $/M intierstate
claude-opus-4.6anthropic1420 ms18.004 · frontiersame tier, 1420 ms at $18.00/M
gpt-5.1openai1180 ms1.504 · frontierchosen
claude-sonnet-4.5anthropic940 ms3.603 · balancedeligible
gemini-2.5-progoogle1260 ms1.503 · balancedcircuit breaker open
deepseek-v3.2self-hosted640 ms0.343 · balancedeligible
mistral-large-3self-hosted290 ms0.243 · balancedeligible
claude-haiku-4.5experiential-labs460 ms1.202 · fasteligible
gemini-2.5-flashgoogle520 ms0.362 · fastcircuit breaker open
gpt-5-miniazure-openai610 ms0.302 · fastadapter unconfigured — no credential
llama-3.3-70b-instructself-hosted330 ms0.142 · fasteligible

rules from the project's routing policy: require_tools · min_context_window 128,000 · prices and response times are illustrative

POST /v1/chat/route-preview200
{
  "primary": {
    "slug": "gpt-5.1",
    "provider": "openai"
  },
  "fallbacks": [
    { "slug": "claude-opus-4.6", "provider": "anthropic" }
  ],
  "strategy": "balanced",
  "reason": "highest tier (frontier); then speed and cost together, 1180 ms at $1.50/M",
  "considered": 7,
  "eliminated": [
    { "slug": "gemini-2.5-pro", "reason": "circuit breaker open" },
    { "slug": "gemini-2.5-flash", "reason": "circuit breaker open" },
    { "slug": "gpt-5-mini", "reason": "adapter unconfigured — no credential" }
  ]
}
No provider is called and nothing is spent. Sending the same request for real would cost about $0.005304 at 1,840 tokens in and 212 out, at the illustrative prices shown (provider price plus the service markup).
providers / healthlive · last hourIllustrative data
adapterconfiguredcircuit_statefailuressuccessprobe
anthropictrueclosed099.8%412 ms
openaitrueclosed099.6%388 ms
googletrueopen541.0%—
experiential-labstrueclosed099.9%296 ms
self-hostedtrueclosed0100.0%61 ms
azure-openaifalse · no credentialclosed0——

A provider that fails several times in a row is marked open and skipped; after a cooldown it is tried again, and a success marks it closed. Only genuine provider failures count, so a request that was itself malformed changes nothing. Skipping an open provider is what stops someone else's outage from becoming your slow day.

observability / usage

See every request.
Know every dollar.

Every call is recorded with its model, provider, response time, tokens and cost. Usage and spend are built from that same record, so the totals always add up to the requests you can see.

Set a monthly budget per project, as a warning or a hard stop. Cost comes from the provider whenever it reports one, and is estimated from list prices otherwise; cost_is_estimated tells you which. An unknown cost is shown as unknown, never as zero.
usage / septemberproject: production · month to dateIllustrative data

Requests

140,400

6 models · 4 adapters

p50 latency

405 ms

weighted by requests, from the log

Tokens in / out

324.4M / 24.7M

cached input not shown

Spend

$294.82

20% of a $1,500 advisory budget

usage / spend by model$294.82Illustrative data
modelspendshare
claude-haiku-4.5$143.52
49%
gpt-5.1$72.00
24%
claude-sonnet-4.5$32.04
11%
llama-3.3-70b-instruct$21.08
7%
deepseek-v3.2$14.75
5%
mistral-large-3$11.42
4%

Spend is what you pay: the provider's reported cost plus the service markup. Every figure says whether the provider reported it or it was estimated. The cheapest model here carries 44% of requests for 7% of spend, which is exactly what routing by cost is for.

observability / latencyp50 by model · msIllustrative data
  • mistral-large-3290
  • llama-3.3-70b-instruct330
  • claude-haiku-4.5460
  • gemini-2.5-flash520
  • gpt-5-mini610
  • deepseek-v3.2640
  • claude-sonnet-4.5940
  • gpt-5.11,180
  • gemini-2.5-pro1,260
  • claude-opus-4.61,420

your own servers. Speed is measured from this workspace's own requests, not from a vendor's status page.

agents · workflows · evaluations

Build more than
a chat completion.

Assistants that use tools, workflows that chain steps together, and evaluations that score models against your own examples all run through the same gateway. Every step is logged and priced like a normal request, with an id you can open.

Runs happen while your request is open, so a long workflow can take minutes. Give those calls a generous timeout. Everything else about them, cost, routing and logging, works exactly as it does for a single completion.
workflows / incident-summaryv7 · apiIllustrative data
  1. 01

    triggertrigger

    POST /v1/workflows/{id}/runs

    2 ms
  2. 02

    fetchhttp_request

    GET status-page incidents · 200

    184 ms
  3. 03

    contextknowledge

    runbooks · 4 chunks · pgvector hnsw

    96 ms
  4. 04

    draftmodelgpt-5.1

    strategy: quality

    req_01j3l9jp6c… · 3,860 / 412 tokens · $0.008945

    1,204 ms
  5. 05

    severitycondition

    output.severity in [sev1, sev2] → true

    1 ms
  6. 06

    shapetransform

    jsonpath · pick title, summary, owners

    3 ms
  7. 07

    notifyhttp_request

    POST on-call webhook · 202

    221 ms
  8. 08

    outputoutput

    output_payload

    1 ms
status
succeeded
latency_ms
1,712
total_tokens
4,272
total_cost_usd
$0.008945
agents / support-agentcost · 4/8 stepsIllustrative data
  1. 01

    search_kbknowledge_search

    help-centre · top 3 · score ≥ 0.72

    succeeded88 ms
  2. 02

    lookup_orderhttp_request

    GET /orders/{id} · 200

    succeeded142 ms
  3. 03

    redactcode_transform

    strip card digits before the model sees them

    succeeded4 ms
  4. 04

    compose_replymodel_callllama-3.3-70b-instruct

    cheapest eligible candidate

    req_01j1u9f28g… · 2,140 / 186 tokens · $0.000313

    succeeded318 ms
status
succeeded
latency_ms
552
total_tokens
2,326
total_cost_usd
$0.000313
evaluations / refund-policy-answersdataset v3Illustrative data
modelclaude-haiku-4.5baselineclaude-sonnet-4.5
casescorerscorevs base
refund-windowcontains1.00same
partial-refund-mathexact_match1.00▲ improved
policy-jsonjson_equals1.00same
order-id-formatregex1.00same
tone-apologyllm_judge0.62▼ regressed
escalation-pathcontains1.00same
passed_cases
5 / 6
average_score
0.94
regressions
tone-apology
total_cost_usd
$0.0069

1 improvement, 1 regression against the baseline run on the same version of the test set. Only runs on the same version are compared, so editing your examples can never look like a regression.

  1. 01One API for every model
  2. 02Smart routing
  3. 03Agents and workflows
  4. 04Your documents, searchable
  5. 05See every request
  6. 06Evaluations
  7. 07Cost control
  8. 08Built for developers
  9. 09Security and access control

One key, one request format, every model you might want to use.

Authorization: Bearer ag_live_…·live · test·GET /openapi.json

developers / api

Built for
developers.

A clean REST API, a published OpenAPI reference, and keys for live and test environments so staging can never spend your production budget. Point your code at one endpoint and change models without touching it again.

The reference at GET /openapi.json is generated from the running service, so it always matches what is deployed. Authenticate with Authorization: Bearer ag_… or an X-API-Key header.
POST /v1/chat/completions
curl https://app.aethergridlabs.com/v1/chat/completions \
  -H "Authorization: Bearer $AETHERGRID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{"role": "user", "content": "Summarise this incident."}],
    "strategy": "cost",
    "max_tokens": 512
  }'
response200 · application/jsonIllustrative data
{
  "request_id": "req_01j9r2m8k4x7v3p6q1w5e8t2y0",
  "content": "Two services lost quorum at 09:41 after…",
  "finish_reason": "stop",

  "model": "llama-3.3-70b-instruct",
  "provider": "self-hosted",
  "routing_strategy": "cost",
  "routing_reason": "cheapest eligible candidate at $0.12/M input",
  "did_fallback": false,
  "attempt_count": 1,

  "usage": {
    "input_tokens": 1840,
    "output_tokens": 212,
    "is_estimated": false
  },
  "latency_ms": 318.4,
  "cost_usd": 0.000284,
  "cost_is_estimated": true,
  "customer_cost_usd": 0.000341
}
Every field above comes back on every call. cost_usd is the provider's price; customer_cost_usd is what you pay, with the service markup added. An unknown cost is null, never zero.
project / keys4 activeIllustrative data
namekeyscopeslast_usedstate
support-agentag_live_••••••••3f9cinference:runrequests:read2s agoactive
search-rerankag_live_••••••••a71einference:run4s agoactive
triageag_live_••••••••c204inference:runrouting:read9s agoactive
eval-runnerag_test_••••••••8d1binference:runevaluations:write1m agoactive
ci-smokeag_test_••••••••5e77inference:runrevoked 3d agorevoked

Every action is checked twice: against the key's permissions and against the role of the person who owns it (viewer, member, admin or owner). Both must allow it. A lost key is revoked and reissued; it cannot be recovered, because it was never stored.

Developer overviewAPI reference
  • adapters
  • anthropic
  • openai
  • google
  • azure-openai
  • experiential-labs
  • self-hosted

architecture

A small system
you can understand.

A web console, an API and a database. Your provider keys live only on the API server, never in the browser, and every request to a provider goes through the one gateway that records it.

browser → console
You sign in to the console. It talks to the API for you and never holds a provider key.
console → api
One hop over a private network. The API is where routing, logging and cost tracking happen.
api → providers
Provider credentials stay on the server. They are never returned by any endpoint and never reach the browser.
browserhttps · public ingressconsole · Next.jsholds no provider credentialprivate network · one hopAPI · FastAPIgateway · router · breakers · runsproviderAPIs ×6PostgreSQL+ pgvector · 28 tablesRediscacheBlob / filestorage

team

The people behind AetherGrid AI

AetherGrid AI is led by its founder and its CTO.

contact

Start with one request.
Keep every model open to you.

Create a free account and make your first request in minutes. If your team needs agreed limits or a private setup, tell us what you are building and we will set it up with you.

Access requests, technical questions and anything else about the platform: access@aethergridlabs.com