Node.js SDK
import Migma from 'migma';
const migma = new Migma('YOUR_API_KEY');
const { data, error } = await migma.campaigns.stats('CAMPAIGN_ID');curl --request GET \
--url https://api.migma.ai/v1/campaigns/{id}/stats \
--header 'Authorization: <api-key>'import requests
url = "https://api.migma.ai/v1/campaigns/{id}/stats"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.migma.ai/v1/campaigns/{id}/stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.migma.ai/v1/campaigns/{id}/stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.migma.ai/v1/campaigns/{id}/stats")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.migma.ai/v1/campaigns/{id}/stats")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"totalSent": 123,
"totalDelivered": 123,
"uniqueOpens": 123,
"totalOpens": 123,
"uniqueClicks": 123,
"totalClicks": 123,
"unsubscribes": 123,
"bounces": 123,
"openRate": 123,
"clickRate": 123,
"lastUpdated": "2023-11-07T05:31:56Z",
"botOpens": 123,
"botClicks": 123,
"mppOpens": 123,
"conversion": {
"conversions": 123,
"revenue": 123,
"currency": "<string>",
"source": "connector"
}
},
"error": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}Get Campaign Stats
Get aggregate engagement stats for a sent campaign (sends, deliveries, opens, clicks, unsubscribes, bounces, and rates). Stats are sourced from the tracking worker and may be cached and slightly stale. botOpens, botClicks, and mppOpens reflect Apple Mail Privacy Protection and bot detection when available. Requires API key with campaign:read.
GET
/
v1
/
campaigns
/
{id}
/
stats
Node.js SDK
import Migma from 'migma';
const migma = new Migma('YOUR_API_KEY');
const { data, error } = await migma.campaigns.stats('CAMPAIGN_ID');curl --request GET \
--url https://api.migma.ai/v1/campaigns/{id}/stats \
--header 'Authorization: <api-key>'import requests
url = "https://api.migma.ai/v1/campaigns/{id}/stats"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.migma.ai/v1/campaigns/{id}/stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.migma.ai/v1/campaigns/{id}/stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.migma.ai/v1/campaigns/{id}/stats")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.migma.ai/v1/campaigns/{id}/stats")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"totalSent": 123,
"totalDelivered": 123,
"uniqueOpens": 123,
"totalOpens": 123,
"uniqueClicks": 123,
"totalClicks": 123,
"unsubscribes": 123,
"bounces": 123,
"openRate": 123,
"clickRate": 123,
"lastUpdated": "2023-11-07T05:31:56Z",
"botOpens": 123,
"botClicks": 123,
"mppOpens": 123,
"conversion": {
"conversions": 123,
"revenue": 123,
"currency": "<string>",
"source": "connector"
}
},
"error": "<string>"
}{
"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.
Path Parameters
Campaign ID
Last modified on September 1, 2026
Was this page helpful?