Migrate from Launch-API to Content & Campaign APIs on SE2025
This guide will help you migrate from the legacy Launch API to the modern Content & Campaign APIs (Splio Edition 2025).
The legacy Launch API combined content fetching (via URL) and campaign execution into a single API call. The new approach decouples these steps: you first create your content using the Content API and then trigger its delivery via the Campaign API.
General Info
The new APIs offer improved performance and flexibility. Unlike the legacy Launch API, which was strictly URL-based, the modern workflow allows you to upload HTML or ZIP content directly or use existing contents created through UI, while supporting advanced Liquid personalization in your design.
- Content API Reference: Create Email Design
- Campaign API Reference: Get Campaign
Design Migration
❗️ Your content must be created via the Content API to generate a new email_design_id.
In the legacy Launch API, the email subject was automatically extracted from the <title> tag of your URL. With the new Content API, you define the subject and sender details explicitly during the design creation step or within the campaign settings.
Simple Comparison of both APIs
| Feature | Launch API (Legacy) | Content & Campaign APIs (SE 2025) |
|---|---|---|
| URL | https://s3s.fr/api/launch/nph-13.pl | https://api.splio.com/content/v1/create-email-design and https://api.splio.com/campaign-api/v1/one-shot |
| Authentication | API Key in query params (key=...) | JWT in Authorization header (Bearer XXX) |
| Content Source | External URL (url param) | Direct HTML upload or ZIP file |
| Personalization | Legacy Splio syntax ($firstname$) | Liquid syntax ({{contact.firstname}}) |
| Execution | Single call (returns campaign ID, processes async) | Create Design → Create Campaign (with status tracking) |
| Targeting | Lists and Filters in call params | Linked to the campaign definition |
Step 1: Create the Content (Content API)
Instead of providing a URL for Splio to fetch, you now push your HTML content to the Content API. This returns a design_id that you will use to launch your campaign.
Example: Create Email Design
curl --request POST \
--url https://api.splio.com/content/v1/create-email-design \
--header 'authorization: Bearer {{JWT_TOKEN}}' \
--header 'accept: application/json' \
--header 'content-type: multipart/form-data' \
--form language=fr \
--form file_type=zip \
--form file='my_design.zip' \
--form 'name=My email design' \
--form sender_name=pophat \
--form 'subject=Winter is coming!' \
--form [email protected] \
--form [email protected] \
--form disable_utm_tracking=falseResponse
{
"uuid": "abc123de-456f-789g-012h-i3456789jklm"
}Step 2: Trigger the Campaign (Campaign API)
Once your content is ready, use the Campaign API to define the audience (lists/filters) and schedule the sending.
Example: Create and Launch Campaign
curl --request POST \
--url https://api.splio.com/campaign-api/v1/one-shot \
--header 'authorization: Bearer {{JWT_TOKEN}}' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"name": "Spring Sale Launch",
"filter_id": 23,
"design_id": "abc123de-456f-789g-012h-i3456789jklm",
"send_date": {
"datetime": "2025-05-01T10:00:00",
"timezone": "Europe/Paris"
}
}
'Step 3: Check Campaign Status
To monitor the progress of your campaign (scheduled, sending, or sent), use the Get Campaign endpoint. While the legacy API only returned a campaign ID with no built-in status tracking, the new API provides real-time campaign status updates.
Example: Get Campaign Details
curl --request GET \
--url https://api.splio.com/campaign-api/v1/one-shot/212 \
--header 'authorization: Bearer {{JWT_TOKEN}}' \
--header 'accept: application/json'
Response
{
"id": 235,
"name": "Spring Sale Launch",
"filter_id": 23,
"design_id": "abc123de-456f-789g-012h-i3456789jklm",
"send_date": {
"datetime": "2025-11-28 10:00",
"timezone": "Europe/Paris"
},
"status": "PUBLISHED"
}Parameter Mapping
This section details how legacy Launch API parameters map to the new SE 2025 APIs.
Content API - Create Email Design
POST https://api.splio.com/content/v1/create-email-design (multipart/form-data)
| Legacy Launch API | Content API | Required | Notes |
|---|---|---|---|
| sendername | sender_name | ✅ | Sender display name |
| senderemail | sender_email | ✅ | Must be DKIM-validated |
| replyto | reply_to | ❌ | Reply-to address |
| url | file | ✅ | Direct HTML or ZIP upload (no URL fetch) |
| — | name | ✅ | Content name |
| — | language | ✅ | fr, en, de, es, etc. |
| — | subject | ✅ | Email subject (was auto-extracted from title tag) |
| — | file_type | ✅ | "html" or "zip" |
Campaign API - Create One-Shot Campaign
POST https://api.splio.com/campaign-api/v1/one-shot (JSON)
| Legacy Launch API | Campaign API | Required | Notes |
|---|---|---|---|
| list | filterId | ✅ | Create a filter targeting your list first |
| filter / group | filterId | ✅ | Use filter ID directly |
| file | — | — | Not supported; import contacts or use filters |
| starttime | sendDate.datetime | ✅ | Format: "2025-11-20 19:00" |
| — | sendDate.timezone | ✅ | e.g., "Europe/Paris" |
| — | name | ❌ | Campaign name (defaults to "[API]") |
| — | designId | ✅ | UUID from Content API response |
| category | — | — | Set via UI only |
| opcode | — | — | Not available |
Migration Notes
- Subject extraction removed: The legacy API auto-extracted the subject from the HTML
titletag. You must now provide it explicitly via the subject parameter. - Sender info moved: Sender details (sender_name, sender_email, reply_to) are now set during design creation, not campaign creation.
- Timezone required: The legacy starttime was in server timezone. The new API requires an explicit timezone.
- No URL fetching: Content must be uploaded directly as HTML or ZIP file. If you need to fetch from a URL, do it client-side before calling the API.
Example: Full Migration
Legacy Launch API call:
curl -X POST 'https://s3s.fr/api/launch/nph-13.pl' \
--form 'universe=myuniverse' \
--form 'key=YOUR_API_KEY' \
--form 'url=https://example.com/email.html' \
--form '[email protected]' \
--form 'sendername=My Brand' \
--form 'list=1,2' \
--form 'starttime=2025-05-01 10:00:00'SE 2025 equivalent (2 calls):
# Step 1: Create the design
curl -X POST 'https://api.splio.com/content/v1/create-email-design' \
-H 'Authorization: Bearer YOUR_JWT_TOKEN' \
-F 'name=My Campaign Design' \
-F 'language=en' \
-F 'subject=Check out our latest offers!' \
-F 'sender_name=My Brand' \
-F '[email protected]' \
-F 'file_type=html' \
-F '[email protected]'
# Response: {"uuid": "019a5e90-d328-79d9-bf90-b05c9015929e"}
# Step 2: Create and schedule the campaign
curl -X POST 'https://api.splio.com/campaign-api/v1/one-shot' \
-H 'Authorization: Bearer YOUR_JWT_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "My Campaign",
"filterId": 123,
"designId": "019a5e90-d328-79d9-bf90-b05c9015929e",
"sendDate": {
"datetime": "2025-05-01 10:00",
"timezone": "Europe/Paris"
}
}'
Updated 3 days ago