Secrets Management
Hooklistener provides encrypted key-value storage for sensitive data like API keys, tokens, and credentials. Secrets are encrypted at rest and can be retrieved via the API.
How it works
Secrets are stored as name-value pairs within your organization. Values are encrypted at rest and only decrypted when explicitly requested.
Naming rules
Secret names must follow the pattern ^[A-Z][A-Z0-9_]*$:
- Start with an uppercase letter
- Only uppercase letters, digits, and underscores
- Examples:
STRIPE_WEBHOOK_SECRET,API_KEY,DATABASE_URL
Creating secrets
Dashboard
- Go to Organization Settings
- Navigate to the secrets section
- Click Add Secret
- Enter the name and value
- Click Save
API
curl -X POST https://app.hooklistener.com/api/v1/secrets \
-H "Authorization: Bearer hklst_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"secret": {
"name": "STRIPE_WEBHOOK_SECRET",
"value": "whsec_abc123..."
}
}'
Retrieving secrets
List secrets (metadata only)
curl https://app.hooklistener.com/api/v1/secrets \
-H "Authorization: Bearer hklst_your_api_key"
Values are not included in list responses.
Decrypt a secret value
curl https://app.hooklistener.com/api/v1/secrets/<secret-id>/value \
-H "Authorization: Bearer hklst_your_api_key"
Returns the decrypted value along with the decryption timestamp.
Updating secrets
curl -X PUT https://app.hooklistener.com/api/v1/secrets/<secret-id> \
-H "Authorization: Bearer hklst_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"secret": {
"value": "whsec_new_value..."
}
}'
Deleting secrets
curl -X DELETE https://app.hooklistener.com/api/v1/secrets/<secret-id> \
-H "Authorization: Bearer hklst_your_api_key"
Use cases
- Store webhook signing secrets — keep Stripe, GitHub, or other signing secrets accessible to your team
- API credentials — store third-party API keys securely
- Configuration values — sensitive configuration that shouldn't be in source control
- Team sharing — share credentials across team members without insecure channels
Security
- All secret values are encrypted at rest
- Values are only transmitted over HTTPS
- Access is controlled by organization membership and API key authentication
- Secret names must be unique within an organization