API v1 is in maintenance mode. Use v2 for new integrations; see API v1 vs v2.
aha-sk- prefix followed by 64 characters, and authenticate with a Bearer header.
Choose a verified sending domain for the messages:send:{your-domain} scope. For sending from many domains, a global send-only key uses messages:send:all. These keys do not grant management access. For domains, webhooks, routes, suppressions, reports or the CLI, create a full key under Account Settings → API Keys with the needed scopes; see authentication.
Creating API Keys
Access Credentials Dashboard
- Log in to your AhaSend Dashboard
- Navigate to the Credentials section from the main menu
- Click the “Add” button
Configure Credential Settings
Select Credential Type:
- Choose “API Key v2” as the credential type for advanced features
- Use a name that helps you identify this API key later
- Examples: “Production API v2”, “example.com API v2”, “Marketing Platform v2”
Set Credential Mode
Choose the appropriate mode for your use case:Production Mode:
- Sends emails to real recipients
- Use for live applications and real email delivery
- Emails are delivered normally
- Simulates email sending without actual delivery to recipients
- Perfect for testing and development environments
- Completely free - doesn’t count toward your email credits
- Still triggers webhooks for testing your integrations
Sandbox Benefits: Sandbox mode processes emails just like production (including webhook events) but stops short of actual delivery. This makes it perfect for testing your integration safely. Learn more about sandbox mode →
Configure Credential Scope
Global Scope:
- Works with all domains in your account
- Use when sending from many domains
- Can be changed later if needed
- Restricts API key to specific domains
- Better security for multi-domain setups
- Requires separate API keys per domain
Generate and Save API Key
- Click “Create Credential” to generate your API key
- Copy and securely store the API key
- Save it in your password manager or secure storage
API Key Scoping
Global Scope
Global Scope
- Works with all domains in your account
- Uses
messages:send:allfor sending from many domains - Prefer a domain-specific key when your app sends from one domain
- Sending only; no management access
Domain-Specific Scope
Domain-Specific Scope
- Restricts sending to
messages:send:{your-domain} - Better security for multi-domain setups
- Prevents accidental cross-domain sending
- Ideal for client-specific applications
Account ID and First Request
Find your account ID in the dashboard’s account settings. ReplaceYOUR_ACCOUNT_ID, YOUR_API_KEY, and hello@yourdomain.com with your account, key, and verified sender.

