SkillJavaScriptv1.0.0
Perpetua
OAuth proxy for calling external APIs (Oura, Google Calendar, etc.) via Perpetua.sh hosted API using a single API key. Use when fetching Oura data, Google Calendar events, or managing OAuth connections.
0 downloads
danielkillenberger
Updated Feb 24, 2026Perpetua Skill (Hosted)
Overview
Use Perpetua.sh hosted API as the default path:
- Base URL:
https://www.perpetua.sh - API routes:
/api/* - Auth:
Authorization: Bearer $PERPETUA_API_KEY
Load secrets with:
op run --env-file="$HOME/.openclaw/secrets.env" -- <command>
Credentials
Set API key via env var from any secret source (1Password, CI, .env, secret manager):
export PERPETUA_API_KEY="<your-key>"
Core endpoints (hosted)
# Connection status summary
curl -s "https://www.perpetua.sh/api/status" \
-H "Authorization: Bearer $PERPETUA_API_KEY"
# Active connections
curl -s "https://www.perpetua.sh/api/connections" \
-H "Authorization: Bearer $PERPETUA_API_KEY"
# Providers
curl -s "https://www.perpetua.sh/api/providers" \
-H "Authorization: Bearer $PERPETUA_API_KEY"
Proxy call pattern
GET https://www.perpetua.sh/api/proxy/:provider/:path
Authorization: Bearer $PERPETUA_API_KEY
Optional: ?account=default for explicit account selection.
Oura examples
Avoid huge endpoints (
daily_activity, detailedsleep) unless explicitly needed.
# Daily sleep
curl -s "https://www.perpetua.sh/api/proxy/oura/v2/usercollection/daily_sleep?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&account=default" \
-H "Authorization: Bearer $PERPETUA_API_KEY" | jq .
# Daily readiness
curl -s "https://www.perpetua.sh/api/proxy/oura/v2/usercollection/daily_readiness?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&account=default" \
-H "Authorization: Bearer $PERPETUA_API_KEY" | jq .
# Workout
curl -s "https://www.perpetua.sh/api/proxy/oura/v2/usercollection/workout?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&account=default" \
-H "Authorization: Bearer $PERPETUA_API_KEY" | jq .
Google Calendar examples
# Upcoming primary calendar events
curl -s "https://www.perpetua.sh/api/proxy/gcal/calendars/primary/events?account=default&maxResults=10&orderBy=startTime&singleEvents=true&timeMin=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
-H "Authorization: Bearer $PERPETUA_API_KEY" | jq '[.items[] | {summary, start}]'
# Calendar list
curl -s "https://www.perpetua.sh/api/proxy/gcal/users/me/calendarList?account=default" \
-H "Authorization: Bearer $PERPETUA_API_KEY" | jq .
Connection management (hosted)
# Start OAuth flow for provider
curl -s -X POST "https://www.perpetua.sh/api/auth/connect/:provider/start" \
-H "Authorization: Bearer $PERPETUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"account":"default"}' | jq .authUrl
Troubleshooting
401→ wrong/expired API key403/404on provider routes → missing connection or wrong provider/account5xx→ hosted service issue; retry and/or notify Daniel
Local OSS note
Local http://localhost:3001 is for OSS development only. Default operational path in this workspace is hosted Perpetua.sh.