Skip to main content

API Keys

API Keys let you access EzPulze from your own applications. With an API key, your website, CRM, or automation tool can send WhatsApp messages, manage contacts, update leads, and more — all programmatically.

📸
Screenshot: API Keys list page showing table with key name, key preview, scopes, last used date, status toggle, and action buttons
api-keys-list.png
1. Go to Developer Tools → API Keys from the sidebar
2. Capture the full page showing the API keys table with several keys in different states
Save to: static/img/screenshots/developer-tools/api-keys/api-keys-list.png

API keys list

The list page shows all your API keys in a table:

ColumnDescription
#Row number
NameKey name with optional scope group label (e.g., "Broadcast Manager")
KeyMasked key showing only the prefix and last 4 characters (e.g., sk_live_7f9a2b...a3f1)
ScopesPermission badges — shows the first 2, then "+X more" if there are additional scopes
Last UsedWhen the key was last used, or "Never" if unused
StatusActive (green) or Inactive (gray)
ActionsAction buttons

Actions

ActionDescription
Toggle Active/InactiveEnable or disable the key without deleting it
RegenerateGenerate a new key value (the old key stops working immediately)
View Usage StatsSee message delivery statistics for this key
EditChange the key name, scopes, or advanced settings
DeletePermanently remove the key

Pagination

You can display 10, 25, or 50 keys per page. Columns are sortable by name and status.


Creating an API key

Click the Create API Key button to open the creation dialog.

📸
Screenshot: Create API Key dialog showing name field, permission configuration options, scope group dropdown, and advanced settings
create-api-key-dialog.png
1. Click "Create API Key"
2. Fill in the key name
3. Select a scope group from the dropdown
4. Expand Advanced Settings to show IP whitelist, rate limit, and expiration fields
5. Capture the full dialog
Save to: static/img/screenshots/developer-tools/api-keys/create-api-key-dialog.png

Key name

Give your key a descriptive name so you can identify it later — for example, "Website Contact Form", "CRM Integration", or "n8n Automation".

Permission configuration

You have two ways to set permissions:

Select a predefined scope group that bundles the right permissions for common use cases:

Scope GroupIncluded PermissionsBest for
Broadcast ManagerSend broadcasts, read templates, read contactsSending bulk messages from external tools
Contact ManagerFull contact access, read leadsCRM integrations that sync contacts
Lead ManagerFull lead access, read contactsLead management integrations
Message SenderSend broadcasts, read templatesSimple message-sending integrations
Read OnlyRead broadcasts, contacts, leads, templatesReporting and analytics tools
Full AccessAll permissions for all resourcesComplete system integrations
Webhook AutomationChatbot flow webhooks, read contactsTriggering chatbot flows from external systems

When you select a scope group, the included permissions are shown below the dropdown.

Option 2: Individual scopes (Advanced)

Select specific permissions by checking individual scopes grouped by resource:

ResourceAvailable Actions
BroadcastCreate, Read, Send, Delete, All
ContactsCreate, Read, Read All, Update, Delete, All
LeadsCreate, Read, Read All, Update, Assign, Delete, All
TemplateRead, Create, Update, Delete, All
Chatbot FlowsWebhook

You must select at least one scope.

📸
Screenshot: Individual scopes selection showing checkboxes grouped by resource (Broadcast, Contacts, Leads, Template, Chatbot Flows)
individual-scopes.png
1. In the Create API Key dialog, select "Select individual scopes (Advanced)"
2. Check a few scopes from different resource groups
3. Capture the scope checkboxes
Save to: static/img/screenshots/developer-tools/api-keys/individual-scopes.png

Advanced settings

Expand the Advanced Settings panel to configure optional security features:

SettingDescriptionDefault
Allowed IP AddressesRestrict key usage to specific IP addresses. Enter one IPv4 address per line. Leave empty to allow all IPs.All IPs allowed
Rate Limit (requests per hour)Maximum number of API requests per hour. Leave empty for no limit.1,000/hour
Expiration DateSet an expiration date after which the key stops working. Leave empty for no expiration.No expiration

Saving your API key

After clicking Create, the dialog shows your full API key in a yellow warning box.

