Overview
All LowerPlane API endpoints under/api/v1/external/ are authenticated with organization API keys. Every request must include your key as a Bearer token in the Authorization header.
Creating an API Key
- Log in to the LowerPlane dashboard
- Go to Settings > API Keys
- Click Create API Key, give it a descriptive name (e.g., “CI/CD Pipeline”), and optionally set an expiration date
- Copy the key immediately — it is shown only once
lp_ prefix. Keys are stored hashed; LowerPlane cannot recover a lost key, so you’ll need to create a new one if it’s misplaced.
Using Your Key
Scope
API keys are scoped to your organization. All resources created, read, updated, or deleted through the API belong to the organization that owns the key. A key cannot access data from any other organization.Rate Limiting
API requests are rate limited per IP address using a sliding window. When the limit is exceeded, the API responds with429 Too Many Requests:
| Header | Description |
|---|---|
RateLimit-Limit | Maximum requests allowed in the current window |
RateLimit-Remaining | Requests remaining in the current window |
RateLimit-Reset | Seconds until the window resets |
Handling 429 responses
- Wait until the time indicated by
retryAfter(orRateLimit-Reset) before retrying - Use exponential backoff with jitter for automated clients
- Batch or paginate requests instead of polling item-by-item — for example, use
GET /external/assets?limit=100rather than fetching assets one at a time
Error Responses
| Status | Error | Description |
|---|---|---|
| 401 | Missing or invalid Authorization header | No Authorization: Bearer ... header was sent |
| 401 | Invalid API key format | The key doesn’t start with lp_ |
| 401 | Invalid or revoked API key | The key doesn’t exist or has been deactivated |
| 401 | API key has expired | The key’s expiration date has passed |
| 429 | Too many requests | Rate limit exceeded — see Rate Limiting |
Security Best Practices
- Never commit keys to source control. Use environment variables or a secrets manager (e.g., GitHub Actions secrets, AWS Secrets Manager).
- Set expiration dates on keys used for short-lived projects.
- Use one key per system so a compromised key can be revoked without breaking other integrations.
- Revoke unused keys from Settings > API Keys.