cURL
curl "https://app.tatango.com/api/v2/lists/ID/messages/MESSAGE_ID" -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u emailaddress@mydomain.com:my_api_key \
-H "Host: example.org" \
-H "Cookie: "require 'net/http'
require 'uri'
uri = URI.parse('https://app.tatango.com/api/v2/lists/ID/messages/MESSAGE_ID')
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_url)
request.basic_auth("emailaddress@mydomain.com", "my_api_key")
response = http.request(request)var request = new XMLHttpRequest();
request.open('GET', 'https://app.tatango.com/api/v2/lists/ID/messages/MESSAGE_ID', false);
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Authorization', 'Basic ' + btoa('emailaddress@mydomain.com:my_api_key'));
request.send(null);import requests
url = "https://app.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_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: Basic <encoded-value>"
],
]);
$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.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}")
.header("Authorization", "Basic <encoded-value>")
.asString();{
"status": "OK",
"message": {
"id": 14523,
"content": "AMCE Retail: Go to http://bit.ly/acme to see deals on anvils. Reply STOP to end.",
"sent_at": "2016-09-07T14:10:53-07:00",
"status": "sent",
"name": "my message name",
"is_broadcast": true,
"recipient_count": 679571,
"success_count": 675232,
"bounces_count": 4339,
"pending_count": 0,
"clean_count": 2342,
"unsubscribe_count": 1362,
"sms_count": 168808,
"mms_count": 506424,
"rcs_count": 0,
"send_cost": 5096.78,
"attachment": "https://url-to-your-mms-attachment",
"cancelled_at": null,
"message_links": [
{
"id": 42,
"link": "http://bit.ly/acme",
"count": 2356,
"display_count": 2356
}
],
"parts": {
"sum": 679599,
"minimum": 1,
"maximum": 2
}
}
}Messaging
Querying an Existing Message
This endpoint retrieves a message.
GET
/
api
/
v2
/
lists
/
{ID}
/
messages
/
{MESSAGE_ID}
cURL
curl "https://app.tatango.com/api/v2/lists/ID/messages/MESSAGE_ID" -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u emailaddress@mydomain.com:my_api_key \
-H "Host: example.org" \
-H "Cookie: "require 'net/http'
require 'uri'
uri = URI.parse('https://app.tatango.com/api/v2/lists/ID/messages/MESSAGE_ID')
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_url)
request.basic_auth("emailaddress@mydomain.com", "my_api_key")
response = http.request(request)var request = new XMLHttpRequest();
request.open('GET', 'https://app.tatango.com/api/v2/lists/ID/messages/MESSAGE_ID', false);
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Authorization', 'Basic ' + btoa('emailaddress@mydomain.com:my_api_key'));
request.send(null);import requests
url = "https://app.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_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: Basic <encoded-value>"
],
]);
$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.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}")
.header("Authorization", "Basic <encoded-value>")
.asString();{
"status": "OK",
"message": {
"id": 14523,
"content": "AMCE Retail: Go to http://bit.ly/acme to see deals on anvils. Reply STOP to end.",
"sent_at": "2016-09-07T14:10:53-07:00",
"status": "sent",
"name": "my message name",
"is_broadcast": true,
"recipient_count": 679571,
"success_count": 675232,
"bounces_count": 4339,
"pending_count": 0,
"clean_count": 2342,
"unsubscribe_count": 1362,
"sms_count": 168808,
"mms_count": 506424,
"rcs_count": 0,
"send_cost": 5096.78,
"attachment": "https://url-to-your-mms-attachment",
"cancelled_at": null,
"message_links": [
{
"id": 42,
"link": "http://bit.ly/acme",
"count": 2356,
"display_count": 2356
}
],
"parts": {
"sum": 679599,
"minimum": 1,
"maximum": 2
}
}
}Please note the following:
- It takes some time after a message is sent to receive delivery status notifications from the various carriers. We recommend waiting until at least 10 minutes after a message is sent to query for delivery statistics.
-
The
message_linksattribute will only be present on messages that have bit.ly links in their content. -
The
partsattribute will be available 30 minutes after the message was sent.
Request URL
GET https://app.tatango.com/api/v2/lists/{ID}/messages/{MESSAGE_ID}
Authorizations
The momoGood Messaging API v2 authenticates requests by validating an API key passed via HTTP Basic Authentication. Use your login email as the username and your API key as the password.