Update who can create agents in a space
curl --request PATCH \
--url https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Notion-Version: <notion-version>' \
--data '
{
"disable_existing_agents": true
}
'import requests
url = "https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy"
payload = { "disable_existing_agents": True }
headers = {
"Notion-Version": "<notion-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Notion-Version': '<notion-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({disable_existing_agents: true})
};
fetch('https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy', 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.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'disable_existing_agents' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Notion-Version: <notion-version>"
],
]);
$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.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy"
payload := strings.NewReader("{\n \"disable_existing_agents\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Notion-Version", "<notion-version>")
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.patch("https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy")
.header("Notion-Version", "<notion-version>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"disable_existing_agents\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Notion-Version"] = '<notion-version>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"disable_existing_agents\": true\n}"
response = http.request(request)
puts response.read_body{
"agent_counts": {
"active": 123,
"deleted": 123,
"disabled": 123
},
"current_policy": "<string>",
"current_policy_description": "<string>",
"space_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"space_name": "<string>"
}{
"type": "error",
"code": "validation_error",
"status": 400,
"message": "The request body is invalid."
}{
"type": "error",
"code": "unauthorized",
"status": 401,
"message": "Unauthorized."
}{
"type": "error",
"code": "forbidden",
"status": 403,
"message": "Forbidden."
}{
"type": "error",
"code": "not_found",
"status": 404,
"message": "Not found."
}{
"type": "error",
"code": "rate_limited",
"status": 429,
"message": "Rate limited."
}{
"type": "error",
"code": "internal_server_error",
"status": 500,
"message": "An unexpected error occurred."
}Agents
Update who can create agents in a space
Update who can create agents in a space.
PATCH
/
v1
/
spaces
/
{space_id}
/
agents
/
creation_policy
Update who can create agents in a space
curl --request PATCH \
--url https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Notion-Version: <notion-version>' \
--data '
{
"disable_existing_agents": true
}
'import requests
url = "https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy"
payload = { "disable_existing_agents": True }
headers = {
"Notion-Version": "<notion-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Notion-Version': '<notion-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({disable_existing_agents: true})
};
fetch('https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy', 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.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'disable_existing_agents' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Notion-Version: <notion-version>"
],
]);
$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.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy"
payload := strings.NewReader("{\n \"disable_existing_agents\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Notion-Version", "<notion-version>")
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.patch("https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy")
.header("Notion-Version", "<notion-version>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"disable_existing_agents\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.notion.com/admin/v1/spaces/{space_id}/agents/creation_policy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Notion-Version"] = '<notion-version>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"disable_existing_agents\": true\n}"
response = http.request(request)
puts response.read_body{
"agent_counts": {
"active": 123,
"deleted": 123,
"disabled": 123
},
"current_policy": "<string>",
"current_policy_description": "<string>",
"space_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"space_name": "<string>"
}{
"type": "error",
"code": "validation_error",
"status": 400,
"message": "The request body is invalid."
}{
"type": "error",
"code": "unauthorized",
"status": 401,
"message": "Unauthorized."
}{
"type": "error",
"code": "forbidden",
"status": 403,
"message": "Forbidden."
}{
"type": "error",
"code": "not_found",
"status": 404,
"message": "Not found."
}{
"type": "error",
"code": "rate_limited",
"status": 429,
"message": "Rate limited."
}{
"type": "error",
"code": "internal_server_error",
"status": 500,
"message": "An unexpected error occurred."
}The organization bot token must have the following scopes:
workflows:write
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
The Admin API version to use for this request.
Available options:
2026-06-01 Path Parameters
Body
application/json
Response
Show child attributes
Show child attributes
The policy now in effect, or 'null' when no explicit policy has ever been set for the workspace (which behaves as the "all_workspace_members" default).
Allowed value:
"all_workspace_members"⌘I