Developer API
The Developer API runs versioned Hub labs as durable managed jobs. You use it through the same MIT-licensed biosimulant Python package you use for local simulation. If you’re new, start with the quickstart.
The Developer API and the Biosimulant MCP server are one service. Every MCP tool except the agent grant tools has a /v1 route that runs the same operation, with the same scopes. Both return only the signed-in account’s own work, so a run started in either place appears in both. Use the API from code and scripts, and MCP from an AI assistant.
Not sure this is the surface you want? Which surface do I want? compares all five and says which credential each needs.
Local versus managed execution
BioWorld.run() stays local, open source and free. Client and AsyncClient send work to https://api.biosimulant.com/v1. Nothing you run locally moves to hosted infrastructure unless you use them. To pull a pinned Hub lab into a local world instead, use HubComposition.
Both use the same runtime, package refs and results format. The difference is where the work runs and what the platform handles for you:
Local: BioWorld.run() | Managed: Client / AsyncClient | |
|---|---|---|
| Where it runs | Your machine or CI | api.biosimulant.com/v1 |
| Entry point | world.run(duration=…), run_package(…), CLI | client.run(ref, inputs=…) |
| Install | pip install biosimulant | Same package, plus an API key |
| Cost | MIT, free | Prepaid compute |
| Compute | Your own CPU or GPU | Managed CPU and GPU profiles |
| Durability | Ends with your process | Server job that outlives client timeouts |
| Provenance and artifacts | You store them | Attached to every run |
| Delivery | Returns when done | Poll the run or receive webhooks |
| Best for | Development, tests, offline work, CI | Long or GPU-heavy runs, shared results, automation |
The same lab, run each way:
# Runs on your machine. Pulls the ref if needed.
biosimulant labs run demi/microbiology-hello-world-growth@1.0.0 \
--run-input-file inputs.json \
--results-file results.jsonManaged runs are always asynchronous on the server; client.run() just waits for you. Runs and results covers timeouts, cancelling and parallel runs.
This release runs accessible, versioned Hub labs. Uploading an arbitrary BioWorld or a private local lab through the SDK isn’t supported yet.
For direct HTTP calls, use the REST reference. The Python API page lists every public import.