📸
Screenshot: API key created successfully showing the full key in a yellow warning box with copy button and the message 'This is the only time you'll see the full API key'
api-key-created-warning.png
1. After creating a key, capture the warning box showing the full API key with the copy button
Save to: static/img/screenshots/developer-tools/api-keys/api-key-created-warning.png
Save your key immediately

This is the only time you'll see the full API key. Copy it and store it securely. If you lose it, you'll need to regenerate a new key.

Click the Copy button to copy the key to your clipboard, then click Done to close the dialog.


Editing an API key

Click the Edit action on any key to modify:

  • Key name
  • Permission configuration (scope group or individual scopes)
  • Advanced settings (IP whitelist, rate limit, expiration)
info

Editing a key does not change the key value itself. The existing key continues to work with the updated permissions.


Regenerating a key

If your key is compromised or you need a new value:

  1. Click Regenerate from the actions menu
  2. Confirm the action
  3. The old key is immediately revoked
  4. A new key is displayed — copy it and store it securely

Usage statistics

Click View Usage Stats to see how your API key has been performing.

📸
Screenshot: Usage Statistics dialog showing metric cards for Total Messages, Sent, Delivered, Read, Failed, Last Message, and progress bars for Delivery Rate and Read Rate
usage-stats-dialog.png
1. Click "View Usage Stats" on an API key that has been used
2. Capture the dialog showing all metric cards and the delivery/read rate progress bars
Save to: static/img/screenshots/developer-tools/api-keys/usage-stats-dialog.png
MetricDescription
Total MessagesTotal number of messages sent using this key
SentMessages successfully sent to WhatsApp
DeliveredMessages delivered to the customer's phone
ReadMessages read (opened) by the customer
FailedMessages that failed to send
Last MessageDate and time of the most recent message
Delivery RatePercentage of messages that were delivered or read
Read RatePercentage of messages that were read

API documentation

EzPulze includes a built-in API documentation page that generates ready-to-use code examples based on your API key and permissions.

📸
Screenshot: API Documentation page showing authentication section, broadcast API with auto-generated payload, and code examples in cURL and JavaScript
api-docs-page.png
1. Navigate to the API Documentation page (accessible from the API Keys section)
2. Select a broadcast from the dropdown to see auto-generated payloads
3. Capture the page showing the authentication section and broadcast API examples
Save to: static/img/screenshots/developer-tools/api-keys/api-docs-page.png

What's included

The documentation page shows endpoints based on your key's scopes:

SectionAvailable whenWhat it shows
AuthenticationAlwaysHow to use your API key, base URL
Broadcast APIBroadcast scopeSend messages — with a template picker that auto-generates the payload
Contacts APIContacts scopeCreate, read, update contacts
Leads APILeads scopeCreate, read, assign leads
Templates APITemplate scopeList available templates
Error CodesAlwaysCommon error codes and meanings
Rate LimitsAlwaysYour key's rate limit and response headers

Broadcast payload generator

Select a broadcast (template) from the dropdown, and the documentation page automatically generates the complete API payload — including:

  • Template parameters (header, body, URL)
  • Media references (auto-populated if saved)
  • Button payloads (quick reply buttons)
  • Carousel cards (if applicable)
  • Product configuration (SPM/MPM templates)

Each example includes both cURL and JavaScript code with a Copy button.

Error codes

CodeMeaning
401Unauthorized — invalid or missing API key
403Forbidden — key doesn't have the required scope
429Too Many Requests — rate limit exceeded
500Internal Server Error — something went wrong on the server

Security best practices

  • Use scope groups — Give each key only the permissions it needs
  • Set IP restrictions — If your integration runs from known servers, whitelist their IPs
  • Set expiration dates — For temporary integrations, set an expiry
  • Regenerate compromised keys — If a key is leaked, regenerate it immediately
  • Use separate keys — Create different keys for different integrations, so you can revoke one without affecting others
  • Never share keys in code — Store keys in environment variables, not in source code

Tips

  • The key prefix (sk_live_...) is used for quick identification — you can safely share the prefix without exposing the full key
  • If an API key is inactive, all requests using it will be rejected with a 401 error
  • Usage stats only count messages sent through the Broadcast API — not messages sent from the EzPulze UI
  • Use the API documentation page to test your integration — it generates exact payloads with your real templates