Subscribe API
Programmatically add subscribers using the public Subscribe API endpoint.
Use the Subscribe API to add subscribers from custom forms, CRM integrations, landing page builders, or any application. No authentication token is required — the endpoint is designed to be called from client-side code.
Endpoint
Content-Type: application/json
Request body
| Field | Type | Required | Description |
|---|---|---|---|
list_id | string (UUID) | Yes | Your subscriber list ID |
email | string | Yes | Subscriber's email address |
first_name | string | No | Subscriber's first name |
last_name | string | No | Subscriber's last name |
source | string | No | Set to "api" for programmatic integrations |
Authentication
No API key or authentication token is needed. The Subscribe API is intentionally public so it can be used in client-side forms and embeds.
Examples
cURL
JavaScript
Responses
Success — pending confirmation (200)
The subscriber was created. A confirmation email has been sent to the address.
Already subscribed (200)
The email address is already on the list. No duplicate is created.
Validation error (400)
The request body failed validation. Check the error message for details.
Rate limited (429)
The rate limit was exceeded. Wait for the reset window before retrying.
Rate limits
The Subscribe API allows 10 requests per hour per IP address. Exceeding the limit returns a 429 response. The response includes three headers to help you handle this gracefully:
X-RateLimit-Limit— the maximum requests allowed per windowX-RateLimit-Remaining— requests remaining in the current windowX-RateLimit-Reset— Unix timestamp when the window resets
Build your integration to check the response status before processing. If you receive a 429, read the X-RateLimit-Reset header to know when to retry.
Error codes
| Status | Meaning |
|---|---|
| 200 | Success — subscriber added or already exists |
| 400 | Validation error — check request body |
| 404 | List not found — verify your list_id |
| 429 | Rate limited — wait and retry |
| 500 | Server error — retry later |
| 503 | Service temporarily unavailable — retry later |
Finding your list ID
Your list ID is a UUID assigned when the subscriber list is created. To find it:
- Click the Users icon (Subscribers) in the sidebar.
- Select the subscriber list you want to use.
- The list ID appears in the list settings panel.
You can also copy it directly from the embed code in the Form Builder — it is the value in the list_id or data-list-id field.
Troubleshooting
Getting 400 errors?
Verify that the email field is a properly formatted email address and that list_id is a valid UUID. If you copied the list ID from the dashboard, make sure no extra spaces or characters were included.
Subscriber not appearing in the dashboard? New subscribers start with Pending status. They must click the confirmation email to become Confirmed and appear in your active subscriber count. Filter by Pending in the Subscribers list to see them.
Getting 429 responses?
You have exceeded the rate limit of 10 requests per hour per IP. Read the X-RateLimit-Reset header value (a Unix timestamp) to determine when the window resets. If your integration sends many signups in short bursts, consider batching requests or adding a queue.