Start
Create a key on the API keys page (free account: 100 units a day). Send it as Authorization: Bearer <key>. Base URL: https://grid.n84.dev/v1.
curl -H "Authorization: Bearer n84_live_..." "https://grid.n84.dev/v1/changes?limit=100" # then pass next_cursor from the response: curl -H "Authorization: Bearer n84_live_..." "https://grid.n84.dev/v1/changes?cursor=c2VxOjQwMjEx"
Units
List or detail 1; timeline or connection-site queue 2; changes feed 1 per 100 events returned (at least 1). Each response carries X-Units-Cost, X-Units-Used, X-Units-Limit, X-Units-Remaining and X-Units-Reset. Over the allowance the answer is 429 with Retry-After.
| Plan | Units | Scopes |
|---|---|---|
| Free | 100 units a day | grid:read |
| Pro | 300 units a day | grid:read, grid:history |
| Team | 250,000 units a month | grid:read, grid:history, grid:bulk |
| Enterprise | By contract | grid:read, grid:history, grid:bulk |
Receipts and attribution
Every value from a register row carries receipts: the archived file, its date as published, when N84 retrieved it, the first 12 characters of its sha256, its provenance and the row. Values calculated by N84 (MW ahead in N84's order, date differences) are objects with basis: "calculated" and a link to the method. The queue field keeps the name mw_ahead and carries method: "n84_order_v2": printed queue position where the register gives one; otherwise entries printed as Gate 2 first, then every other entry by connection date. Not published by the operator. Show the lines in meta.attribution wherever you show the data.
History
Free keys see current values and changes in files dated within the last 30 days (meta.window_from). Pro and above (grid:history) see every edition N84 holds and as_of.
Endpoints
GEThttps://grid.n84.dev/v1/projects
List projects (1 unit)
- q (query): Text in the project, developer or site name
- register (query): neso-tec | neso-embedded | neso-interconnector | ssen-ecr | nged-ecr
- operator (query): neso | ssen | nged
- technology (query): Technology family, e.g. bess, solar, wind_on
- status (query): Canonical status or the status as printed
- site (query): Connection site id
- developer (query): Developer id
- min_mw (query): Minimum MW
- max_mw (query): Maximum MW
- date_from (query): Current date on or after (YYYY-MM-DD)
- date_to (query): Current date on or before
- limit (query): Up to 1000
- cursor (query): next_cursor from the previous page
GEThttps://grid.n84.dev/v1/projects/{id}
One project with its register records and receipts (1 unit)
- id (path): Project id (gp_...)
- as_of (query): State on a date, YYYY-MM-DD (grid:history)
GEThttps://grid.n84.dev/v1/projects/{id}/timeline
Observed changes, old and new values, both file dates (2 units)
- id (path): Project id
GEThttps://grid.n84.dev/v1/sites
Connection sites (1 unit)
- q (query): Text in the site name
- operator (query): neso | ssen | nged
- host_to (query): Host transmission owner
- limit (query): Up to 1000
- cursor (query): next_cursor
GEThttps://grid.n84.dev/v1/sites/{id}
A connection site and its queue with MW ahead in N84's order, calculated by N84 (2 units)
Order calculated by N84: printed queue position where the register gives one; otherwise entries printed as Gate 2 first, then every other entry by connection date. The register prints no gate for many contracted entries; N84 does not guess their position. Not published by the operator.
- id (path): Site id
GEThttps://grid.n84.dev/v1/developers/{id}
A developer grouped by published name (unverified), its projects and tiles (1 unit)
- id (path): Developer id
GEThttps://grid.n84.dev/v1/changes
Delta feed of changes ordered by event seq (1 unit per 100 events, minimum 1)
Start without a cursor; then pass next_cursor. Each event appears once per cursor walk. Free plans see changes from the last 30 days only (meta.window_from).
- cursor (query): next_cursor from the previous call
- limit (query): Up to 1000
- kinds (query): Comma-separated event kinds
- source (query): One register id
- site (query): Site id
- developer (query): Developer id
- project (query): Project id
- include_first_seen (query): 1 to include first-archived rows
Data as published by the named source on the stated date. N84 may contain matching or processing errors. Not investment, legal or technical advice. The official register prevails.