List the roles granted on an LLM connection
curl --request GET \
--url https://app.crewai.com/api/v1/llm-connections/{llm_connection_id}/granted-roles \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.crewai.com/api/v1/llm-connections/{llm_connection_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/llm-connections/{llm_connection_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/llm-connections/{llm_connection_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/llm-connections/{llm_connection_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/llm-connections/{llm_connection_id}/granted-roles")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.crewai.com/api/v1/llm-connections/{llm_connection_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": "LLMConnection",
"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."
}
]
}LLM Connections
List the roles granted on an LLM connection
Returns every role that gives access to this llm connection: each role granted on the llm connection 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 llm connection 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 llm connection, or hold the
organizations:manage_identity_and_access permission. A llm connection it can’t see, or one that can’t
be shared, is not found.
GET
/
api
/
v1
/
llm-connections
/
{llm_connection_id}
/
granted-roles
List the roles granted on an LLM connection
curl --request GET \
--url https://app.crewai.com/api/v1/llm-connections/{llm_connection_id}/granted-roles \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.crewai.com/api/v1/llm-connections/{llm_connection_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/llm-connections/{llm_connection_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/llm-connections/{llm_connection_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/llm-connections/{llm_connection_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/llm-connections/{llm_connection_id}/granted-roles")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.crewai.com/api/v1/llm-connections/{llm_connection_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": "LLMConnection",
"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."
}
]
}