Transactional emails
List transactional emails
Retrieve a paginated list of transactional emails, most recently created first.
GET
/
v1
/
transactional-emails
List transactional emails
curl --request GET \
--url https://app.loops.so/api/v1/transactional-emails \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.loops.so/api/v1/transactional-emails"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.loops.so/api/v1/transactional-emails', 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://app.loops.so/api/v1/transactional-emails",
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://app.loops.so/api/v1/transactional-emails"
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://app.loops.so/api/v1/transactional-emails")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.loops.so/api/v1/transactional-emails")
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{
"pagination": {
"totalResults": 2,
"returnedResults": 2,
"perPage": 20,
"totalPages": 1,
"nextCursor": null,
"nextPage": null
},
"data": [
{
"id": "cll42l54f20i1la0lfooe3z12",
"url": "https://app.loops.so/transactional/cll42l54f20i1la0lfooe3z12",
"name": "Sign up confirmation",
"draftEmailMessageId": "cle5f7g9h1i3j5k7l9m1n3p5",
"publishedEmailMessageId": "cle5f7g9h1i3j5k7l9m1n3p5",
"transactionalGroupId": "clg7n5p3q1r9s7t5u3v1w9y7",
"createdAt": "2025-06-29T07:47:39.370Z",
"updatedAt": "2025-06-29T07:47:39.370Z",
"dataVariables": [
"confirmationUrl"
]
}
]
}{
"message": "Transactional email not found."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
How many results to return in each request. Must be between 10 and 50. Default is 20.
A cursor to return a specific page of results. Cursors can be found from the pagination.nextCursor value in each response.
Only return transactional emails in this transactional group. An ID that matches no group returns an empty list.
Minimum string length:
1Last modified on July 21, 2026
Was this page helpful?
⌘I
List transactional emails
curl --request GET \
--url https://app.loops.so/api/v1/transactional-emails \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.loops.so/api/v1/transactional-emails"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.loops.so/api/v1/transactional-emails', 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://app.loops.so/api/v1/transactional-emails",
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://app.loops.so/api/v1/transactional-emails"
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://app.loops.so/api/v1/transactional-emails")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.loops.so/api/v1/transactional-emails")
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{
"pagination": {
"totalResults": 2,
"returnedResults": 2,
"perPage": 20,
"totalPages": 1,
"nextCursor": null,
"nextPage": null
},
"data": [
{
"id": "cll42l54f20i1la0lfooe3z12",
"url": "https://app.loops.so/transactional/cll42l54f20i1la0lfooe3z12",
"name": "Sign up confirmation",
"draftEmailMessageId": "cle5f7g9h1i3j5k7l9m1n3p5",
"publishedEmailMessageId": "cle5f7g9h1i3j5k7l9m1n3p5",
"transactionalGroupId": "clg7n5p3q1r9s7t5u3v1w9y7",
"createdAt": "2025-06-29T07:47:39.370Z",
"updatedAt": "2025-06-29T07:47:39.370Z",
"dataVariables": [
"confirmationUrl"
]
}
]
}{
"message": "Transactional email not found."
}
