Developer Guide
Getting Started with the AcelleMail REST API
Authentication
All API requests require a Bearer token. Get yours from AcelleMail admin → API → Generate Token.
# Test authentication
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://your-acellemail.com/api/v1/me
Common Operations
List All Subscribers
curl -H "Authorization: Bearer TOKEN" \
"https://your-acellemail.com/api/v1/lists/LIST_UID/subscribers?per_page=20"
Add a Subscriber
curl -X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"EMAIL": "john@example.com",
"FIRST_NAME": "John",
"LAST_NAME": "Doe",
"tag": "api-import"
}' \
"https://your-acellemail.com/api/v1/lists/LIST_UID/subscribers"
PHP/Laravel Example
use Illuminate\Support\Facades\Http;
$response = Http::withToken(config('services.acellemail.token'))
->post('https://your-acellemail.com/api/v1/lists/LIST_UID/subscribers', [
'EMAIL' => $user->email,
'FIRST_NAME' => $user->name,
]);
if ($response->successful()) {
// Subscriber added
$subscriberUid = $response->json('subscriber_uid');
}
Webhook Integration
Configure webhooks in AcelleMail to notify your app of events:
// routes/api.php
Route::post('/webhooks/acellemail', function (Request $request) {
$event = $request->input('event');
$data = $request->input('data');
match($event) {
'subscriber.added' => handleNewSubscriber($data),
'email.bounced' => handleBounce($data),
'email.complained' => handleComplaint($data),
default => null,
};
return response('OK', 200);
});
Rate Limits
| Endpoint | Limit |
|---|---|
| GET requests | 60/minute |
| POST/PUT/DELETE | 30/minute |
| Bulk operations | 10/minute |
Error Handling
{
"status": "error",
"message": "Subscriber already exists",
"code": 409
}
Always check the status field in responses and handle errors gracefully.