Create an organization
curl --request POST \
--url https://auth.cognite.com/api/v1/orgs/{org}/orgs \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"id": "my-org",
"idp": {
"idpVendor": "AZURE_AD",
"issuer": "https://login.microsoftonline.com/some-tenant-id/v2.0"
},
"migrationStatus": "EXCLUSIVE_LOGIN",
"adminGroupId": "my-external-group",
"adminsCanCreateOrgsInSubtree": false,
"adminsCanCreateProjectsInSubtree": false,
"allowedClusters": [
"westeurope-1",
"asia-northeast1-1"
]
}
]
}
'import requests
url = "https://auth.cognite.com/api/v1/orgs/{org}/orgs"
payload = { "items": [
{
"id": "my-org",
"idp": {
"idpVendor": "AZURE_AD",
"issuer": "https://login.microsoftonline.com/some-tenant-id/v2.0"
},
"migrationStatus": "EXCLUSIVE_LOGIN",
"adminGroupId": "my-external-group",
"adminsCanCreateOrgsInSubtree": False,
"adminsCanCreateProjectsInSubtree": False,
"allowedClusters": ["westeurope-1", "asia-northeast1-1"]
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
id: 'my-org',
idp: {
idpVendor: 'AZURE_AD',
issuer: 'https://login.microsoftonline.com/some-tenant-id/v2.0'
},
migrationStatus: 'EXCLUSIVE_LOGIN',
adminGroupId: 'my-external-group',
adminsCanCreateOrgsInSubtree: false,
adminsCanCreateProjectsInSubtree: false,
allowedClusters: ['westeurope-1', 'asia-northeast1-1']
}
]
})
};
fetch('https://auth.cognite.com/api/v1/orgs/{org}/orgs', 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://auth.cognite.com/api/v1/orgs/{org}/orgs",
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([
'items' => [
[
'id' => 'my-org',
'idp' => [
'idpVendor' => 'AZURE_AD',
'issuer' => 'https://login.microsoftonline.com/some-tenant-id/v2.0'
],
'migrationStatus' => 'EXCLUSIVE_LOGIN',
'adminGroupId' => 'my-external-group',
'adminsCanCreateOrgsInSubtree' => false,
'adminsCanCreateProjectsInSubtree' => false,
'allowedClusters' => [
'westeurope-1',
'asia-northeast1-1'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"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://auth.cognite.com/api/v1/orgs/{org}/orgs"
payload := strings.NewReader("{\n \"items\": [\n {\n \"id\": \"my-org\",\n \"idp\": {\n \"idpVendor\": \"AZURE_AD\",\n \"issuer\": \"https://login.microsoftonline.com/some-tenant-id/v2.0\"\n },\n \"migrationStatus\": \"EXCLUSIVE_LOGIN\",\n \"adminGroupId\": \"my-external-group\",\n \"adminsCanCreateOrgsInSubtree\": false,\n \"adminsCanCreateProjectsInSubtree\": false,\n \"allowedClusters\": [\n \"westeurope-1\",\n \"asia-northeast1-1\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://auth.cognite.com/api/v1/orgs/{org}/orgs")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"id\": \"my-org\",\n \"idp\": {\n \"idpVendor\": \"AZURE_AD\",\n \"issuer\": \"https://login.microsoftonline.com/some-tenant-id/v2.0\"\n },\n \"migrationStatus\": \"EXCLUSIVE_LOGIN\",\n \"adminGroupId\": \"my-external-group\",\n \"adminsCanCreateOrgsInSubtree\": false,\n \"adminsCanCreateProjectsInSubtree\": false,\n \"allowedClusters\": [\n \"westeurope-1\",\n \"asia-northeast1-1\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://auth.cognite.com/api/v1/orgs/{org}/orgs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"id\": \"my-org\",\n \"idp\": {\n \"idpVendor\": \"AZURE_AD\",\n \"issuer\": \"https://login.microsoftonline.com/some-tenant-id/v2.0\"\n },\n \"migrationStatus\": \"EXCLUSIVE_LOGIN\",\n \"adminGroupId\": \"my-external-group\",\n \"adminsCanCreateOrgsInSubtree\": false,\n \"adminsCanCreateProjectsInSubtree\": false,\n \"allowedClusters\": [\n \"westeurope-1\",\n \"asia-northeast1-1\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "my-org",
"parentId": "my-org",
"idp": {
"idpVendor": "AZURE_AD",
"issuer": "https://login.microsoftonline.com/some-tenant-id/v2.0"
},
"adminsCanCreateOrgsInSubtree": false,
"adminsCanCreateProjectsInSubtree": false,
"allowedClusters": [
"westeurope-1",
"asia-northeast1-1"
],
"migrationStatus": "EXCLUSIVE_LOGIN",
"adminGroupId": "my-external-group",
"isDeleted": false,
"profilesEnabled": true
}
]
}Create an organization
Create a child organization under the specified organization.
Access control
Requires the caller to be an admin in the parent organization (i.e. the one on the path), or any of its ancestors.
In addition, the flag adminsCanCreateOrgsInSubtree must be set to true in that organization.
Example: Assume an organization hierarchy like: org-a -> org-b -> org-c.
To create a new organization under org-c, which means calling ‘POST /api/v1/orgs/org-c/orgs’, the caller must be an
admin in at least one of org-a, org-b, or org-c, and adminsCanCreateOrgsInSubtree must be true in that same organization.
POST
/
api
/
v1
/
orgs
/
{org}
/
orgs
Create an organization
curl --request POST \
--url https://auth.cognite.com/api/v1/orgs/{org}/orgs \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"id": "my-org",
"idp": {
"idpVendor": "AZURE_AD",
"issuer": "https://login.microsoftonline.com/some-tenant-id/v2.0"
},
"migrationStatus": "EXCLUSIVE_LOGIN",
"adminGroupId": "my-external-group",
"adminsCanCreateOrgsInSubtree": false,
"adminsCanCreateProjectsInSubtree": false,
"allowedClusters": [
"westeurope-1",
"asia-northeast1-1"
]
}
]
}
'import requests
url = "https://auth.cognite.com/api/v1/orgs/{org}/orgs"
payload = { "items": [
{
"id": "my-org",
"idp": {
"idpVendor": "AZURE_AD",
"issuer": "https://login.microsoftonline.com/some-tenant-id/v2.0"
},
"migrationStatus": "EXCLUSIVE_LOGIN",
"adminGroupId": "my-external-group",
"adminsCanCreateOrgsInSubtree": False,
"adminsCanCreateProjectsInSubtree": False,
"allowedClusters": ["westeurope-1", "asia-northeast1-1"]
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
id: 'my-org',
idp: {
idpVendor: 'AZURE_AD',
issuer: 'https://login.microsoftonline.com/some-tenant-id/v2.0'
},
migrationStatus: 'EXCLUSIVE_LOGIN',
adminGroupId: 'my-external-group',
adminsCanCreateOrgsInSubtree: false,
adminsCanCreateProjectsInSubtree: false,
allowedClusters: ['westeurope-1', 'asia-northeast1-1']
}
]
})
};
fetch('https://auth.cognite.com/api/v1/orgs/{org}/orgs', 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://auth.cognite.com/api/v1/orgs/{org}/orgs",
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([
'items' => [
[
'id' => 'my-org',
'idp' => [
'idpVendor' => 'AZURE_AD',
'issuer' => 'https://login.microsoftonline.com/some-tenant-id/v2.0'
],
'migrationStatus' => 'EXCLUSIVE_LOGIN',
'adminGroupId' => 'my-external-group',
'adminsCanCreateOrgsInSubtree' => false,
'adminsCanCreateProjectsInSubtree' => false,
'allowedClusters' => [
'westeurope-1',
'asia-northeast1-1'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"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://auth.cognite.com/api/v1/orgs/{org}/orgs"
payload := strings.NewReader("{\n \"items\": [\n {\n \"id\": \"my-org\",\n \"idp\": {\n \"idpVendor\": \"AZURE_AD\",\n \"issuer\": \"https://login.microsoftonline.com/some-tenant-id/v2.0\"\n },\n \"migrationStatus\": \"EXCLUSIVE_LOGIN\",\n \"adminGroupId\": \"my-external-group\",\n \"adminsCanCreateOrgsInSubtree\": false,\n \"adminsCanCreateProjectsInSubtree\": false,\n \"allowedClusters\": [\n \"westeurope-1\",\n \"asia-northeast1-1\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://auth.cognite.com/api/v1/orgs/{org}/orgs")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"id\": \"my-org\",\n \"idp\": {\n \"idpVendor\": \"AZURE_AD\",\n \"issuer\": \"https://login.microsoftonline.com/some-tenant-id/v2.0\"\n },\n \"migrationStatus\": \"EXCLUSIVE_LOGIN\",\n \"adminGroupId\": \"my-external-group\",\n \"adminsCanCreateOrgsInSubtree\": false,\n \"adminsCanCreateProjectsInSubtree\": false,\n \"allowedClusters\": [\n \"westeurope-1\",\n \"asia-northeast1-1\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://auth.cognite.com/api/v1/orgs/{org}/orgs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"id\": \"my-org\",\n \"idp\": {\n \"idpVendor\": \"AZURE_AD\",\n \"issuer\": \"https://login.microsoftonline.com/some-tenant-id/v2.0\"\n },\n \"migrationStatus\": \"EXCLUSIVE_LOGIN\",\n \"adminGroupId\": \"my-external-group\",\n \"adminsCanCreateOrgsInSubtree\": false,\n \"adminsCanCreateProjectsInSubtree\": false,\n \"allowedClusters\": [\n \"westeurope-1\",\n \"asia-northeast1-1\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "my-org",
"parentId": "my-org",
"idp": {
"idpVendor": "AZURE_AD",
"issuer": "https://login.microsoftonline.com/some-tenant-id/v2.0"
},
"adminsCanCreateOrgsInSubtree": false,
"adminsCanCreateProjectsInSubtree": false,
"allowedClusters": [
"westeurope-1",
"asia-northeast1-1"
],
"migrationStatus": "EXCLUSIVE_LOGIN",
"adminGroupId": "my-external-group",
"isDeleted": false,
"profilesEnabled": true
}
]
}Path Parameters
ID of an organization The ID of an organization
Required string length:
3 - 64Pattern:
^([a-z][a-z0-9-]{1,62}[a-z0-9])$Example:
"my-org"
Body
application/json
A request to create an organization.
Required array length:
1 elementShow child attributes
Show child attributes
Response
A successfully created organization
Required array length:
1 elementShow child attributes
Show child attributes
Last modified on August 21, 2026
⌘I