Develop
API keys
Create, scope, and rotate API keys for SDK, CLI, and webhook signing.
Test and live modes
Every API key is in either test or live mode. Test mode has its own marketplace, balance, and webhook secret; nothing crosses over.
| Prefix | Mode | Charges | Webhook secret |
|---|---|---|---|
nd_test_… | Test | None — Stripe test cards only | whsec_test_… |
nd_live_… | Live | Real charges and payouts | whsec_live_… |
Free and premium tiers
Every key is also either free or premium. Free keys call the marketplace and action endpoints (models, listings, payouts, webhooks). Premium keys additionally unlock Node Data's own paid inference API at /v1/chat/completions (node-reason-70b, node-fast-8b), metered per token.
| Tier | Inference API | Cost |
|---|---|---|
| Free | No | Free |
| Premium (test) | Sandbox only | Free — activates instantly |
| Premium (live) | Yes — production | $20 one-time, then metered usage |
A live premium key is created inactive. Enter your card in the inline checkout to complete the one-time $20 purchase, which activates it; until then the key returns 402 payment_required. If you dismiss the card form, reopen it any time with Complete payment next to the key on the dashboard. Premium keys always carry the inference:run scope.
Create a key
Generate keys at Dashboard → API keys. Each key has a name, mode, scope set, and optional expiry. The secret is shown once at creation — copy it immediately and store it in a secrets manager.
Try it right away by calling /v1/me:
curl https://api.nodedata.dev/v1/me \
-H "Authorization: Bearer nd_test_..."Restricted (scoped) keys
Default keys can perform any action your account can. Restricted keys narrow that surface. Use them for CI, edge devices, and any environment that does not need full account access.
node-data keys create \
--name "ci-deploys" \
--mode live \
--scope "models:read" \
--scope "models:upload" \
--expires 90dAvailable scopes
models:read— list and download licensed modelsmodels:upload— create and update models you owndatasets:read/datasets:uploadlistings:read/listings:writepayouts:read— read-only access to revenuedeploy:write— create and update deploymentswebhooks:write— configure webhook endpointsinference:run— call the paid inference API (premium keys only)
Rotation
Rotate keys at least every 90 days, immediately after a teammate offboards, or any time a key is suspected to be compromised. The safe pattern is to overlap: create the new key, deploy it, then revoke the old one.
# Issue a new key and overlap-rotate
new_key = node.keys.create(name="ci-deploys-2026q3", mode="live")
# Deploy new key to production secrets
# ...
node.keys.revoke("nd_live_oldkey1234")Never commit secrets
Storing keys
- Local dev:
.env.local, never.envtracked in git - CI: secrets manager (GitHub Actions secrets, Vercel env, AWS Secrets Manager)
- Edge devices: write-once secrets in a TPM, then reference by handle