ASTRALINK

What the sandbox can judge, and what it cannot

This page answers one question only: can these APIs be integrated?

Reading time-point: 2026-11-02. APIs and thresholds change; the date on this page is the authority.

1. What the sandbox is, and is not

ColumnContent
IsA standalone demonstration environment, built to judge one thing: whether these APIs can be integrated.
IsA chain you can actually call: device registration, heartbeat, device record, model catalogue, billing events, usage roll-up and on-demand collection all work on the sandbox (listed one by one in Section 2).
Is notNot a production environment; the data is mock; it is not an SLA. The sandbox can be reset at any time, and old keys stop working immediately after a reset.
Is notNot real devices and not real certificates: collection aggregates demonstration data, and a "certificate reference" is only a reference string — no real certificate is issued.
Is notNot the full API surface: audit query, audit verification and device certificate are not exposed on the sandbox (see Section 2).

A comparison: the sandbox is not an open showroom. It is a lab where you register at the front desk and are handed a temporary door card — your name on it, an expiry time on it, only the doors you asked for, and the goods inside are samples.

2. Host and endpoint list

Host: sandbox.neutralorbit.com (HTTPS). The API host and the website host are two different sites — calling an API path on neutralorbit.org returns 404: a different site, not a broken API.

The "expected code" column is what you should see without a credential on your first call. It is not an error; it means the door is there and the key has not been handed to you yet.

MethodPathExpected codeWhat this one is for
GET/healthz200Public probe: answers "is the service alive". No credential, no business data.
GET/readyz200Public probe: readiness. Anything other than 200 means "do not come in right now", not a fault.
GET/meta200Public probe: service identity (service name, version, legal entity, boundary statement).
POST/v1/devices401Device registration and activation.
POST/v1/devices/{device_id}/heartbeat401Device heartbeat.
POST/v1/billing/events401Billing event reporting.
GET/v1/device-models401Model catalogue (read-only).
POST/v1/device-models401Add a model. Requires admin; the sandbox never issues admin, so even with a key this returns 403.
GET/v1/devices/{device_id}401Device record (read-only).
PATCH/v1/devices/{device_id}401Change a device record (swap model / suspend / enable).
GET/v1/usage401Usage roll-up (since / until / group_by=day|device|metric).
POST/v1/usage/collect401Trigger one collection (aggregates demonstration data; no real device is contacted).
GET/v1/usage/collect/{job_id}401Collection job status (read-only).
GET/v1/audit404Audit query. Not exposed on the sandbox; on the production API it is 401 without a credential.
GET/v1/audit/verify404Audit verification. Not exposed on the sandbox; on the production API it is 401 without a credential.
GET|POST/v1/devices/{device_id}/certificate404Device certificate reference. Not exposed on the sandbox; on the production API it is 401 without a credential.
GET/proof/verify404Offline proof-bundle verification. Exposed on neither the production API nor the sandbox.

The sandbox exposes fewer paths than the production API: audit query, audit verification and device certificate return 401 on the production API and 404 on the sandbox. This table is the reference: a 404 here means the path is not exposed, not that you called it wrong.

3. How to get a key

Keys are issued on written request: state your organisation name, a contact, the endpoints you need and the period you need, and send it to partners@neutralorbit.com. We review it manually and then issue the key; the period never exceeds 7 days.

There is no online application page and no instant activation.

The confirmation letter states the scope issued to you, the expiry time and the call ceiling. No confirmation letter means no approval — do not try someone else's key and do not keep re-sending.

4. The four limits on a key

#LimitWhat it means
1One-offOne key goes to one POC of one organisation; not renewed, not inherited, not transferred. For another round, apply again.
2Valid ≤7 daysDefault 7 days, shortest by the hour; it expires on time and is not auto-renewed.
3One scope, never adminOne key carries one scope only (one of devices:read / devices:write / usage:read / usage:collect / billing:write).
4Rate-limitedThe confirmation letter states the call ceiling for your key; if you hit it, wait — do not route around it with another key.

The add-model endpoint (POST /v1/device-models) requires admin, and the sandbox never issues admin — so that endpoint always returns 403 on the sandbox.

That is by design, not a fault, and not a mis-issued key.

5. How to read failure codes

CodeMeaningWhat to do
401No identity presentedSend the credential (Authorization: Bearer … or X-Api-Key: …).
403Identity fine, permission insufficientThis scope is not enough — use another endpoint or request another scope.
404This path is not exposedThe service is not broken; see the endpoint list above.
429Five consecutive failures with the same credential lock it for 15 minutesWait (Retry-After tells you how many seconds) — do not keep trying.

The lock is counted against that credential string, not your IP: another IP, another client or another header changes nothing; hammering with a different wrong key only locks that one too.

6. Three self-tests (no key needed)

  1. Call /healthz and look for 200 — the service is alive.
  2. Call any write endpoint without a credential and look for 401 — authentication really is blocking.
  3. Call a path that does not exist and look for 404 — the allow-list really is blocking.

curl -sS -i https://sandbox.neutralorbit.com/healthz

curl -sS -i -X POST https://sandbox.neutralorbit.com/v1/devices -H "Content-Type: application/json" -d '{}'

curl -sS -i https://sandbox.neutralorbit.com/nope

These three answer "is the service alive, is authentication really blocking, what does 404 mean". They do not answer "can the audit chain, certificates or proof bundles be integrated" (not exposed on the sandbox), nor "are real devices and real billing correct" (the sandbox carries demonstration data).

7. Disclaimer

The sandbox is a demonstration environment; the data is mock; it is not an SLA; we make no commitment about sandbox availability.