---
title: "Deploy in your own cloud or cluster"
method: POST
path: "/api/v3/byoc/clusters"
tags: ["BYOC"]
---

# Deploy in your own cloud or cluster

`POST /api/v3/byoc/clusters`

## Request

- Base URL: `https://api.nugen.in`
- URL: `https://api.nugen.in/api/v3/byoc/clusters`
- Auth: HTTP bearer

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 environment
- `mode` (required): `managed_provisioning` or `cluster_import`
- `cloud` (required): Provider, region and the stored credential reference
- `cluster_import` (optional): Kubeconfig reference, endpoint, namespace and
  node labels. Required when `mode` is `cluster_import`
- `config` (optional): gpu, networking, storage, iam, registry, operations,
  capabilities, compliance, overflow and notifications


**Returns:**

- `cluster_id`: Identifier of this environment
- `cluster_name`, `status`, `message`


**Raises:**

- `400`: If `mode` is `cluster_import` and no `cluster_import` block 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}/status` for provisioning progress and
  cluster health

## Request body

- ByocClusterCreateRequest: 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.
  - `cluster_name` string, required: Name for this environment, used across status, logging and billing.
  - `mode` 'managed_provisioning' | 'cluster_import', required: 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.
  - `cloud` object, required: Provider, region and the stored credential reference. Determines which provisioning blueprints and identity paths are used.
  - `cluster_import` object, nullable: Kubeconfig reference, endpoint, namespace and node labels. Required when mode is cluster_import.
  - `config` object, nullable: 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 `202`

Bring your own cloud request accepted and recorded.

- ByocClusterCreateResponse: Acknowledgement of a bring your own cloud request.
  - `cluster_id` string, required: Identifier of this environment.
  - `cluster_name` string, required: Name given to the environment.
  - `status` 'RECEIVED', required: Request status. RECEIVED means the request was recorded.
  - `message` string, required: Human-readable outcome of the request.

## Other responses

- `401`: Invalid API key
- `403`: Authorization header missing or not a Bearer token
- `422`: Validation Error

---

[API](https://skmtc.dev/nugen/apis/nugen-intelligence-api.md) - [All operations](https://skmtc.dev/nugen/apis/nugen-intelligence-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nugen/apis/nugen-intelligence-api/revisions/62baa7960a4a?raw)
