· API
← 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://ENTBOX_HOST:8000

# 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 -sk https://ENTBOX_HOST:8000/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":{"resource":"gpu.amd","max_tokens":120}},
        {"id":"n3","type":"review","params":{"action":"draft-pr","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, or cancelled. When complete, outputs holds each node's result.

curl -sk https://ENTBOX_HOST:8000/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 (id, status, duration, cost).

DEL/api/runs/{run_id}/cancel

Request cancellation. The run stops at the next node boundary.

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.

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
datasetDataInline data as a flow source
httpfetchDataFetch from an external HTTP API
intentIntentShape/template input before the next node
modelModelRun an open-source model on a GPU
orchestratorOrchestratorPlug in Claude / your own API
computeComputeRun a Docker container job
conditionalLogicGate the flow on a condition
routerLogicBranch to match / else
reviewReviewCommit a downloadable artifact
💡 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.

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.