Connect a plant via edge gateway
The path to L2 and, eventually, L3. A gateway sits between your existing meters and the network, signs every reading with a key that never leaves its secure element, and pushes directly. This is what cash-flow assets require.
Prerequisites
· A T2 · Certified Partner account
· An Arkreen edge gateway, or third-party hardware with a supported secure element
· Modbus RTU/TCP, SunSpec, or a pulse output on the revenue meter
· Site connectivity — cellular is fine; the gateway buffers through outages
01Register the device before it ships
curl -X POST https://sandbox.api.arkreen.com/v1/devices \
-H "Authorization: Bearer $TOKEN" -H "Idempotency-Key: $(uuidgen)" \
-d '{
"project_id": "prj_8fK2mQ",
"type": "gateway",
"manufacturer": "arkreen",
"model": "AGW-2",
"serial_number": "AGW2-2026-00814",
"public_key": "ed25519:9f3a…c21e",
"ingest_mode": "edge_gateway"
}'Register first, install second. A gateway that appears on the network before it is registered is rejected, which is the correct behavior and a confusing first hour if you do it in the wrong order.
02Bind the gateway to the meter on site
The installer scans the gateway QR code in the console, selects the meter register map, and enters the meter's current cumulative reading. That last step matters: it is the offset that lets us reconcile the gateway's counter with the meter's own lifetime total, which is what an auditor will look at.
03Verify signatures are landing
curl "https://sandbox.api.arkreen.com/v1/devices/dev_7qL5" -H "Authorization: Bearer $TOKEN"
{ "status": "pending_baseline", "data_assurance": "L2",
"meter_epoch": 1,
"last_reading_at": "2026-08-22T09:05:00Z",
"signature_health_24h": { "valid": 288, "invalid": 0, "absent": 0 } }Any non-zero invalid means the registered public key does not match the key the device is signing with — almost always a provisioning mismatch, not a security incident. Re-provision before continuing; readings signed with an unregistered key are stored but never counted.
04Baseline, then request review
curl -X POST https://sandbox.api.arkreen.com/v1/projects/prj_8fK2mQ:submit \
-H "Authorization: Bearer $TOKEN" \
-d '{ "documents": ["doc_5nT2", "doc_8vJ4"] }'This is the first human step on the ingest path, and not the last one in the flow. Review covers asset ownership, the offtake contract, and operator identity. Median turnaround is three business days. Every other point where a person is involved is listed on Resources / Where humans are involved.
05Optional: connect a settlement source for L3
L3 requires a second, independent view of the money. Connect an offtaker invoice or receipt feed, bank settlement confirmations, or on-chain stablecoin receipts if the offtaker pays in stablecoin. Then request an audit sample.
POST /v1/projects/{id}/assurance:request-upgrade
data_assurance is L2 and project.status is operating.
That is the data half. You cannot open a PowerYield offering until asset_readiness also reaches investment_ready, which is a legal and settlement question and does not move because your signatures got better.
Common problems
The gateway lost its counter and resumed from the meter's value. Submit the correction through POST /v1/telemetry:correct with supersedes_reading_id, or — if the meter itself was changed — register it with POST /v1/devices/{id}:meter-swap first, which opens a new meter_epoch and stops the regression from being read as tampering.
Buffered readings flush on reconnect with their original device_ts. A gap under the project's tolerance resolves itself. Over tolerance the level drops to provisional_downgrade and restores once continuity is re-established.
Cumulative counters make total energy self-correcting after an outage. They do not recover the shape of the curve — which is what performance ratio, curtailment analysis, and month-boundary attribution all depend on. Backfill exists, and you should implement it.