Skip to main content

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.

You probably don’t need to read this page. Paste this URL into Claude, ChatGPT, or Cursor and ask it to write your integration directly:
https://docs.1st.app/llms-full.txt
The whole API spec fits in one AI context window. The assistant reads it, asks what you want to build, and writes working code. That’s the primary path. The rest of this page is here if you want to do it yourself, or you’re walking another human through it.
1

Mint an API key

Sign in to your team’s app, open Integrations → API access, and click Create API key.
  • Name — pick something you’ll recognize later: “Hudl integration”, “Coach Sarah’s Airtable script”.
  • Scope — pick Read only unless you need to update sensor names or tags. Most integrations only need read.
  • Expires — pick a preset (90 days, 1 year, never). Shorter is safer.
You’ll see the key exactly once on the next screen. Copy it into a password manager.
Treat the key like a password. If it ends up in the wrong commit, chat, or Slack channel, revoke it immediately from the same page and mint a fresh one. Revocation takes effect within seconds.
2

Confirm the key works

3

See what's happening right now

curl https://api.1st.app/v1/sensors/current \
  -H "Authorization: Bearer $ST_API_KEY"
Returns one row per sensor with the most recent reading. Use this for live dashboards, Slack bots, “what’s the CO2 in room 4 right now?”.
4

Pull a time-series for one room

curl "https://api.1st.app/v1/sensors/SENSOR_ID/readings?from=2026-05-13T00:00:00Z&to=2026-05-14T00:00:00Z" \
  -H "Authorization: Bearer $ST_API_KEY"
Returns 5-minute buckets, newest first, capped at 1000 rows per page. Pass the response’s next_cursor as ?cursor=... on the next request. Max range is 90 days.
5

Pipe everything into a spreadsheet

In Google Sheets, paste this into a cell:
=IMPORTDATA("https://api.1st.app/v1/readings.csv?from=2026-05-01T00:00:00Z&to=2026-05-08T00:00:00Z&shape=wide&key=1st_sk_...")
shape=wide returns one row per timestamp with one column per (sensor × metric) — the layout spreadsheets actually want. The key= parameter is the Sheets/Excel workaround for connectors that can’t set custom headers.
URLs containing ?key=... get captured in upstream platform logs. Mint a dedicated key per spreadsheet feed so rotation has small blast radius. Rotate the key if the URL ends up somewhere you don’t control.

What’s next

Build with AI

Five copy-paste prompts that build complete integrations.

AMS integration

Map sensors to your AMS players via metadata.

CSV export

Bulk historical pulls without burning rate limit.

Common gotchas

Timezones, missing sensors, rate-limit timing.