List plans
curl --request GET \
--url https://api.spenza.com/api/v1.1/plans \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.spenza.com/api/v1.1/plans"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.spenza.com/api/v1.1/plans', 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.spenza.com/api/v1.1/plans",
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://api.spenza.com/api/v1.1/plans"
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://api.spenza.com/api/v1.1/plans")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spenza.com/api/v1.1/plans")
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{
"success": true,
"data": [
{
"productId": "AT0001",
"productName": "AT&T 5GB",
"description": "Unlimited talk & text + 5GB data",
"price": 49.99,
"currency": "usd",
"validityDays": 30,
"data": {
"value": 5,
"unit": "GB"
},
"voiceMinutes": 1000,
"smsCount": 500,
"operator": "AT&T",
"network": "AT&T",
"isEsim": false,
"planType": "FLAT_RATE",
"recurring": true
},
{
"productId": "PAYG001",
"productName": "Pay-As-You-Go Data",
"description": "Pay-as-you-go data, voice & SMS",
"price": 0,
"currency": "usd",
"validityDays": 30,
"data": {
"value": null,
"unit": null
},
"voiceMinutes": 0,
"smsCount": 0,
"operator": "AT&T",
"network": "AT&T",
"isEsim": false,
"planType": "PAY_AS_YOU_GO",
"recurring": false,
"tieredPricing": {
"dataTiers": [
{
"from": 0,
"to": 1,
"unit": "GB",
"price": 5
},
{
"from": 1,
"to": null,
"unit": "GB",
"price": 4
}
],
"voiceTiers": [
{
"from": 0,
"to": 100,
"unit": "min",
"price": 0.02
}
],
"smsTiers": [
{
"from": 0,
"to": 100,
"unit": "sms",
"price": 0.01
}
]
},
"volumeTierPricing": {
"tiers": [
{
"minQuantity": 1,
"maxQuantity": 9,
"pricePerUnit": 49.99
},
{
"minQuantity": 10,
"maxQuantity": null,
"pricePerUnit": 44.99
}
]
}
}
],
"meta": {
"page": 1,
"pageSize": 25,
"total": 8,
"totalPages": 1
}
}Plans & Catalog
List plans
List the plans your account may purchase. search requires searchType
to be set (otherwise the search matches nothing rather than erroring
loudly). Omitting category restricts results to MSP_PLAN and
RESELLER_PLAN; supplying it narrows to exactly that one category.
Each plan optionally includes tieredPricing (only present when the
plan’s planType is PAY_AS_YOU_GO) and/or volumeTierPricing (only
present when volume-tiered pricing is enabled for the plan).
GET
/
api
/
v1.1
/
plans
List plans
curl --request GET \
--url https://api.spenza.com/api/v1.1/plans \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.spenza.com/api/v1.1/plans"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.spenza.com/api/v1.1/plans', 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.spenza.com/api/v1.1/plans",
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://api.spenza.com/api/v1.1/plans"
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://api.spenza.com/api/v1.1/plans")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spenza.com/api/v1.1/plans")
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{
"success": true,
"data": [
{
"productId": "AT0001",
"productName": "AT&T 5GB",
"description": "Unlimited talk & text + 5GB data",
"price": 49.99,
"currency": "usd",
"validityDays": 30,
"data": {
"value": 5,
"unit": "GB"
},
"voiceMinutes": 1000,
"smsCount": 500,
"operator": "AT&T",
"network": "AT&T",
"isEsim": false,
"planType": "FLAT_RATE",
"recurring": true
},
{
"productId": "PAYG001",
"productName": "Pay-As-You-Go Data",
"description": "Pay-as-you-go data, voice & SMS",
"price": 0,
"currency": "usd",
"validityDays": 30,
"data": {
"value": null,
"unit": null
},
"voiceMinutes": 0,
"smsCount": 0,
"operator": "AT&T",
"network": "AT&T",
"isEsim": false,
"planType": "PAY_AS_YOU_GO",
"recurring": false,
"tieredPricing": {
"dataTiers": [
{
"from": 0,
"to": 1,
"unit": "GB",
"price": 5
},
{
"from": 1,
"to": null,
"unit": "GB",
"price": 4
}
],
"voiceTiers": [
{
"from": 0,
"to": 100,
"unit": "min",
"price": 0.02
}
],
"smsTiers": [
{
"from": 0,
"to": 100,
"unit": "sms",
"price": 0.01
}
]
},
"volumeTierPricing": {
"tiers": [
{
"minQuantity": 1,
"maxQuantity": 9,
"pricePerUnit": 49.99
},
{
"minQuantity": 10,
"maxQuantity": null,
"pricePerUnit": 44.99
}
]
}
}
],
"meta": {
"page": 1,
"pageSize": 25,
"total": 8,
"totalPages": 1
}
}Authorizations
Bearer token obtained from POST /api/v1.1/auth/token.
Query Parameters
1-indexed page number.
Required range:
x >= 1Items per page.
Required range:
1 <= x <= 100Available options:
productName, productId Available options:
SPENZA_PLAN, MSP_PLAN, RESELLER_PLAN, ENDUSER_PLAN, SIM, SaaS Response
A page of plans.
⌘I

