# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api POST /v1/organizations/<organizationId>/children \
--body '<request-json>'Create a child organization (<organizationId>).
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children"
payload = {
"name": "<string>",
"slug": "<string>",
"domains": ["<string>"],
"allowProfilesOutsideOrganization": True
}
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({
name: '<string>',
slug: '<string>',
domains: ['<string>'],
allowProfilesOutsideOrganization: true
})
};
fetch('https://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children', 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://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children",
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([
'name' => '<string>',
'slug' => '<string>',
'domains' => [
'<string>'
],
'allowProfilesOutsideOrganization' => true
]),
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://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"domains\": [\n \"<string>\"\n ],\n \"allowProfilesOutsideOrganization\": true\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://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"domains\": [\n \"<string>\"\n ],\n \"allowProfilesOutsideOrganization\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children")
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 \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"domains\": [\n \"<string>\"\n ],\n \"allowProfilesOutsideOrganization\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"workosOrganizationId": "<string>",
"slug": "<string>",
"name": "<string>",
"logoUrl": "<string>",
"domains": [
"<string>"
],
"status": "<string>",
"allowProfilesOutsideOrganization": true,
"enableMinimalRequirements": true,
"bankPartnerRoutesEnabled": true,
"customerId": "<string>",
"metadata": {},
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z",
"slackChannelId": "<string>",
"slackOpsChannelId": "<string>",
"complianceEmail": "<string>"
}Create a child organization
Creates a one-level child under a top-level parent. Requires the child-organizations feature flag. Does not add the creator as a member.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api POST /v1/organizations/<organizationId>/children \
--body '<request-json>'Create a child organization (<organizationId>).
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children"
payload = {
"name": "<string>",
"slug": "<string>",
"domains": ["<string>"],
"allowProfilesOutsideOrganization": True
}
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({
name: '<string>',
slug: '<string>',
domains: ['<string>'],
allowProfilesOutsideOrganization: true
})
};
fetch('https://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children', 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://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children",
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([
'name' => '<string>',
'slug' => '<string>',
'domains' => [
'<string>'
],
'allowProfilesOutsideOrganization' => true
]),
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://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"domains\": [\n \"<string>\"\n ],\n \"allowProfilesOutsideOrganization\": true\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://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"domains\": [\n \"<string>\"\n ],\n \"allowProfilesOutsideOrganization\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/organizations/{organizationId}/children")
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 \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"domains\": [\n \"<string>\"\n ],\n \"allowProfilesOutsideOrganization\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"workosOrganizationId": "<string>",
"slug": "<string>",
"name": "<string>",
"logoUrl": "<string>",
"domains": [
"<string>"
],
"status": "<string>",
"allowProfilesOutsideOrganization": true,
"enableMinimalRequirements": true,
"bankPartnerRoutesEnabled": true,
"customerId": "<string>",
"metadata": {},
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z",
"slackChannelId": "<string>",
"slackOpsChannelId": "<string>",
"complianceEmail": "<string>"
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Path Parameters
Parent organization ID
Body
Response
Child organization created
Organization ID
WorkOS Organization ID
Organization slug
Organization name
Organization logo URL
Organization domains
Organization status
Allow profiles outside organization
Whether reduced individual verification requirements are enabled
Whether banking-partner route capabilities are enabled
Customer ID for the organization
Organization metadata
Show child attributes
Show child attributes
Organization creation date
"2026-01-15T10:00:00Z"
Organization last update date
"2026-01-15T10:00:00Z"
Slack channel ID bound to this organization
Slack channel ID for ops/compliance notifications. Falls back to slackChannelId when not set.
Email address for compliance communications
Was this page helpful?