API Key Format
Buena.ai supports two types of API keys for maximum flexibility and backward compatibility:User-Specific API Keys (Recommended)
Format:bna_[hexadecimal]
where the hexadecimal string is 64 characters long:
- Automatic User Detection: No need to specify user IDs in requests
- Enhanced Security: User-specific permissions and rate limiting
- Better Tracking: Automatic usage tracking and last-used timestamps
- Granular Permissions: Support for specific permission scopes
Global API Keys (Legacy)
Format: Traditional API key format for backward compatibility:- Full Access: All permissions (
*
) - Legacy Support: Works with all existing endpoints
- Requires User IDs: Must specify user IDs in request parameters
- Backward Compatible: Maintains compatibility with v1 API patterns
Authentication Header
Include your API key in thex-api-key
header for all requests:
Never expose your API key in client-side code, public repositories, or logs.
Always use environment variables or secure secret management.
Permission System
Each API key has specific permissions that control access to different endpoints. User-specific API keys support granular permissions, while global API keys have all permissions (*
).
User Permissions
users:read
- Read user data and settings -users:write
- Modify user data and settings
LinkedIn Permissions
linkedin:schedule
- Schedule LinkedIn actions -linkedin:upload
- Upload prospect lists -linkedin:read
- Read LinkedIn data -linkedin:voice
- Send LinkedIn voice messages
Lead Permissions
leads:read
- Read lead data -leads:write
- Create/update leads -leads:enrich
- Enrich lead data
Voice Permissions
voice:create
- Create voice clones -voice:read
- List voice clones -voice:update
- Update voice settings -voice:delete
- Delete voice clones -voice:preview
- Generate voice previews
Job Permissions
jobs:read
- Read job data and status -jobs:update
- Modify job messages
Common Permission Sets
Read-Only Access
Read-Only Access
Perfect for analytics and monitoring:
["users:read", "linkedin:read", "leads:read", "jobs:read"]
LinkedIn Automation
LinkedIn Automation
For LinkedIn automation workflows:
["users:read", "linkedin:schedule", "linkedin:read", "jobs:read"]
Lead Management
Lead Management
For CRM integration and lead processing:
["users:read", "leads:read", "leads:write", "leads:enrich"]
Full Integration
Full Integration
For comprehensive platform integration:
["users:read", "users:write", "linkedin:schedule", "linkedin:read", "leads:read", "leads:write", "leads:enrich", "jobs:read"]
Permission Requirements by Endpoint
Endpoint | Permission Required |
---|---|
POST /linkedin/scheduleLinkedInAction | linkedin:schedule |
POST /linkedin/uploadProspects | linkedin:upload |
GET /leads | leads:read |
POST /leads | leads:write |
POST /enrich | leads:enrich |
GET /users/jobs | users:read |
GET /health , GET /info | None |
Creating API Keys
Via Dashboard
- Log into your Buena.ai dashboard
- Navigate to Settings → API Keys
- Click “Create New Key”
- Set permissions and expiration
- Copy and store the key securely
Via API
Managing API Keys
List Keys
Update Key
Regenerate Key
Delete Key
Best Practices
Environment Variables
Environment Variables
Store API keys in environment variables, never in code:
Key Rotation
Key Rotation
- Rotate keys every 90 days - Use different keys for different environments - Monitor key usage regularly - Deactivate unused keys immediately
Principle of Least Privilege
Principle of Least Privilege
Only grant the minimum permissions needed: - Read-only operations: Use
leads:read
, linkedin:read
- Automation scripts: Add
linkedin:schedule
, linkedin:upload
- Full integration: Include
leads:write
, leads:enrich
Error Handling
Error Handling
Always check for authentication errors:
Authentication Errors
401 Unauthorized
- Missing
x-api-key
header - Invalid API key format
- Expired API key
- Deactivated API key
403 Forbidden
- API key lacks required permission
- Attempting to access restricted endpoint
- Rate limit exceeded