List projects
curl 'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/projects' \
-H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}'const options = {method: 'GET', headers: {'X-Access-Key': '<api-key>'}};
fetch('https://api.tenderly.co/api/v1/account/{accountSlug}/projects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tenderly.co/api/v1/account/{accountSlug}/projects"
headers = {"X-Access-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tenderly.co/api/v1/account/{accountSlug}/projects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"projects": [
{
"id": "d66fd37f-e2f8-46c3-b549-0160d60eec96",
"name": "Mainnet Monitoring",
"slug": "mainnet-monitoring",
"owner_id": "49309f73-1d60-48fc-94b3-120fd9982381",
"public": false,
"restricted": false,
"high_volume": false,
"in_transfer": false,
"is_module": false,
"created_at": "2026-09-07T16:12:22.895718Z",
"last_push_at": null,
"number_of_users": 1,
"options": null,
"owner": {
"id": "49309f73-1d60-48fc-94b3-120fd9982381",
"first_name": "",
"last_name": "",
"username": "acme",
"email": "",
"type": "organization"
},
"permissions": {
"add_contract": true,
"update_contract": true,
"remove_contract": true,
"create_alert": true,
"update_alert": true,
"remove_alert": true,
"create_and_update_analytics": true,
"manage_collaborators": true
}
}
]
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "bad_request",
"message": "Bad request input parameters"
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "unauthorized",
"message": "Unauthorized"
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "insufficient_permissions",
"message": "Insufficient permissions"
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "resource_not_found",
"message": "The resource you requested could not be found."
}
}{
"error": {
"id": "9a7bbe06-7f6f-4a45-8c78-8d64b9a9d0e1",
"slug": "too_many_requests",
"message": "API Rate limit exceeded."
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "internal_server_error",
"message": "Internal server error"
}
}Projects
List projects
Lists the account’s projects plus projects shared with the requester.
On an organization account the requester sees every project that is open to the organization and the restricted projects they are an explicit member of. The members list is populated for restricted projects only.
GET
/
v1
/
account
/
{accountSlug}
/
projects
List projects
curl 'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/projects' \
-H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}'const options = {method: 'GET', headers: {'X-Access-Key': '<api-key>'}};
fetch('https://api.tenderly.co/api/v1/account/{accountSlug}/projects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tenderly.co/api/v1/account/{accountSlug}/projects"
headers = {"X-Access-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tenderly.co/api/v1/account/{accountSlug}/projects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"projects": [
{
"id": "d66fd37f-e2f8-46c3-b549-0160d60eec96",
"name": "Mainnet Monitoring",
"slug": "mainnet-monitoring",
"owner_id": "49309f73-1d60-48fc-94b3-120fd9982381",
"public": false,
"restricted": false,
"high_volume": false,
"in_transfer": false,
"is_module": false,
"created_at": "2026-09-07T16:12:22.895718Z",
"last_push_at": null,
"number_of_users": 1,
"options": null,
"owner": {
"id": "49309f73-1d60-48fc-94b3-120fd9982381",
"first_name": "",
"last_name": "",
"username": "acme",
"email": "",
"type": "organization"
},
"permissions": {
"add_contract": true,
"update_contract": true,
"remove_contract": true,
"create_alert": true,
"update_alert": true,
"remove_alert": true,
"create_and_update_analytics": true,
"manage_collaborators": true
}
}
]
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "bad_request",
"message": "Bad request input parameters"
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "unauthorized",
"message": "Unauthorized"
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "insufficient_permissions",
"message": "Insufficient permissions"
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "resource_not_found",
"message": "The resource you requested could not be found."
}
}{
"error": {
"id": "9a7bbe06-7f6f-4a45-8c78-8d64b9a9d0e1",
"slug": "too_many_requests",
"message": "API Rate limit exceeded."
}
}{
"error": {
"id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
"slug": "internal_server_error",
"message": "Internal server error"
}
}Authorizations
ApiKeyAuthBearerAuth
An API key is a token that a client provides when making API calls. Send it as the X-Access-Key request header on any endpoint:
curl '<API_ENDPOINT>' \ -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \ ...
Learn how to generate API access tokens at Tenderly Docs.
Path Parameters
Account slug of the user
Response
A successful response.
Show child attributes
Show child attributes