Perpetua
OAuth proxy for calling external APIs (Oura, Google Calendar, etc.) via Perpetua.sh hosted API using
- Rating
- 4.2 (283 reviews)
- Downloads
- 26,225 downloads
- Version
- 1.0.0
Overview
OAuth proxy for calling external APIs (Oura, Google Calendar, etc.) via Perpetua.sh hosted API using a single API.
Complete Documentation
View Source →
Perpetua 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
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.
Installation
openclaw install perpetua
💻Code Examples
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):Authorization: Bearer $PERPETUA_API_KEY
Optional: `?account=default` for explicit account selection.
### Oura examples
> Avoid huge endpoints (`daily_activity`, detailed `sleep`) unless explicitly needed.# 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"# 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 .# 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 .# 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 .authUrlTags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
N2 Stitch Mcp
Resilient MCP proxy for Google Stitch — 3-layer safety (auto-retry, token refresh, TCP drop recovery
1p Shortlink
Create short URLs and submit feature requests using 1p.io.
2captcha
Solve CAPTCHAs using 2Captcha service.
A Share Real Time Data
Fetch China A-share stock market data (bars, realtime quotes, tick-by-tick transactions) via mootdx/