Key format
sandbox.getsly.ai; live keys only work against api.getsly.ai.
Create a key
From the dashboard: Settings → API Keys → Create key. From the API:Send a request
Scopes
Keys can be restricted to specific operations. Grant the narrowest scope that works.
Common production patterns:
- Payments service →
accounts:*,transfers:*,webhooks:read - Analytics service →
transfers:read,streams:read,reports:read - CI / deploy pipeline →
webhooks:*,api-keys:read
Rotate a key
Two strategies: Overlap rotation (recommended for zero downtime):- Create a new key
- Deploy your service with the new key
- Confirm traffic is flowing on the new key
- Revoke the old key
- Revoke the old key
- Create a new key
- Deploy — brief outage while keys swap
Security practices
- Store keys in a secrets manager. Never commit to source control. Never log them. Rotate on staff departures.
- One key per service. Don’t share keys between services — makes forensic tracing useless. Every request includes the
apiKeyIdin audit logs. - Use scopes. A key scoped to
transfers:readcan’t drain a wallet if it’s leaked. - Prefer short-lived credentials for agents. Server keys (
pk_*) are for servers. Agents should use Ed25519 sessions.
Rate limits
API keys share your tenant’s overall rate budget. See rate limits for specifics. In short: 100 req/min/IP on standard plans, 5 req/min on auth endpoints.Audit trail
Every API-key-authenticated request is logged with:apiKeyId- Source IP
- Method + path
- Response status
- Latency
GET /v1/events?actor_type=api_key&api_key_id=key_abc123.