NEBLI
Nebli Environment

Exports and the read-only API

Take every reading of a site as files, or read your nodes and readings from your own systems with an API key.

Who this is for: the analyst who works with the data outside Nebli Environment, and the developer who connects a dashboard or a data platform to it.

Before you start:

  • Raw exports need the Analyst role or above (People and access).
  • API keys are created and revoked by an Administrator.

Raw export of a site

Export raw readings, on the table, prepares every reading of one site over a period: the last 24 hours, 7, 30 or 90 days. Choose the Site and the Period, then Prepare. The table's own Export table, which downloads exactly what you see, is described in Map, node page and table.

The export is prepared in the background. You find it in your menu under Exports, with its status:

Status Meaning
Queued; prepared in the background. Waiting to start.
Being prepared… Running.
Ready: {n} readings. Available until {date}. Ready to download.
It could not be prepared. Ask for it again. It failed after several tries.

A ready export can be downloaded for 7 days.

It comes as two CSV files:

  • Readings (CSV). Every reading of every node of the site in the period, suspect readings included, one row each: node_id, node, channel, value, unit, device_time_utc, arrived_at_utc, quality. Times are UTC with the offset. quality is raw, corrected or suspect. A gap is a gap: nothing is filled in.
  • % valid data (CSV). For each node, channel and day (in the site's time zone): how many readings were expected at the node's reporting interval, how many arrived and were not suspect, and the share: node_id, node, channel, day_site_local, expected, valid, valid_percent.

The export holds what had arrived when you asked for it. A cell that starts like a spreadsheet formula is prefixed with a single quote, so a typed name can never run in your spreadsheet.

Limits:

  • You can have one export being prepared at a time: "An export of yours is already being prepared; wait for it to finish."
  • An organisation can request 5 raw exports in any 24 hours: "Your organisation has used today's exports."

The read-only API

The API reads your organisation's nodes and readings as JSON. It cannot change anything.

Create a key

  1. Go to Settings › API keys and choose New key.
  2. Give it a name, for example "Environment department dashboard".
  3. Copy the key from the card. It is shown this once and never again.

A key reads your whole organisation. Its card shows Scope: read only, when it was created and when it was last used. Revoke asks first ("Revoke the key {name}? Its next request will be refused.") and takes effect on the key's next request. Revoked keys stay listed for 30 days.

Make a request

Send the key in the Authorization header, never in the address:

curl -H "Authorization: Bearer $NEBLI_ENV_KEY" \
  "https://env.nebli.ai/api/v1/nodes?lang=en"

Only GET exists. There are three routes:

Route Returns
GET /api/v1/nodes Every node of your organisation with its current values.
GET /api/v1/nodes/{nodeId} One node.
GET /api/v1/nodes/{nodeId}/readings One channel of one node over a time range.

lang=en or lang=es sets the language of names and messages.

Readings

GET /api/v1/nodes/{nodeId}/readings?channel=pm25&from=2026-10-01T00:00:00-05:00&to=2026-10-02T00:00:00-05:00

  • channel, from and to are required. from and to are dates and times with their offset. A range longer than 31 days is refused.
  • Without period, you get raw points, up to 1,440 a page. When there are more, the answer has next; send it back as cursor for the next page.
  • With period=1h, 8h or 24h, you get averaged points in one page, each with count, the number of readings it was made from.
  • quality=corrected returns the corrected series where there is one; the default is raw. A series is never a mix of the two.
  • Suspect readings are left out. A period with no readings returns no points, never zeros.

Each point has time (the device time, or the start of an averaged period), value (or textValue for a channel that takes words), unit and quality.

Limits and answers

  • Each key can make 60 requests a minute. Every answer carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Past the limit, the answer is 429 with Retry-After.
  • A missing, malformed, unknown or revoked key gets 401: "API key not valid or revoked."
  • A node that does not exist and a node of another organisation get the same 404.
  • A request out of bounds (a range, a period or a cursor) gets 400.
  • 503 means try again.

What the API does not include

  • Alerts. The API reads nodes and readings only.
  • The air-quality indices (ICA, IBOCA). They are in the console and in Export table, not in the API.

Next