Amazon Simple Notification Service
amazonaws · Cloud
Amazon Simple Notification Service Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. Applications can use Amazon SNS to easily push real-time notification messages to interested subscribers over multiple delivery protocols. For more information about this product see the Amazon SNS product page . For detailed information about Amazon SNS features and thei
Authentication
Sample Requests
Adds a statement to a topic's access control policy, granting access for the specified Amazon Web Services accounts to the specified actions. To remove the ability to change topic permissions, you must deny permissions to the AddPermission , RemovePermission
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=AddPermission?Label=example&Action=AddPermission&Version=2010-03-31&TopicArn=example&ActionName=example&AWSAccountId=example"
import requests
params = {
"Label": "example",
"Action": "AddPermission",
"Version": "2010-03-31",
"TopicArn": "example",
"ActionName": "example",
"AWSAccountId": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=AddPermission",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=AddPermission');
url.searchParams.set('Label', 'example');
url.searchParams.set('Action', 'AddPermission');
url.searchParams.set('Version', '2010-03-31');
url.searchParams.set('TopicArn', 'example');
url.searchParams.set('ActionName', 'example');
url.searchParams.set('AWSAccountId', 'example');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=AddPermission")
q := baseURL.Query()
q.Set("Label", "example")
q.Set("Action", "AddPermission")
q.Set("Version", "2010-03-31")
q.Set("TopicArn", "example")
q.Set("ActionName", "example")
q.Set("AWSAccountId", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=AddPermission")
uri.query = URI.encode_www_form({
"Label" => "example",
"Action" => "AddPermission",
"Version" => "2010-03-31",
"TopicArn" => "example",
"ActionName" => "example",
"AWSAccountId" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=AddPermission?" . http_build_query([
"Label" => "example",
"Action" => "AddPermission",
"Version" => "2010-03-31",
"TopicArn" => "example",
"ActionName" => "example",
"AWSAccountId" => "example"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Accepts a phone number and indicates whether the phone holder has opted out of receiving SMS messages from your Amazon Web Services account. You cannot send SMS messages to a number that is opted out. To resume sending messages, you can opt in the number by using the OptInPhoneNumber
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=CheckIfPhoneNumberIsOptedOut?Action=CheckIfPhoneNumberIsOptedOut&Version=2010-03-31&phoneNumber=example"
import requests
params = {
"Action": "CheckIfPhoneNumberIsOptedOut",
"Version": "2010-03-31",
"phoneNumber": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=CheckIfPhoneNumberIsOptedOut",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=CheckIfPhoneNumberIsOptedOut');
url.searchParams.set('Action', 'CheckIfPhoneNumberIsOptedOut');
url.searchParams.set('Version', '2010-03-31');
url.searchParams.set('phoneNumber', 'example');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=CheckIfPhoneNumberIsOptedOut")
q := baseURL.Query()
q.Set("Action", "CheckIfPhoneNumberIsOptedOut")
q.Set("Version", "2010-03-31")
q.Set("phoneNumber", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=CheckIfPhoneNumberIsOptedOut")
uri.query = URI.encode_www_form({
"Action" => "CheckIfPhoneNumberIsOptedOut",
"Version" => "2010-03-31",
"phoneNumber" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=CheckIfPhoneNumberIsOptedOut?" . http_build_query([
"Action" => "CheckIfPhoneNumberIsOptedOut",
"Version" => "2010-03-31",
"phoneNumber" => "example"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=ConfirmSubscription?Token=YOUR_TOKEN&Action=ConfirmSubscription&Version=2010-03-31&TopicArn=example&AuthenticateOnUnsubscribe=example"
import requests
params = {
"Token": "YOUR_TOKEN",
"Action": "ConfirmSubscription",
"Version": "2010-03-31",
"TopicArn": "example",
"AuthenticateOnUnsubscribe": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=ConfirmSubscription",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=ConfirmSubscription');
url.searchParams.set('Token', 'YOUR_TOKEN');
url.searchParams.set('Action', 'ConfirmSubscription');
url.searchParams.set('Version', '2010-03-31');
url.searchParams.set('TopicArn', 'example');
url.searchParams.set('AuthenticateOnUnsubscribe', 'example');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=ConfirmSubscription")
q := baseURL.Query()
q.Set("Token", "YOUR_TOKEN")
q.Set("Action", "ConfirmSubscription")
q.Set("Version", "2010-03-31")
q.Set("TopicArn", "example")
q.Set("AuthenticateOnUnsubscribe", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=ConfirmSubscription")
uri.query = URI.encode_www_form({
"Token" => "YOUR_TOKEN",
"Action" => "ConfirmSubscription",
"Version" => "2010-03-31",
"TopicArn" => "example",
"AuthenticateOnUnsubscribe" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/amazonaws.com/sns/2010-03-31/#Action=ConfirmSubscription?" . http_build_query([
"Token" => "YOUR_TOKEN",
"Action" => "ConfirmSubscription",
"Version" => "2010-03-31",
"TopicArn" => "example",
"AuthenticateOnUnsubscribe" => "example"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with Amazon Simple Notification Service?
Amazon Simple Notification Service is a Cloud API. Developers commonly use cloud APIs for:
- provisioning and managing cloud infrastructure
- automating deployments and container orchestration
- monitoring uptime and performance metrics
- managing storage buckets and databases
- setting up auto-scaling and load balancing
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Amazon Simple Notification Service is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?