Get the member templates of one multisig alert pack
curl --request GET \
--url https://api.range.org/v2/risk/alert-packs/{pack_type} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v2/risk/alert-packs/{pack_type}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.range.org/v2/risk/alert-packs/{pack_type}', 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.range.org/v2/risk/alert-packs/{pack_type}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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.range.org/v2/risk/alert-packs/{pack_type}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
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.range.org/v2/risk/alert-packs/{pack_type}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/risk/alert-packs/{pack_type}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pack_type": "squads",
"networks": [
"solana"
],
"members": [
{
"template_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"rule_type": "sol-squads-large-tx-threadpool",
"network": "solana",
"label": "Large Squads Transaction",
"description": "A large transaction was proposed on {{network}}",
"required": true,
"default_severity": "high",
"trigger": "BLOCK",
"parameters": [
{
"label": "Wallet",
"description": "The address to monitor",
"field": "address",
"field_type": "Address",
"optional": false
}
]
}
]
}Alert Packs
Get multisig alert pack templates
Return the member templates, required flags, and configurable parameters for a multisig alert pack type.
GET
/
v2
/
risk
/
alert-packs
/
{pack_type}
Get the member templates of one multisig alert pack
curl --request GET \
--url https://api.range.org/v2/risk/alert-packs/{pack_type} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v2/risk/alert-packs/{pack_type}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.range.org/v2/risk/alert-packs/{pack_type}', 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.range.org/v2/risk/alert-packs/{pack_type}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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.range.org/v2/risk/alert-packs/{pack_type}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
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.range.org/v2/risk/alert-packs/{pack_type}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/risk/alert-packs/{pack_type}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pack_type": "squads",
"networks": [
"solana"
],
"members": [
{
"template_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"rule_type": "sol-squads-large-tx-threadpool",
"network": "solana",
"label": "Large Squads Transaction",
"description": "A large transaction was proposed on {{network}}",
"required": true,
"default_severity": "high",
"trigger": "BLOCK",
"parameters": [
{
"label": "Wallet",
"description": "The address to monitor",
"field": "address",
"field_type": "Address",
"optional": false
}
]
}
]
}Use a
pack_type from List multisig alert packs.
A preferred network does not restrict every member to that network.Authorizations
AuthorizationAuthorization
Authorization method required to allow user to access the api endpoints.
Path Parameters
The pack type to retrieve (e.g. squads).
Example:
"squads"
Query Parameters
Preferred network for rule types registered on several networks: the pack then lists only the template on this network for each such type. Types with no template on this network keep all their templates, so the response always covers every required type.
Maximum string length:
64Example:
"solana"
Response
200 - application/json
Pack type identifier.
Example:
"squads"
Networks covered by the returned member templates. Narrowed by the network query parameter where a variant exists there.
Example:
["solana"]
Member templates, required first.
Show child attributes
Show child attributes
Last modified on November 10, 2026
Was this page helpful?