Developer API
Run GPU workflows programmatically. Build a graph of nodes, submit it, and poll for results — the same engine that powers the visual builder, available over a simple REST API.
Authentication
Generate an API key under Team › API keys in the app, then pass it on every request via the
X-API-Key header. Each key is scoped to your tenant; runs are billed to your tenant's balance.
# Base URL
https://compute.enterprisebox.ai
# Every request:
-H "X-API-Key: eb_your_key_here"
Endpoints
POST /api/run
Submit a workflow graph for execution. Returns a run_id immediately; execution is asynchronous.
curl -s https://compute.enterprisebox.ai/api/run \
-H "X-API-Key: eb_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "summarize",
"graph": {
"nodes": [
{"id":"n1","type":"dataset","params":{"content":"GPUaaS lets you rent GPUs on demand."}},
{"id":"n2","type":"model","params":{"max_tokens":120}},
{"id":"n3","type":"review","params":{"action":"draft-pr","destination":"github","repo":"your-org/your-repo","title":"summary"}}
],
"edges": [
{"source":"n1","target":"n2"},
{"source":"n2","target":"n3"}
]
}
}'
# -> {"run_id": 42}
GET /api/runs/{run_id}
Poll a run. status is one of queued, running, completed,
error, cancelled, partial (a step failed but the run continued), or rejected (a Human Approval step rejected it). When complete, outputs holds each node's result.
curl -s https://compute.enterprisebox.ai/api/runs/42 \
-H "X-API-Key: eb_your_key_here"
# -> {"status":"completed","cost":0.0021,
# "node_states":{"n1":"done","n2":"done","n3":"done"},
# "outputs":{"n2":"GPUaaS is on-demand GPU rental...", ...}}
GET /api/runs
List your recent runs. Each item includes id, status, trigger, workflow_id, workflow (name), summary, cost and duration (plus media/thumbnail when present).
POST /api/runs/{run_id}/cancel
Request cancellation. The run stops at the next node boundary.
POST /api/runs/{run_id}/approve
Decide a Human Approval step that is waiting in this run. Body: {"node":"n2","decision":"approve"} or "decision":"reject" (optional "note", and "edited" to approve with an edited value).
GET /api/artifacts · /api/artifacts/{id}
List committed artifacts (from Review nodes), or download one's content.
GET /api/nodes
The full node catalog with parameters and the resource/pricing table — handy for building graphs dynamically.
GET /api/cluster
Live GPU status (VRAM, utilization) and running container count.
Rented GPUs — OpenAI-compatible endpoint
Rent a dedicated GPU (a whole card, a MIG slice, or a multi-card node) from the GPUs tab in the app.
Once it's active it exposes an OpenAI-compatible API, so you can point any OpenAI SDK or
curl straight at it. Rentals are billed per hour — there's no per-token charge.
Authenticate with the rental's own API key (shown on the rental card, starting sk-eb-…) as a
Bearer token — this is different from your tenant X-API-Key. The base URL is
https://compute.enterprisebox.ai.
POST /api/gpu/rentals/{id}/v1/chat/completions
Standard OpenAI Chat Completions (streaming supported). Set model to rental-{id}.
curl -s https://compute.enterprisebox.ai/api/gpu/rentals/42/v1/chat/completions \
-H "Authorization: Bearer sk-eb-your-rental-key" \
-H "Content-Type: application/json" \
-d '{
"model": "rental-42",
"messages": [{"role":"user","content":"Hello!"}]
}'
GET /api/gpu/rentals/{id}/v1/models
List the model(s) currently served by this rental (OpenAI /v1/models shape).
Using an OpenAI SDK? Set base_url to the rental's /v1 URL above and
api_key to the rental key — everything else is standard.
Node types
Each node has a type, an id, and a params object. Connect them with
edges. Router nodes branch using a sourcePort of "match" or "else" on the edge.
| Type | Category | What it does |
|---|---|---|
| Loading the live node catalog… | ||
Tip: call GET /api/nodes to discover every node's exact parameter keys, defaults, and the
current pricing tiers, so your client always matches the live platform.
Webhooks & signing
Save a workflow, open Webhook trigger to get a URL, and POST to it to start a run — the body is
injected into the first dataset node. Turn on Require a signature to require an
X-EB-Signature: sha256=<HMAC-SHA256(secret, raw body)> header (GitHub's X-Hub-Signature-256
is also accepted); secured payloads are hidden in run history.
Secrets & variables
Store secrets and variables in Account settings and reference them in any node field as
{{secret.NAME}} or {{var.NAME}}. The upstream value is {{input}}.
Scheduling
Save a workflow in the builder, then schedule it from Runs › Scheduled to run automatically on an interval. Each scheduled fire is a normal run, billed the same way.