Back to app

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/api/gpu/rentals/{id}/v1.

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.

TypeCategoryWhat 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.