import Migma from 'migma';
const migma = new Migma('YOUR_API_KEY');
const { data } = await migma.emails.metrics('EMAIL_ID');
console.log(data.summary);curl --request GET \
--url https://api.migma.ai/v1/emails/{emailId}/metrics \
--header 'Authorization: <api-key>'import requests
url = "https://api.migma.ai/v1/emails/{emailId}/metrics"
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/emails/{emailId}/metrics",
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/emails/{emailId}/metrics"
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/emails/{emailId}/metrics")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.migma.ai/v1/emails/{emailId}/metrics")
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": {
"summary": {
"totalEmails": 123,
"delivered": 123,
"opened": 123,
"clicked": 123,
"bounced": 123,
"complained": 123,
"unsubscribed": 123,
"deliveryRate": 123,
"openRate": 123,
"clickRate": 123,
"bounceRate": 123,
"complaintRate": 123,
"unsubscribeRate": 123
},
"lastUpdated": "2023-11-07T05:31:56Z",
"timeSeries": [
{
"date": "<string>",
"sent": 123,
"delivered": 123,
"opened": 123,
"clicked": 123,
"bounced": 123,
"complained": 123
}
],
"countryBreakdown": [
{
"country": "<string>",
"count": 123
}
],
"cached": true
},
"error": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}{
"success": false,
"error": "<string>",
"code": "<string>",
"data": {}
}Get Email Metrics
Aggregate performance for one generated email across every API send of it: delivery, opens, clicks, bounces, complaints, unsubscribes, plus a daily time series and country breakdown. Numbers arrive asynchronously and cover roughly the last 30 days of raw history (aggregates persist longer). Opens are directional — Apple Mail Privacy Protection and bots inflate them; clicks and delivery events are stronger signals. Requires the email:read scope.
import Migma from 'migma';
const migma = new Migma('YOUR_API_KEY');
const { data } = await migma.emails.metrics('EMAIL_ID');
console.log(data.summary);curl --request GET \
--url https://api.migma.ai/v1/emails/{emailId}/metrics \
--header 'Authorization: <api-key>'import requests
url = "https://api.migma.ai/v1/emails/{emailId}/metrics"
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/emails/{emailId}/metrics",
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/emails/{emailId}/metrics"
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/emails/{emailId}/metrics")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.migma.ai/v1/emails/{emailId}/metrics")
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": {
"summary": {
"totalEmails": 123,
"delivered": 123,
"opened": 123,
"clicked": 123,
"bounced": 123,
"complained": 123,
"unsubscribed": 123,
"deliveryRate": 123,
"openRate": 123,
"clickRate": 123,
"bounceRate": 123,
"complaintRate": 123,
"unsubscribeRate": 123
},
"lastUpdated": "2023-11-07T05:31:56Z",
"timeSeries": [
{
"date": "<string>",
"sent": 123,
"delivered": 123,
"opened": 123,
"clicked": 123,
"bounced": 123,
"complained": 123
}
],
"countryBreakdown": [
{
"country": "<string>",
"count": 123
}
],
"cached": true
},
"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.
Path Parameters
Email ID returned in generation status result.emails[].emailId.
^[0-9a-fA-F]{24}$Response
Email metrics
Aggregate performance for one generated email across every API send of it. Sourced from the tracking worker, so values may be slightly stale and cover roughly the last 30 days of raw send history (aggregates persist longer). Opens are directional: Apple Mail Privacy Protection and bots inflate them; clicks and delivery events are stronger signals.
Show child attributes
Show child attributes
Was this page helpful?