Manage newsletter campaigns via the xoPort REST API. Multi-language support, locked and sent safety checks, composite primary key. Available since version 2.8.0.
Newsletter Campaign Endpoint
v2.8.0 · CRUD · Newsletter Campaigns
Newsletter Campaigns
Manage newsletter campaigns with multi-language support, locked and sent safety checks. Composite primary key (newsletters_id + language_id).
GET /Export/JSON/newsletters
GET /Export/JSON/newsletter/{id}POST /Import/JSON/newsletters
PUT /Import/JSON/newsletters
DELETE /Delete/JSON/newsletter/{id}Endpoints
| Method | Endpoint | Scope | Description |
|---|---|---|---|
| GET | /Export/JSON/newsletters | newsletters:read | List all campaigns (with filters) |
| GET | /Export/JSON/newsletter/{id} | newsletters:read | Retrieve a single campaign (all language versions) |
| POST | /Import/JSON/newsletters | newsletters:write | Create a new campaign (multi-language) |
| PUT | /Import/JSON/newsletters | newsletters:write | Update existing campaign |
| DELETE | /Delete/JSON/newsletter/{id} | newsletters:delete | Delete campaign (safety checks) |
Query filter (Export)
| Parameters | Description | Example |
|---|---|---|
?status=1 | Filter by status | 0 = Draft, 1 = Active |
?language_id=1 | Specific language version only | Language ID |
Multi-language format
Campaigns use the nested " languages" format, consistent with all other endpoints:
{
"newsletters_id": 1,
"languages": {
"de": {
"title": "Sommer-Newsletter 2026",
"content": "<h1>Willkommen</h1>...",
"module": "default",
"status": 1,
"locked": 0,
"date_added": "2026-03-06 12:00:00",
"date_sent": "0000-00-00 00:00:00"
},
"en": {
"title": "Summer Newsletter 2026",
"content": "<h1>Welcome</h1>..."
}
}
}Safety Checks
Locked Check
Campaigns with `locked=1 ` cannot be updated or deleted. Response: 409 LOCKED
Sent Check
Campaigns with newsletters_sent entries(newsletters that have already been sent) cannot be deleted. Response: 409 HAS_SENT_ENTRIES
Example: Create a campaign
# POST - New newsletter campaign
curl -X POST "https://shop.de/xpanel/xoport/Import/JSON/newsletters" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "newsletters",
"data": [{
"languages": {
"de": {
"title": "Frühlings-Newsletter 2026",
"content": "<h1>Frühlings-Angebote</h1><p>Entdecken Sie unsere neuen Produkte!</p>",
"module": "default"
}
}
}]
}'