curl --request GET \
--url https://catalog.basaltic.sh/v1/regions/{code}import requests
url = "https://catalog.basaltic.sh/v1/regions/{code}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://catalog.basaltic.sh/v1/regions/{code}', 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://catalog.basaltic.sh/v1/regions/{code}",
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://catalog.basaltic.sh/v1/regions/{code}"
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://catalog.basaltic.sh/v1/regions/{code}")
.asString();require 'uri'
require 'net/http'
url = URI("https://catalog.basaltic.sh/v1/regions/{code}")
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{
"state": "active",
"accepting_new_resources": true,
"crn": "crn:catalog::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
}{
"error": {
"code": "INVALID_INPUT",
"message": "Invalid request parameters",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"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"
}
}Get a region
Return one published region by its immutable code. Unknown and unpublished regions both return 404. This public endpoint is rate-limited per client IP; successful responses may be cached privately for 60 seconds.
curl --request GET \
--url https://catalog.basaltic.sh/v1/regions/{code}import requests
url = "https://catalog.basaltic.sh/v1/regions/{code}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://catalog.basaltic.sh/v1/regions/{code}', 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://catalog.basaltic.sh/v1/regions/{code}",
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://catalog.basaltic.sh/v1/regions/{code}"
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://catalog.basaltic.sh/v1/regions/{code}")
.asString();require 'uri'
require 'net/http'
url = URI("https://catalog.basaltic.sh/v1/regions/{code}")
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{
"state": "active",
"accepting_new_resources": true,
"crn": "crn:catalog::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
}{
"error": {
"code": "INVALID_INPUT",
"message": "Invalid request parameters",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}
}{
"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"
}
}Path Parameters
Immutable region code.
^[a-z][a-z0-9-]{0,31}$"sa-saopaulo-1"
Response
Published region
Catalog lifecycle, independent of health and capacity. Retired codes are never reused.
planned, active, restricted, retiring, retired "active"
True only for active regions. Product services still enforce eligibility, quotas, placement and capacity.
true
Platform-owned global region identity, using the immutable region code.
"crn:catalog::platform:region/sa-saopaulo-1"
Unique region code used in API calls and CRNs
"sa-saopaulo-1"
Human-readable region name
"São Paulo 1"
Geographic location of the region
"São Paulo, Brazil"
ISO 3166-1 alpha-2 country code (used to display flag in UI)
2"BR"
Compatibility alias for accepting_new_resources; not a live health signal
true
Compatibility flag that is true only when state is planned
false

