Getting started
Get a tenant and an API key
Soiltech provisions your tenant and hands over a bootstrap API key (glpk_…). The
secret is shown once, so store it in your secret manager. Issue further scoped keys with
POST /v1/keys.
Register your users
Create a user for each person who should be able to open Growth Lab. tenantKey is your
identifier for them; the Engine returns its own id.
curl -X POST "$ENGINE/v1/users" \
-H "Authorization: Bearer $GROWTH_ENGINE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tenantKey": "u-10482", "displayName": "Dana Grower",
"email": "[email protected]", "locale": "en-US", "timezone": "America/Boise", "units": "imperial"}'Trigger email/phone verification when you want the user to receive reports
(POST /v1/users/{id}/verifications).
Sign a user in (mint a session token)
When one of your users opens Growth Lab, your backend mints a short-lived token for them and hands it to your page:
curl -X POST "$ENGINE/v1/users/$USER_ID/session-tokens" \
-H "Authorization: Bearer $GROWTH_ENGINE_API_KEY"
# → { "token": "gst_…", "expiresAt": "2026-08-18T14:05:00Z" }Pass the token to the embedded GUI in the iframe init message (see
Embedding), or link to https://<gui>/session?token=… for standalone use.
Register sources, then build a flow
Send the Engine the Sources your org actually has: one generic record each, with a
hint saying what it is (area for a field/polygon, sensor for a device or station,
weather-station, or your own), plus an optional boundary/location. The GUI Sources step
lists that catalog grouped by hint (and maps boundaries or locations when present) so growers
can bind a flow to it, or add a source from that step. Build a flow in the GUI (Create tab: flow, sources, alerts, and
reports in one pass) or POST /v1/flows with a tile definition, target it at the selected
sources, and enable scheduling.
Connect your data (adapters)
The Engine stores no sensor, weather or event data. Register an adapter per facet
(series, weather, events), a small script the Engine runs, sandboxed, whenever a flow
needs that data; see Adapters. Until yours is connected, every data tile
can run on generated demo data (dataSource: generate).
Add contacts and verify them
Alert recipients are contacts (grouped in contact lists). Each email/phone must be verified before the Engine will send to it; see Verified addresses.
Subscribe to webhooks
Register an HTTPS endpoint for flow.triggered, run.completed, … and verify the
X-GrowthEngine-Signature header on each delivery.