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