Develop
SDKs
First-party clients for Python and TypeScript/JavaScript. Everything else is plain HTTP.
Two clients exist
Python
Published to PyPI as nodedata. Python 3.9+, and light enough to install onto a Jetson beside a pinned torch/numpy stack.
pip install nodedatafrom nodedata import NodeData
nd = NodeData() # reads NODE_DATA_API_KEY from the environment
page = nd.models.list(q="manipulation", limit=20)
for asset in page["items"]:
print(asset["slug"], asset["price"]["amount"] / 100)
asset = nd.models.retrieve("bin-picking-policy-v2")Source lives in packages/sdk-python in the Node Data repo. It is at an earlier stage than the TypeScript client — check its README for which endpoints are covered before depending on it.
TypeScript / JavaScript
The more complete of the two: every endpoint, cursor pagination as an async iterable, typed errors carrying the API’s stable codes, retries with jittered backoff, streaming inference, and webhook signature verification. Zero dependencies, and it runs on Node 18+, Bun, Deno, Cloudflare Workers, and Vercel Functions.
Not on npm yet
npm install @node-data/sdk will not resolve — the package isn’t on the public registry. It is still a real npm package, so install it from the URL the registry would have served. It lands under the real package name, so imports read @node-data/sdk and moving to the registry later is a one-line change.npm install https://www.nodedata.dev/node-data-sdk-latest.tgzimport { NodeData } from "@node-data/sdk";
const nd = new NodeData({ apiKey: process.env.NODE_DATA_API_KEY });
// Cursor pagination, handled for you
const page = await nd.models.list({ q: "manipulation", limit: 20 });
for await (const asset of page) {
console.log(asset.slug, asset.price.amount / 100);
}
// Signed, short-lived download URL — hand it to any downloader
const { url } = await nd.models.download("bin-picking-policy-v2");Ships ESM and CommonJS entry points with bundled type declarations, so require() works too:
const { NodeData } = require("@node-data/sdk");
const nd = new NodeData({ apiKey: process.env.NODE_DATA_API_KEY });Full method list on the SDK reference.
Other languages
There is no Go SDK, no Rust crate, no CLI, and no community client. The API is ordinary HTTP and JSON with bearer auth, so any language works without one:
curl "https://www.nodedata.ai/api/v1/models?limit=5" \
-H "Authorization: Bearer $NODE_DATA_API_KEY"See the API reference for every endpoint, and errors for the retry rules a hand-rolled client should follow.
Pin your version
-latest.