Skip to main content
GET
/
devices
/
current
Python
import os, requests

r = requests.get(
    "https://api.1st.app/v1/devices/current",
    headers={"Authorization": f"Bearer {os.environ['ST_API_KEY']}"},
)
r.raise_for_status()
for d in r.json()["data"]:
    latest = d["latest"] or {}
    name = d["display_name"] or d["device_id"]
    print(f"{name}: CO2={latest.get('co2_ppm')} temp={latest.get('temp_c')}")
{
  "data": [
    {
      "device_id": "8a72a1c7-3c91-4f5b-b39e-1d2c4e3f5a7b",
      "hardware_id": "dev:868050050000123",
      "display_name": "Locker Room North",
      "metadata": {
        "room": "locker_north"
      },
      "latest": {
        "bucket_at": "2026-05-14T20:35:00Z",
        "co2_ppm": 920,
        "temp_c": 21.8,
        "humidity_pct": 51.2,
        "lux": 410,
        "spl_db": 52,
        "ingested_at": "2026-05-14T20:35:42Z"
      }
    },
    {
      "device_id": "b3f9d2e8-7a4c-4e6f-8d1b-0c5a9e7b3d2f",
      "hardware_id": "dev:868050050000456",
      "display_name": "Recovery Pool Deck",
      "metadata": {
        "room": "recovery_pool"
      },
      "latest": {
        "bucket_at": "2026-05-14T16:10:00Z",
        "co2_ppm": 685,
        "temp_c": 24.1,
        "humidity_pct": 58.4,
        "lux": 220,
        "spl_db": 38.5,
        "ingested_at": "2026-05-14T16:10:18Z"
      }
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://dev.1st.app/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Your API key. Create one at dashboard.1st.app/integrations/api-keys.

Response

One entry per device, with the latest reading attached.

data
object[]
required