---
title: "Create a custom cloud"
method: POST
path: "/organization/{organization_id}/custom-cloud-environments"
tags: ["Custom_Cloud"]
---

# Create a custom cloud

`POST /organization/{organization_id}/custom-cloud-environments`

> This endpoint **may be changed or removed at any time**. Don't use it in production environments.

Creates a custom cloud environment in an organization.

## Path parameters

- `organization_id` string, required

## Request body

- CustomCloudEnvironmentCreateRequestBody — CustomCloudEnvironmentCreateRequestBody
  - `cloud_provider` 'aws' | 'azure' | 'google' | 'oracle', required — Cloud provider for the BYOC cloud
  - `cloud_region` string, required — Cloud region for the BYOC cloud
  - `contact_emails` object[] — Email addresses for notifications and alerts for this BYOC cloud
    - `email` string, required — User email address
    - `real_name` string — User real name
    - `role` string — Role of this user
  - `deployment_model` 'direct_ipsec_ingress' | 'ipsec_ingress' | 'standard' | 'standard_public' | 'pci_dss' | 'hipaa', required — Deployment model for the BYOC cloud
  - `display_name` string, required — Short name for this BYOC cloud
  - `reserved_cidr` string, required — CIDR range reserved for Aiven provisioned networks in the BYOC cloud
  - `tags` object — Set of resource tags

## Response `200`

Response

- CustomCloudEnvironmentCreateResponse — CustomCloudEnvironmentCreateResponse
  - `custom_cloud_environment` object, required — Custom cloud environment
    - `aiven_aws_account_principal` string — Entity that assumes the IAM role for controlling the BYOC account
    - `aiven_aws_assume_role_external_id` string — External ID for assuming the IAM role for controlling the BYOC account
    - `aiven_aws_object_storage_credentials_creator_arn` string — Amazon Resource Name
    - `aiven_aws_object_storage_user_arn` string — Amazon Resource Name
    - `aiven_google_account_principal` string — Google account identifier
    - `aiven_management_cidr_blocks` string[] — IP address ranges for incoming connections to the bastion host from the Aiven management plane
    - `aiven_object_storage_credentials_creator_user` string — Google account identifier
    - `aws_iam_role_arn` string — Amazon Resource Name
    - `aws_subnets_bastion` object — Subnets to build in the bastion VPC
    - `aws_subnets_workload` object — Subnets to build in the workload VPC
    - `azure_subscription_id` string — UUID identifying the customer's Azure subscription where BYOC infrastructure is deployed.
    - `bucket_names` object — Names and usages of buckets required for workloads
    - `byoc_resource_tags` object — Set of tags for the resources provisioned on the BYOC account
    - `byoc_unique_name` string — Name for all the resources created for the custom cloud environment
    - `cloud_provider` 'aws' | 'azure' | 'google' | 'oracle' — Cloud provider for the BYOC cloud
    - `cloud_region` string — Cloud region for the BYOC cloud
    - `contact_emails` object[], required — Email addresses for notifications and alerts for this BYOC cloud
      - `email` string, required — User email address
      - `real_name` string — User real name
      - `role` string — Role of this user
    - `custom_cloud_environment_id` string, required — Custom cloud environment ID
    - `custom_cloud_names` string[] — Cloud names that can be used to provision a service on this BYOC
    - `deployment_model` 'direct_ipsec_ingress' | 'ipsec_ingress' | 'standard' | 'standard_public' | 'pci_dss' | 'hipaa' — Deployment model for the BYOC cloud
    - `display_name` string, required — Short name for this BYOC cloud
    - `errors` object[] — List of errors for this custom cloud environment
      - `category` 'general_error', required — Category of this error
      - `message` string, required — Description of this error
    - `google_bastion_cidr` string — Private IP address block for the workload VPC containing the bastion subnet
    - `google_privilege_bearing_service_account_id` string — Google account identifier
    - `google_workload_cidr` string — Private IP address block for the workload VPC containing the workload subnet
    - `oracle_compartment_id` string — Used to uniquely identify an asset in Oracle's cloud. May refer to a range of object types including instance, tenancy, subnet and more.
    - `oracle_subnet_bastion` string — CIDR for the bastion subnet
    - `oracle_subnet_workload` string — CIDR for the private workload subnet
    - `reserved_cidr` string — CIDR range reserved for Aiven provisioned networks in the BYOC cloud
    - `state` 'draft' | 'validating' | 'creating' | 'creation_failed' | 'active' | 'disconnected' | 'reconnecting' | 'deleting' | 'deletion_failed' | 'deleted', required — State of this BYOC cloud
    - `tags` object — Set of resource tags
    - `update_time` string, required — Custom cloud environment last update timestamp (ISO 8601)
    - `use_customer_owned_storage` boolean — True if this BYOC cloud is using customer owned storage
  - `errors` object[] — List of errors occurred during request processing
    - `message` string, required — Printable error message
    - `more_info` string — URL to the documentation of the error
    - `status` integer, required — HTTP error status code
  - `message` string — Printable result of the request

---

[API](https://skmtc.net/aiven/apis/aiven-api-documentation.md) · [All operations](https://skmtc.net/aiven/apis/aiven-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/aiven/aiven-api-documentation/revisions/cbfbf0f96a48/schema)
