curl --request POST \
--url https://api.nugen.in/api/v3/byoc/clusters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cluster_name": "prod-alignment-cluster",
"cloud": {},
"cluster_import": {},
"config": {}
}
'import requests
url = "https://api.nugen.in/api/v3/byoc/clusters"
payload = {
"cluster_name": "prod-alignment-cluster",
"cloud": {},
"cluster_import": {},
"config": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cluster_name: 'prod-alignment-cluster',
cloud: {},
cluster_import: {},
config: {}
})
};
fetch('https://api.nugen.in/api/v3/byoc/clusters', 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.nugen.in/api/v3/byoc/clusters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cluster_name' => 'prod-alignment-cluster',
'cloud' => [
],
'cluster_import' => [
],
'config' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nugen.in/api/v3/byoc/clusters"
payload := strings.NewReader("{\n \"cluster_name\": \"prod-alignment-cluster\",\n \"cloud\": {},\n \"cluster_import\": {},\n \"config\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.nugen.in/api/v3/byoc/clusters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cluster_name\": \"prod-alignment-cluster\",\n \"cloud\": {},\n \"cluster_import\": {},\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nugen.in/api/v3/byoc/clusters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cluster_name\": \"prod-alignment-cluster\",\n \"cloud\": {},\n \"cluster_import\": {},\n \"config\": {}\n}"
response = http.request(request)
puts response.read_body{
"cluster_id": "<string>",
"cluster_name": "<string>",
"status": "<string>",
"message": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Deploy alignment infrastructure inside your own cloud or cluster
Register your cloud environment or existing Kubernetes cluster.
All alignment training, model storage and inference then run within your network boundary. No data leaves your environment.
Two paths are supported.
Managed provisioning. Provide a clean, isolated cloud subscription or project. The system provisions a hardened Kubernetes environment from infrastructure-as-code blueprints, configures GPU scheduling and manages ongoing operations through secure GitOps pipelines. No access to your corporate network is required.
Cluster import. Point to an existing cluster or namespace. The system deploys a self-contained serving and training stack configured to your constraints: storage classes, ingress rules, identity bindings, registry policies. Updates arrive through private registry syncs, so your security team controls when changes land.
Once connected, every endpoint in this platform behaves identically whether it runs on our infrastructure or inside yours. The same alignment workflows, model management, auto-align and export paths work unchanged. The system manages GPU node health, autoscaling, deployment lifecycle and performance within your cluster.
Request Body:
cluster_name(required): Name for this environmentmode(required):managed_provisioningorcluster_importcloud(required): Provider, region and the stored credential referencecluster_import(optional): Kubeconfig reference, endpoint, namespace and node labels. Required whenmodeiscluster_importconfig(optional): gpu, networking, storage, iam, registry, operations, capabilities, compliance, overflow and notifications
Returns:
cluster_id: Identifier of this environmentcluster_name,status,message
Raises:
400: Ifmodeiscluster_importand nocluster_importblock is given
Notes:
- Egress is restricted and endpoints are private by default; you open them explicitly
- Air-gapped registries are a first-class path, and your team controls the sync cadence
- Bring your own cloud is an Enterprise Edition capability. The request is recorded and our team follows up; raise a support ticket to enable it
- Poll
GET /byoc/clusters/{cluster_id}/statusfor provisioning progress and cluster health
curl --request POST \
--url https://api.nugen.in/api/v3/byoc/clusters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cluster_name": "prod-alignment-cluster",
"cloud": {},
"cluster_import": {},
"config": {}
}
'import requests
url = "https://api.nugen.in/api/v3/byoc/clusters"
payload = {
"cluster_name": "prod-alignment-cluster",
"cloud": {},
"cluster_import": {},
"config": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cluster_name: 'prod-alignment-cluster',
cloud: {},
cluster_import: {},
config: {}
})
};
fetch('https://api.nugen.in/api/v3/byoc/clusters', 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.nugen.in/api/v3/byoc/clusters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cluster_name' => 'prod-alignment-cluster',
'cloud' => [
],
'cluster_import' => [
],
'config' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nugen.in/api/v3/byoc/clusters"
payload := strings.NewReader("{\n \"cluster_name\": \"prod-alignment-cluster\",\n \"cloud\": {},\n \"cluster_import\": {},\n \"config\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.nugen.in/api/v3/byoc/clusters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cluster_name\": \"prod-alignment-cluster\",\n \"cloud\": {},\n \"cluster_import\": {},\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nugen.in/api/v3/byoc/clusters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cluster_name\": \"prod-alignment-cluster\",\n \"cloud\": {},\n \"cluster_import\": {},\n \"config\": {}\n}"
response = http.request(request)
puts response.read_body{
"cluster_id": "<string>",
"cluster_name": "<string>",
"status": "<string>",
"message": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Register a cloud environment or an existing cluster to run in.
Only the name, the mode and the cloud block are required. Every other section is accepted as given and stored verbatim, so an environment can pin any detail without the public schema enumerating every knob.
Name for this environment, used across status, logging and billing.
"prod-alignment-cluster"
managed_provisioning builds a hardened Kubernetes environment from a clean cloud subscription. cluster_import deploys the alignment and serving stack into a cluster you already run.
managed_provisioning, cluster_import Provider, region and the stored credential reference. Determines which provisioning blueprints and identity paths are used.
Kubeconfig reference, endpoint, namespace and node labels. Required when mode is cluster_import.
Optional settings for gpu, networking, storage, iam, registry, operations, capabilities, compliance, overflow and notifications. Egress is restricted and traffic is private by default, and anything omitted resolves to auto.
Response
Bring your own cloud request accepted and recorded.
Was this page helpful?