Developer Guide

Getting Started with the AcelleMail REST API

October 10, 2025 2 min read 1,901 views Tutorial

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.

A

AcelleMail Team