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.


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

FeatureLaunch API (Legacy)Content & Campaign APIs (SE 2025)
URLhttps://s3s.fr/api/launch/nph-13.plhttps://api.splio.com/content/v1/create-email-design and https://api.splio.com/campaign-api/v1/one-shot
AuthenticationAPI Key in query params (key=...)JWT in Authorization header (Bearer XXX)
Content SourceExternal URL (url param)Direct HTML upload or ZIP file
PersonalizationLegacy Splio syntax ($firstname$)Liquid syntax ({{contact.firstname}})
ExecutionSingle call (returns campaign ID, processes async)Create Design → Create Campaign (with status tracking)
TargetingLists and Filters in call paramsLinked 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=false

Response

{
  "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 APIContent APIRequiredNotes
sendernamesender_nameSender display name
senderemailsender_emailMust be DKIM-validated
replytoreply_toReply-to address
urlfileDirect HTML or ZIP upload (no URL fetch)
nameContent name
languagefr, en, de, es, etc.
subjectEmail 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 APICampaign APIRequiredNotes
listfilterIdCreate a filter targeting your list first
filter / groupfilterIdUse filter ID directly
fileNot supported; import contacts or use filters
starttimesendDate.datetimeFormat: "2025-11-20 19:00"
sendDate.timezonee.g., "Europe/Paris"
nameCampaign name (defaults to "[API]")
designIdUUID from Content API response
categorySet via UI only
opcodeNot available

Migration Notes


  1. Subject extraction removed: The legacy API auto-extracted the subject from the HTML title tag. You must now provide it explicitly via the subject parameter.
  2. Sender info moved: Sender details (sender_name, sender_email, reply_to) are now set during design creation, not campaign creation.
  3. Timezone required: The legacy starttime was in server timezone. The new API requires an explicit timezone.
  4. 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"
    }
  }'