Org compute (BYO)

Last updated:

On this page

GET /v1/org/compute returns your organization's whole compute stack in a single call: the GPUs you have connected yourself (BYO), the shared staik fleet you can reach, how your tokens split between the two, and what your own nodes cost. It is a read-only overview — it never changes routing or billing.

text
GET https://api.staik.se/v1/org/compute

Authentication & scope

Send an org-scoped API key as a Bearer token (see authentication). Everything is scoped to your own organization — you can never see another org's nodes. An owner sees the whole org's token split; a member sees only their own share. A key that belongs to no organization returns 404.

Request

python
import httpx

r = httpx.get(
    "https://api.staik.se/v1/org/compute",
    headers={"Authorization": "Bearer sk-st-your-key"},
)
print(r.json()["own_gpus"]["online_count"])

Optional query parameter since (ISO-8601) scopes the token split to a time window, e.g. ?since=2026-09-01T00:00:00Z.

Response

json
{
  "org": {
    "id": "…",
    "name": "Acme AB",
    "slug": "acme",
    "status": "active",
    "shared_pool_fallback": false
  },
  "own_gpus": {
    "nodes": [
      {
        "id": "…",
        "hostname": "cust-acme-0",
        "base_url": "http://cust-acme-0:8000",
        "engine": "vllm",
        "served_model": "qwen3.5:9b",
        "num_ctx": 65536,
        "status": "online",
        "last_seen_at": "2026-09-01T09:12:04Z",
        "last_heartbeat_model": "qwen3.5:9b",
        "online": true
      }
    ],
    "online_count": 1,
    "total_count": 1,
    "models": ["qwen3.5:9b"],
    "total_context": 65536,
    "billing": {
      "price_per_gpu_sek": 99,
      "billable_nodes": 1,
      "monthly_cost_sek": 99
    }
  },
  "shared_fleet": {
    "fallback_enabled": false,
    "models": [
      { "id": "qwen3.6:35b-a3b", "context_window": 262144, "capabilities": ["chat", "tools"], "owned_by": "staik" },
      { "id": "gemma4:31b", "context_window": 262144, "capabilities": ["chat", "vision", "tools"], "owned_by": "staik" }
    ]
  },
  "usage": {
    "own_gpu_tokens": 1000,
    "staik_tokens": 400,
    "requests": 5,
    "role": "owner"
  }
}

Fields

FieldDescription
orgYour organization: id, name, slug, status (active/suspended), and shared_pool_fallback.
own_gpus.nodes[]Your connected GPU nodes. online is derived (see below); served_model is what the node is configured to serve, last_heartbeat_model what it last reported.
own_gpus.online_count / total_countHow many of your nodes are online vs registered in total.
own_gpus.modelsDistinct models your online nodes currently serve.
own_gpus.total_contextLargest context window (tokens) across your online nodes.
own_gpus.billingPer-GPU billing: price per GPU, billable (non-disabled) node count, and the resulting monthly cost.
shared_fleet.fallback_enabledWhether your org opted in to fall through to the shared pool when no own node is healthy.
shared_fleet.models[]The models you can reach on staik's shared hardware. See the full table under Models.
usageToken split for the window: own_gpu_tokens (unmetered, your hardware) vs staik_tokens (metered), plus requests and your role.

When is a node online?

A node counts as online when its status is online and it has sent a heartbeat within the last 90 seconds. If the agent goes quiet the node is reported as offline even though its last stored status was online, so the overview always reflects live reachability.

Own GPU vs shared fleet

The usage split mirrors how routing is metered (see the BYO lane under Models):

  • Own GPU (unmetered) — a request that used the <org_slug>/<model> prefix ran on your own hardware and counts toward own_gpu_tokens.
  • staik shared fleet (metered) — a bare model name ran on staik's shared pool and counts toward staik_tokens, against your plan.

staik only stores usage counters for billing, never the content of your requests (see BYO security). To track raw consumption over time use GET /v1/usage.