Create an API key
Click Create API Key
Enter a descriptive name (e.g., “n8n automation” or “Cursor MCP”) and select the scopes you need.
Scopes
Each API key has one or more scopes that control what it can do:| Scope | Access level | Example operations |
|---|---|---|
read | Read-only | List proposals, get proposal details, AI rate recommendations |
write | Write access | Create proposals, share proposals, send messages |
read,write | Full access | All operations (default) |
Authenticate requests
Include your API key in theX-API-Key header on every request:
Rate limits
API calls are rate-limited per minute and capped monthly depending on your plan:| Plan | Monthly quota | Per-minute limit |
|---|---|---|
| Starter | 15 calls | 5/min |
| Professional | 2,000 calls | 30/min |
| Agency | 10,000 calls | 60/min |
| Lifetime | Unlimited | 60/min |
429 Too Many Requests. The response includes a Retry-After header indicating when you can retry.
Check your current usage with:
Manage existing keys
In Settings → API Keys, you can:- Rename a key to keep your list organized
- Deactivate a key temporarily without deleting it
- Revoke a key permanently — revoked keys cannot be reactivated
Security best practices
- Use environment variables to store keys in your deployment environment.
- Rotate keys periodically — create a new key, update your integrations, then revoke the old one.
- Use the narrowest scope that your integration requires.
- Set expiration when creating keys for temporary integrations. You can specify
expires_in_daysduring creation. - Monitor usage by checking the usage endpoint or the API Keys page in the dashboard. Each key shows its last-used timestamp.
- Revoke immediately if a key is compromised.
Key format
Quikly API keys follow the formatqk_ followed by a random string. When you view keys in the dashboard, only the prefix (e.g., qk_abc1...) is visible — the full key is only shown at creation time.