Snowflake integration
In short
Run SQL on your Snowflake account. Connect it on the Integrations page; your app then calls Snowflake through Sapilon without ever holding a Snowflake credential.
Lets your app run SQL statements on your Snowflake account with the role and warehouse you name, and follow long-running ones.
Connecting
On the Integrations page choose Connect on Snowflake and fill in:
- Account identifier — Your organisation and account name joined by a hyphen, as in orgname-accountname.snowflakecomputing.com.
- Programmatic access token — Snowsight → your user → Settings → Authentication → Programmatic access tokens → Generate new token.
Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.
- Snowflake only accepts a programmatic access token from a user covered by a network policy, unless an admin waives that for the user.
- Give the token a role that can only read what the app needs.
What your app can do
Only these requests are available; anything else is refused.
POST /statementsGET /statements/*POST /statements/*/cancel
How the agent uses it
Use integrations.request('snowflake', …); paths are relative to https://<account>.snowflakecomputing.com/api/v2.
POST /statements— Example:{ method: 'POST', path: '/statements', body: { statement: 'select region, sum(amount) from sales.orders where day = ? group by 1', bindings: { '1': { type: 'TEXT', value: '2026-10-15' } }, warehouse: 'APP_WH', role: 'APP_READER', timeout: 60 } }. Rows aredata(arrays of strings), columnsresultSetMetaData.rowType.- Answers 202 while it runs: poll
GET /statements/{statementHandle};query: { partition: '1' }for the next part of a big result. POST /statements/{statementHandle}/cancel.
One statement per call. Use bindings, never string concatenation.
More from Snowflake: https://docs.snowflake.com/en/developer-guide/sql-api/index