← Back to Org Settings
ARC Labs API Guide
Read-only API access for external systems, dashboards, and integrations.
📝 How to get API access: API keys are issued by ARC Labs.
To request a key, email
info@arclabcanna.com
with your organization name and intended use case.
Authentication
Send your API key in the X-API-Key header:
GET /api/devices
Host: arclabcanna.com
X-API-Key: arc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
API keys are read-only, org-scoped, revocable, and rate-limited (60 requests/minute).
Base URL
https://arclabcanna.com
Endpoints
Devices
| Method | Endpoint | Description |
| GET | /api/devices | List all devices in your org |
| GET | /api/integrations/devices | Devices with integration status |
Telemetry
| Method | Endpoint | Description |
| GET | /api/telem/latest?device_id=N | Latest readings for a device |
| GET | /api/telem/query?device_id=N&since=...&until=...&limit=N | Historical telemetry |
Parameters: device_id (required), since/until (ISO 8601), order (asc/desc), limit (max 50000), keys (comma-separated metrics)
Rooms
| Method | Endpoint | Description |
| GET | /api/rooms | List all rooms |
Runs & Conditions
| Method | Endpoint | Description |
| GET | /api/lifecycle/runs | List all grow runs |
| GET | /api/conditions/{id}/decisions | Watering decision history |
| GET | /api/controller/condition-monitor/today-summary | Today's watering summary |
Common Metrics
| Key | Unit | Description |
| vwc_pct | % | Volumetric water content (moisture) |
| ec_mScm | mS/cm | Electrical conductivity (nutrients) |
| media_temp_c | °C | Media temperature |
| temp_c / temp_f | °C / °F | Air temperature |
| rh_pct | % | Relative humidity |
| co2_ppm | ppm | CO2 concentration |
| lux | lux | Light intensity |
| battery_pct | % | Device battery level |
Code Examples
Python
import requests
API_KEY = "arc_xxxxxxxx..."
BASE = "https://arclabcanna.com"
headers = {"X-API-Key": API_KEY}
# Get all devices
devices = requests.get(f"{BASE}/api/devices", headers=headers).json()
# Get latest telemetry
telemetry = requests.get(f"{BASE}/api/telem/latest?device_id=2250536", headers=headers).json()
cURL
curl -H "X-API-Key: arc_xxxxxxxx..." https://arclabcanna.com/api/devices
curl -H "X-API-Key: arc_xxxxxxxx..." https://arclabcanna.com/api/telem/latest?device_id=2250536
Errors
| Status | Meaning |
| 200 | Success |
| 401 | Invalid or missing API key |
| 403 | API key is read-only (tried write) |
| 429 | Rate limit exceeded |
Security
- Keys are hashed (SHA-256) — shown once on creation
- Keys are org-scoped — RLS enforced at database level
- Keys are read-only — GET requests only
- Keys can be revoked instantly
- All access over HTTPS
- Rate limited at 60 requests/minute