curl "https://app.runtm.com/api/cloud/secrets/resolved" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123"
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/secrets/resolved",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
)
data = response.json()
for secret in data["secrets"]:
print(f"{secret['name']} (source: {secret['source']})")
const response = await fetch(
"https://app.runtm.com/api/cloud/secrets/resolved",
{
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
}
);
const data = await response.json();
data.secrets.forEach((s) =>
console.log(`${s.name} (source: ${s.source})`)
);
{
"secrets": [
{
"name": "DATABASE_URL",
"source": "team"
},
{
"name": "OPENAI_API_KEY",
"source": "personal"
},
{
"name": "STRIPE_SECRET_KEY",
"source": "team"
},
{
"name": "GITHUB_TOKEN",
"source": "personal"
}
],
"count": 4
}
Secrets
Resolved Secrets
Get merged secret names from personal and team sources
GET
/
api
/
secrets
/
resolved
curl "https://app.runtm.com/api/cloud/secrets/resolved" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123"
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/secrets/resolved",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
)
data = response.json()
for secret in data["secrets"]:
print(f"{secret['name']} (source: {secret['source']})")
const response = await fetch(
"https://app.runtm.com/api/cloud/secrets/resolved",
{
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
}
);
const data = await response.json();
data.secrets.forEach((s) =>
console.log(`${s.name} (source: ${s.source})`)
);
{
"secrets": [
{
"name": "DATABASE_URL",
"source": "team"
},
{
"name": "OPENAI_API_KEY",
"source": "personal"
},
{
"name": "STRIPE_SECRET_KEY",
"source": "team"
},
{
"name": "GITHUB_TOKEN",
"source": "personal"
}
],
"count": 4
}
Returns the merged list of secret names from both personal and team sources with source indicators. When a secret exists in both personal and team scopes, team wins. Values are never returned.
Required scope:
secrets:read
Headers
string
required
Bearer token. Example:
Bearer runtm_xxxstring
Organization ID. When set, team secrets are included in resolution.
Response
array
Array of resolved secret entries with source information.
string
Secret name.
string
Where the secret comes from:
personal or team. When both exist, team takes precedence.integer
Total number of resolved secrets.
curl "https://app.runtm.com/api/cloud/secrets/resolved" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123"
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/secrets/resolved",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
)
data = response.json()
for secret in data["secrets"]:
print(f"{secret['name']} (source: {secret['source']})")
const response = await fetch(
"https://app.runtm.com/api/cloud/secrets/resolved",
{
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
}
);
const data = await response.json();
data.secrets.forEach((s) =>
console.log(`${s.name} (source: ${s.source})`)
);
{
"secrets": [
{
"name": "DATABASE_URL",
"source": "team"
},
{
"name": "OPENAI_API_KEY",
"source": "personal"
},
{
"name": "STRIPE_SECRET_KEY",
"source": "team"
},
{
"name": "GITHUB_TOKEN",
"source": "personal"
}
],
"count": 4
}