import Migma from 'migma';
const migma = new Migma('YOUR_API_KEY');
const { data, error } = await migma.campaigns.create({
projectId: 'PROJECT_ID',
name: 'Investor Update',
conversationId: 'CONVERSATION_ID',
emailId: 'EMAIL_ID',
from: 'hello@yourbrand.migma.email',
fromName: 'Your Brand',
recipientType: 'tag',
recipientId: 'TAG_ID'
});curl --request POST \
--url https://api.migma.ai/v1/campaigns \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"projectId": "<string>",
"name": "<string>",
"conversationId": "<string>",
"from": "jsmith@example.com",
"fromName": "<string>",
"recipientId": "<string>",
"emailId": "<string>",
"subject": "<string>",
"preheaderText": "<string>",
"replyTo": "jsmith@example.com",
"recipientIds": [
"<string>"
],
"topicId": "<string>",
"variables": {}
}
'import requests
url = "https://api.migma.ai/v1/campaigns"
payload = {
"projectId": "<string>",
"name": "<string>",
"conversationId": "<string>",
"from": "jsmith@example.com",
"fromName": "<string>",
"recipientId": "<string>",
"emailId": "<string>",
"subject": "<string>",
"preheaderText": "<string>",
"replyTo": "jsmith@example.com",
"recipientIds": ["<string>"],
"topicId": "<string>",
"variables": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.migma.ai/v1/campaigns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectId' => '<string>',
'name' => '<string>',
'conversationId' => '<string>',
'from' => 'jsmith@example.com',
'fromName' => '<string>',
'recipientId' => '<string>',
'emailId' => '<string>',
'subject' => '<string>',
'preheaderText' => '<string>',
'replyTo' => 'jsmith@example.com',
'recipientIds' => [
'<string>'
],
'topicId' => '<string>',
'variables' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.migma.ai/v1/campaigns"
payload := strings.NewReader("{\n \"projectId\": \"<string>\",\n \"name\": \"<string>\",\n \"conversationId\": \"<string>\",\n \"from\": \"jsmith@example.com\",\n \"fromName\": \"<string>\",\n \"recipientId\": \"<string>\",\n \"emailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"preheaderText\": \"<string>\",\n \"replyTo\": \"jsmith@example.com\",\n \"recipientIds\": [\n \"<string>\"\n ],\n \"topicId\": \"<string>\",\n \"variables\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.migma.ai/v1/campaigns")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"<string>\",\n \"name\": \"<string>\",\n \"conversationId\": \"<string>\",\n \"from\": \"jsmith@example.com\",\n \"fromName\": \"<string>\",\n \"recipientId\": \"<string>\",\n \"emailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"preheaderText\": \"<string>\",\n \"replyTo\": \"jsmith@example.com\",\n \"recipientIds\": [\n \"<string>\"\n ],\n \"topicId\": \"<string>\",\n \"variables\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.migma.ai/v1/campaigns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectId\": \"<string>\",\n \"name\": \"<string>\",\n \"conversationId\": \"<string>\",\n \"from\": \"jsmith@example.com\",\n \"fromName\": \"<string>\",\n \"recipientId\": \"<string>\",\n \"emailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"preheaderText\": \"<string>\",\n \"replyTo\": \"jsmith@example.com\",\n \"recipientIds\": [\n \"<string>\"\n ],\n \"topicId\": \"<string>\",\n \"variables\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "<string>",
"projectId": "<string>",
"name": "<string>",
"conversationId": "<string>",
"emailId": "<string>",
"subject": "<string>",
"preheaderText": "<string>",
"from": "jsmith@example.com",
"fromName": "<string>",
"replyTo": "<string>",
"recipientType": "audience",
"recipientId": "<string>",
"recipientIds": [
"<string>"
],
"topicId": "<string>",
"estimatedRecipients": 123,
"providerType": "ses",
"variables": {},
"status": "draft",
"scheduledAt": "2023-11-07T05:31:56Z",
"scheduledTimezone": "<string>",
"batchId": "<string>",
"sentAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"error": "<string>",
"triggeredBy": "manual",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"error": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}Create Campaign
Create a new email campaign from a generated email. Use emailId for the exact generated email, especially series slots. Requires API key with campaign:write.
import Migma from 'migma';
const migma = new Migma('YOUR_API_KEY');
const { data, error } = await migma.campaigns.create({
projectId: 'PROJECT_ID',
name: 'Investor Update',
conversationId: 'CONVERSATION_ID',
emailId: 'EMAIL_ID',
from: 'hello@yourbrand.migma.email',
fromName: 'Your Brand',
recipientType: 'tag',
recipientId: 'TAG_ID'
});curl --request POST \
--url https://api.migma.ai/v1/campaigns \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"projectId": "<string>",
"name": "<string>",
"conversationId": "<string>",
"from": "jsmith@example.com",
"fromName": "<string>",
"recipientId": "<string>",
"emailId": "<string>",
"subject": "<string>",
"preheaderText": "<string>",
"replyTo": "jsmith@example.com",
"recipientIds": [
"<string>"
],
"topicId": "<string>",
"variables": {}
}
'import requests
url = "https://api.migma.ai/v1/campaigns"
payload = {
"projectId": "<string>",
"name": "<string>",
"conversationId": "<string>",
"from": "jsmith@example.com",
"fromName": "<string>",
"recipientId": "<string>",
"emailId": "<string>",
"subject": "<string>",
"preheaderText": "<string>",
"replyTo": "jsmith@example.com",
"recipientIds": ["<string>"],
"topicId": "<string>",
"variables": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.migma.ai/v1/campaigns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectId' => '<string>',
'name' => '<string>',
'conversationId' => '<string>',
'from' => 'jsmith@example.com',
'fromName' => '<string>',
'recipientId' => '<string>',
'emailId' => '<string>',
'subject' => '<string>',
'preheaderText' => '<string>',
'replyTo' => 'jsmith@example.com',
'recipientIds' => [
'<string>'
],
'topicId' => '<string>',
'variables' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.migma.ai/v1/campaigns"
payload := strings.NewReader("{\n \"projectId\": \"<string>\",\n \"name\": \"<string>\",\n \"conversationId\": \"<string>\",\n \"from\": \"jsmith@example.com\",\n \"fromName\": \"<string>\",\n \"recipientId\": \"<string>\",\n \"emailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"preheaderText\": \"<string>\",\n \"replyTo\": \"jsmith@example.com\",\n \"recipientIds\": [\n \"<string>\"\n ],\n \"topicId\": \"<string>\",\n \"variables\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.migma.ai/v1/campaigns")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"<string>\",\n \"name\": \"<string>\",\n \"conversationId\": \"<string>\",\n \"from\": \"jsmith@example.com\",\n \"fromName\": \"<string>\",\n \"recipientId\": \"<string>\",\n \"emailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"preheaderText\": \"<string>\",\n \"replyTo\": \"jsmith@example.com\",\n \"recipientIds\": [\n \"<string>\"\n ],\n \"topicId\": \"<string>\",\n \"variables\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.migma.ai/v1/campaigns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectId\": \"<string>\",\n \"name\": \"<string>\",\n \"conversationId\": \"<string>\",\n \"from\": \"jsmith@example.com\",\n \"fromName\": \"<string>\",\n \"recipientId\": \"<string>\",\n \"emailId\": \"<string>\",\n \"subject\": \"<string>\",\n \"preheaderText\": \"<string>\",\n \"replyTo\": \"jsmith@example.com\",\n \"recipientIds\": [\n \"<string>\"\n ],\n \"topicId\": \"<string>\",\n \"variables\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "<string>",
"projectId": "<string>",
"name": "<string>",
"conversationId": "<string>",
"emailId": "<string>",
"subject": "<string>",
"preheaderText": "<string>",
"from": "jsmith@example.com",
"fromName": "<string>",
"replyTo": "<string>",
"recipientType": "audience",
"recipientId": "<string>",
"recipientIds": [
"<string>"
],
"topicId": "<string>",
"estimatedRecipients": 123,
"providerType": "ses",
"variables": {},
"status": "draft",
"scheduledAt": "2023-11-07T05:31:56Z",
"scheduledTimezone": "<string>",
"batchId": "<string>",
"sentAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"error": "<string>",
"triggeredBy": "manual",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"error": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}Authorizations
API key authentication. Use 'Authorization: Bearer YOUR_API_KEY' where YOUR_API_KEY is obtained from the Migma dashboard under Settings → Developers → API Keys.
Body
Project ID
Campaign name
Conversation ID that owns the generated email
Sender email address
Sender display name
Send to a segment (audience) or tag
audience, tag Segment or list ID. Required unless recipientIds is set. Ignored when recipientIds is present except as recipientIds[0] on the stored campaign.
Generated email ID from result.emails[].emailId. Recommended for series slots.
Email subject (auto-populated from conversation if omitted)
Preheader text
Reply-to address
Send to several segments or several lists of the same type. Unique people receive one email. Cannot mix segments and lists. Maximum 20.
20Topic ID for preference filtering
Email provider (default: migma)
ses, resend, sendgrid, mailgun, migma Template variables
Was this page helpful?