Communications
Read a mailing run progress
Returns this organization run with live generated-record counts and progress. total/ready/skipped/failed/queued and processed counts are distinct from delivery status. Requires permission: one of mailings_view, mailings_generate, mailings_manage, manage_email, reports_view, reports_manage.
GET
/
admin
/
mailing_runs
/
{id}
Read a mailing run progress
curl --request GET \
--url https://api.gratona.com/v1/admin/mailing_runs/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/mailing_runs/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/mailing_runs/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/mailing_runs/{id}",
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: Bearer <token>"
],
]);
$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.gratona.com/v1/admin/mailing_runs/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.gratona.com/v1/admin/mailing_runs/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/mailing_runs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": 42,
"mailing_template_id": 42,
"mailing_template_name": "Example",
"source_type": "Example",
"status": "processing",
"delivery_mode": "none",
"delivery_status": "not_requested",
"label_layout_preset": "single_label",
"total_items": 1,
"ready_items": 1,
"skipped_items": 1,
"failed_items": 1,
"queued_items": 1,
"processed_items": 1,
"progress_percent": 50,
"created_at": "2026-10-20T12:00:00Z",
"completed_at": "2026-10-20T12:00:00Z",
"delivered_at": "2026-10-20T12:00:00Z"
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Not Found",
"status": "error"
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Id in the current organization.
Response
Operation result.
Generated record counts, with live counts used where queried. Progress measures document processing and does not prove email/postal delivery.
Show child attributes
Show child attributes
⌘I
Read a mailing run progress
curl --request GET \
--url https://api.gratona.com/v1/admin/mailing_runs/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/mailing_runs/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/mailing_runs/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/mailing_runs/{id}",
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: Bearer <token>"
],
]);
$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.gratona.com/v1/admin/mailing_runs/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.gratona.com/v1/admin/mailing_runs/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/mailing_runs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": 42,
"mailing_template_id": 42,
"mailing_template_name": "Example",
"source_type": "Example",
"status": "processing",
"delivery_mode": "none",
"delivery_status": "not_requested",
"label_layout_preset": "single_label",
"total_items": 1,
"ready_items": 1,
"skipped_items": 1,
"failed_items": 1,
"queued_items": 1,
"processed_items": 1,
"progress_percent": 50,
"created_at": "2026-10-20T12:00:00Z",
"completed_at": "2026-10-20T12:00:00Z",
"delivered_at": "2026-10-20T12:00:00Z"
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Not Found",
"status": "error"
}