Get started

Getting started

Install an SDK, create a key, and make your first API call in under five minutes.

Coming soon

The SDKs and public API in this quickstart aren’t published yet — the steps below preview the planned developer flow. What’s live today: capturing data in the Node GO app and posting/fulfilling bounties.

1. Install an SDK

Node Data ships first-party SDKs for the four languages most common in robotics and applied ML. The Python SDK is the reference implementation; every endpoint surfaces there first.

bash
# Python — on PyPI
pip install nodedata

# TypeScript / JavaScript — not on npm yet, install from the tarball
npm install https://www.nodedata.dev/node-data-sdk-latest.tgz

2. Create an API key

Sign in to Dashboard → API keys and generate a key. Keys are scoped to either test (sandbox marketplace, no real funds) or live (production). Export the key as an environment variable:

bash
export NODE_DATA_API_KEY="nd_live_•••••••••••••••••••••"

Treat keys like passwords

Anyone with your live key can publish, purchase, and trigger payouts on your behalf. Use restricted keys for CI and rotate them on a schedule. See API keys.

3. Make your first call

Search the marketplace and print the first five hits. No payment is required to call the search API.

hello.pypython
from nodedata import NodeData

nd = NodeData()  # reads NODE_DATA_API_KEY from env

# Browse the marketplace
page = nd.models.list(q="manipulation policy", limit=5)
for asset in page["items"]:
    print(asset["slug"], asset["price"]["amount"] / 100, asset["license"])

4. Download a model

Downloads stream from a region-aware CDN with resumable byte ranges. Models you have not licensed can still be inspected via their model card, but the weight files require a successful checkout.

python
asset = nd.models.retrieve("bin-picking-policy-v2")

signed = nd.models.download(asset["id"])
print(signed["url"], "expires in", signed["expires_in"], "seconds")

5. Publish a model

Uploading is symmetric: hand the SDK a list of file paths, a license, and pricing. The SDK chunks large files via the resumable upload protocol and writes a content-addressed manifest.

python
nd.models.create(
    title="Lift and Place",
    description="Pick-and-place policy trained on 12k episodes.",
    type="rl-policy",
    category="manipulation",
    license="MIT",
    price_cents=4900,          # integer cents, not dollars
    frameworks=["pytorch"],
    storage_path=uploaded["storage_path"],
)

Next steps