List the roles granted on a tool
curl --request GET \
--url https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles', 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://app.crewai.com/api/v1/tools/{tool_id}/granted-roles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "4f6d0d9a-7b78-4c6a-b64f-2e2e3d2c8f9a",
"principal": {
"type": "User",
"id": "0d6b2f4e-3a1c-4e8f-9b7a-5c2d1e0f9a8b"
},
"role": {
"id": "4f6d0d9a-7b78-4c6a-b64f-2e2e3d2c8f9a",
"name": "Automation Reader",
"created_at": "2026-07-07T00:00:00Z",
"updated_at": "2026-07-07T00:00:00Z"
},
"scope": {
"type": "Tool",
"id": "17790c04-15ee-47b1-bac3-cbee04bb0708"
},
"created_at": "2026-07-07T00:00:00Z",
"updated_at": "2026-07-07T00:00:00Z"
}
]
}{
"errors": [
{
"type": "https://docs-platform.crewai.com/api/problems/unauthorized",
"code": "unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "Missing or invalid bearer token."
}
]
}{
"errors": [
{
"type": "https://docs-platform.crewai.com/api/problems/forbidden",
"code": "forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Role grants are not available for your organization."
}
]
}{
"errors": [
{
"type": "https://docs-platform.crewai.com/api/problems/not_found",
"code": "not_found",
"title": "Not found",
"status": 404,
"detail": "The requested resource could not be found."
}
]
}Tools
List the roles granted on a tool
Returns every role that gives access to this tool: each role granted on the tool itself, and each role granted across the organization that covers it, with the principal holding it. A principal holding several roles appears once per role.
scope tells the two apart: the tool for a role granted on it, or the Organization for an
inherited one, which is managed through that principal’s granted roles.
The authenticated service account must be able to read the tool, or hold the
organizations:manage_identity_and_access permission. A tool it can’t see, or one that can’t
be shared, is not found.
GET
/
api
/
v1
/
tools
/
{tool_id}
/
granted-roles
List the roles granted on a tool
curl --request GET \
--url https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles', 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://app.crewai.com/api/v1/tools/{tool_id}/granted-roles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.crewai.com/api/v1/tools/{tool_id}/granted-roles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "4f6d0d9a-7b78-4c6a-b64f-2e2e3d2c8f9a",
"principal": {
"type": "User",
"id": "0d6b2f4e-3a1c-4e8f-9b7a-5c2d1e0f9a8b"
},
"role": {
"id": "4f6d0d9a-7b78-4c6a-b64f-2e2e3d2c8f9a",
"name": "Automation Reader",
"created_at": "2026-07-07T00:00:00Z",
"updated_at": "2026-07-07T00:00:00Z"
},
"scope": {
"type": "Tool",
"id": "17790c04-15ee-47b1-bac3-cbee04bb0708"
},
"created_at": "2026-07-07T00:00:00Z",
"updated_at": "2026-07-07T00:00:00Z"
}
]
}{
"errors": [
{
"type": "https://docs-platform.crewai.com/api/problems/unauthorized",
"code": "unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "Missing or invalid bearer token."
}
]
}{
"errors": [
{
"type": "https://docs-platform.crewai.com/api/problems/forbidden",
"code": "forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Role grants are not available for your organization."
}
]
}{
"errors": [
{
"type": "https://docs-platform.crewai.com/api/problems/not_found",
"code": "not_found",
"title": "Not found",
"status": 404,
"detail": "The requested resource could not be found."
}
]
}