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.
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
AI (recommended)
curl (the manual path)
Paste the following into Claude or ChatGPT:
I have an API key for the 1st sensor platform. Using the spec athttps://docs.1st.app/llms-full.txt, write a [Python | Apps Script |TypeScript | Bubble plugin | n8n workflow] that [pulls last 24h ofCO2 into a Google Sheet | flags rooms above 1000 ppm | emails thecoach when a sensor goes offline].My key is in env var `ST_API_KEY` at runtime — don't include it incode.
The assistant will write working code. If it doesn’t, ask it to
re-read https://docs.1st.app/llms-full.txt.
export ST_API_KEY="1st_sk_xxxxxxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"# Confirm the key is bound to your teamcurl https://api.1st.app/v1/team \ -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.
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.