Export Recipients
curl --request GET \
--url https://api.example.com/email/lists/{list_id}/recipients/export.csvimport requests
url = "https://api.example.com/email/lists/{list_id}/recipients/export.csv"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/email/lists/{list_id}/recipients/export.csv', 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.example.com/email/lists/{list_id}/recipients/export.csv",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/email/lists/{list_id}/recipients/export.csv"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/email/lists/{list_id}/recipients/export.csv")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/email/lists/{list_id}/recipients/export.csv")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyMailing Lists
Export Recipients
Download a mailing list as CSV
GET
/
email
/
lists
/
{list_id}
/
recipients
/
export.csv
Export Recipients
curl --request GET \
--url https://api.example.com/email/lists/{list_id}/recipients/export.csvimport requests
url = "https://api.example.com/email/lists/{list_id}/recipients/export.csv"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/email/lists/{list_id}/recipients/export.csv', 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.example.com/email/lists/{list_id}/recipients/export.csv",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/email/lists/{list_id}/recipients/export.csv"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/email/lists/{list_id}/recipients/export.csv")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/email/lists/{list_id}/recipients/export.csv")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyReturns the list’s recipients as a CSV attachment — every status unless you filter — with the columns:
email,name,external_id,status,created_at,status_changed_at,attributes
attributes is compact JSON (empty when the recipient has none). The same file is what the dashboard’s Export CSV button downloads, and its columns are accepted back by the dashboard’s Import CSV.
Authentication
This endpoint requires an API token passed as a Bearer token in theAuthorization header.
Authorization: Bearer YOUR_API_TOKEN
Path Parameters
string
required
The mailing list’s unique identifier (UUID).
Query Parameters
string
Only recipients in this status:
active, removed or unsubscribed.Request
cURL
curl -o recipients.csv \
"https://api.shipstar.ai/api/v1/email/lists/a1b2c3d4-e5f6-7890-abcd-ef1234567890/recipients/export.csv?status=active" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
200 OK with Content-Type: text/csv; charset=utf-8 and a Content-Disposition: attachment; filename="<list-name>-recipients.csv" header.
email,name,external_id,status,created_at,status_changed_at,attributes
[email protected],Sam Lee,usr_42,active,2026-09-01T08:00:00+00:00,,"{""plan"":""pro""}"
[email protected],,,removed,2026-09-02T08:00:00+00:00,2026-09-20T09:30:00+00:00,
Errors
| Status | Description |
|---|---|
| 400 | Unknown status value |
| 401 | Invalid or expired API token |
| 404 | Mailing list not found in the token’s project |
Rate Limits
This endpoint is limited to 20 requests per minute per IP.Was this page helpful?