curl --request GET \
--url https://iam.basaltic.sh/v1/regionsimport requests
url = "https://iam.basaltic.sh/v1/regions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://iam.basaltic.sh/v1/regions', 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://iam.basaltic.sh/v1/regions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://iam.basaltic.sh/v1/regions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://iam.basaltic.sh/v1/regions")
.asString();require 'uri'
require 'net/http'
url = URI("https://iam.basaltic.sh/v1/regions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"regions": [
{
"crn": "crn:iam::platform:region/sa-saopaulo-1",
"code": "sa-saopaulo-1",
"name": "São Paulo 1",
"location": "São Paulo, Brazil",
"country_code": "BR",
"available": true,
"coming_soon": false
}
],
"default": "sa-saopaulo-1"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests, please try again later",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "An internal error occurred",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}List regions (legacy IAM)
Legacy compatibility endpoint. New clients should use catalog.basaltic.sh/v1/regions. This endpoint retains IAM-namespaced region CRNs and its existing response shape. List all published regions. This endpoint is public and does not require authentication. Returns all regions with their availability status.
Because it takes no credentials, requests are rate-limited per client IP.
curl --request GET \
--url https://iam.basaltic.sh/v1/regionsimport requests
url = "https://iam.basaltic.sh/v1/regions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://iam.basaltic.sh/v1/regions', 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://iam.basaltic.sh/v1/regions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://iam.basaltic.sh/v1/regions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://iam.basaltic.sh/v1/regions")
.asString();require 'uri'
require 'net/http'
url = URI("https://iam.basaltic.sh/v1/regions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"regions": [
{
"crn": "crn:iam::platform:region/sa-saopaulo-1",
"code": "sa-saopaulo-1",
"name": "São Paulo 1",
"location": "São Paulo, Brazil",
"country_code": "BR",
"available": true,
"coming_soon": false
}
],
"default": "sa-saopaulo-1"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests, please try again later",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "An internal error occurred",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}Query Parameters
Exact resource name, combined with crn using AND before pagination. Empty values are filters. Resources without a name never match.
Exact returned CRN, combined with name using AND before pagination. Malformed or empty CRNs return 400; valid mismatched or foreign CRNs return an empty page. Resources without a CRN never match. Organization-scoped CRNs use the authenticated organization.

