List connection variables
/connection/{id}/variables
The connection's context variables — the setup values the customer supplied when they connected the account (subdomain, region, instance URL), one row per top-level key, plus one valueless row for every value Saffron encrypted away. Gated on `can_manage`, not the read bar: a `view`/`use` grantee runs tools through the connection, but the answers its owner typed into the connect form are not part of that — a caller without it gets `403`, deliberately not an empty `200`. An unbound connection answers an empty list. `can_manage` here is owner-or-real-edit-grant only, same as everywhere else — no `connection:manage` fallback any more (removed 2026-09-04).
Path Parameters
Connection id (conn_…).
Response Body
A leaf at or under this key was withheld — true for a secret key itself, and for a public object one of whose leaves was stripped.
Saffron's verdict, not a key-name guess; the value ships as null.
Top-level context key; rows sort and page over it.
The customer-set value in its real shape — object, array or scalar. null when is_secret is true; inside objects, withheld leaves are absent rather than nulled or masked, so absence is the only shape that cannot lie.
curl -X GET 'https://api.elaichi.ai/connection/<id>/variables' \
-H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
-H 'Content-Type: application/json'const response = await fetch('https://api.elaichi.ai/connection/<id>/variables', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
'Content-Type': 'application/json',
},
});
const data = await response.json();
console.log(data);import os
import requests
url = "https://api.elaichi.ai/connection/<id>/variables"
headers = {
"Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
"Content-Type": "application/json",
}
response = requests.get(url, headers=headers)
print(response.json())