Apps
View and manage your Atris apps — status, runs, data, secrets, members.
Bootstrap
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)" 2>/dev/null \
|| python3 -c "import json,os; print(json.load(open(os.path.expanduser('~/.atris/credentials.json')))['token'])" 2>/dev/null)
if [ -z "$TOKEN" ]; then echo "Not logged in. Run: atris login"; exit 1; fi
echo "Ready."
Base URL: https://api.atris.ai/api/apps
Auth: -H "Authorization: Bearer $TOKEN"
List My Apps
curl -s "https://api.atris.ai/api/apps" \
-H "Authorization: Bearer $TOKEN"
Returns all apps you own with id, name, slug, description, template, status.
Filter Apps
# Template apps only
curl -s "https://api.atris.ai/api/apps?filter=template" \
-H "Authorization: Bearer $TOKEN"
# Paid apps
curl -s "https://api.atris.ai/api/apps?filter=paid" \
-H "Authorization: Bearer $TOKEN"
# Free apps
curl -s "https://api.atris.ai/api/apps?filter=free" \
-H "Authorization: Bearer $TOKEN"
App Details
Get App Status
curl -s "https://api.atris.ai/api/apps/{slug}/status" \
-H "Authorization: Bearer $TOKEN"
Returns: last run, next run, health, active members.
Get App Runs
curl -s "https://api.atris.ai/api/apps/{slug}/runs?limit=10" \
-H "Authorization: Bearer $TOKEN"
Get Single Run
curl -s "https://api.atris.ai/api/apps/{slug}/runs/{run_id}" \
-H "Authorization: Bearer $TOKEN"
App Data
Read All Data
curl -s "https://api.atris.ai/api/apps/{slug}/data" \
-H "Authorization: Bearer $TOKEN"
Read Specific Collection
curl -s "https://api.atris.ai/api/apps/{slug}/data/{collection}" \
-H "Authorization: Bearer $TOKEN"
Push Data In
curl -s -X POST "https://api.atris.ai/api/apps/{slug}/ingest" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"collection": "leads", "data": {"name": "Acme", "score": 85}}'
Secrets
List Secret Keys (names + storage tier)
curl -s "https://api.atris.ai/api/apps/{slug}/secrets" \
-H "Authorization: Bearer $TOKEN"
Returns key names and where they're stored:
"storage_tier": "cloud"— encrypted in Atris vault"storage_tier": "local"— on your machine at~/.atris/secrets/{slug}/
Store Secret (cloud)
curl -s -X PUT "https://api.atris.ai/api/apps/{slug}/secrets/{key}" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"value": "sk-secret-value"}'
Register Local Secret (manifest only)
curl -s -X POST "https://api.atris.ai/api/apps/{slug}/secrets/{key}/register-local" \
-H "Authorization: Bearer $TOKEN"
No value sent. Just tells the web UI "this key exists on my machine."
Delete Secret
curl -s -X DELETE "https://api.atris.ai/api/apps/{slug}/secrets/{key}" \
-H "Authorization: Bearer $TOKEN"
Members
List App Members
curl -s "https://api.atris.ai/api/apps/{slug}/members" \
-H "Authorization: Bearer $TOKEN"
Add Member (agent operator)
curl -s -X POST "https://api.atris.ai/api/apps/{slug}/members" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"agent_id": "AGENT_ID", "role": "operator"}'
Remove Member
curl -s -X DELETE "https://api.atris.ai/api/apps/{slug}/members/{agent_id}" \
-H "Authorization: Bearer $TOKEN"
Trigger
Run App Now
curl -s -X POST "https://api.atris.ai/api/apps/{slug}/trigger" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"trigger_type": "manual"}'
App Manifest (for published apps)
curl -s "https://api.atris.ai/api/apps/{slug}/manifest"
No auth needed. Returns name, description, required secrets, schedule.
Install a Published App
curl -s -X POST "https://api.atris.ai/api/apps/{slug}/install" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
Workflows
"What apps do I have?"
- List apps:
GET /api/apps - Display: name, slug, template, last run status
"How is my app doing?"
- Get status:
GET /api/apps/{slug}/status - Get recent runs:
GET /api/apps/{slug}/runs?limit=5 - Show: health, last run time, success/failure, output
"Check my app's secrets"
- List secrets:
GET /api/apps/{slug}/secrets - Show each key with storage tier (cloud/local)
- If required secrets are missing, tell the user how to add them
"Run my app"
- Trigger:
POST /api/apps/{slug}/trigger - Poll status:
GET /api/apps/{slug}/status(wait for completion) - Show run result:
GET /api/apps/{slug}/runs?limit=1
Quick Reference
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
# List all my apps
curl -s "https://api.atris.ai/api/apps" -H "Authorization: Bearer $TOKEN"
# App status
curl -s "https://api.atris.ai/api/apps/SLUG/status" -H "Authorization: Bearer $TOKEN"
# Recent runs
curl -s "https://api.atris.ai/api/apps/SLUG/runs?limit=5" -H "Authorization: Bearer $TOKEN"
# Trigger a run
curl -s -X POST "https://api.atris.ai/api/apps/SLUG/trigger" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"trigger_type":"manual"}'
# Read app data
curl -s "https://api.atris.ai/api/apps/SLUG/data" -H "Authorization: Bearer $TOKEN"
# List secrets (with storage tier)
curl -s "https://api.atris.ai/api/apps/SLUG/secrets" -H "Authorization: Bearer $TOKEN"
Scan to join WeChat group