Platform settings and logs
These endpoints let an administrator inspect and adjust how the Agent Hub service runs, and review its recent errors. They require an administrator account.
Settings are grouped by section (core application, execution and logging, model routing, email, and so on). Each setting reports its current value, where that value comes from, and whether changing it takes effect immediately or only after the service restarts. Settings that hold a secret — for example the SMTP password or a model-provider API key — are returned with their value redacted; the response reveals only whether a value is set, never the secret itself.
Administrator access. Every endpoint on this page requires an administrator account.
- GET /api/admin/settings List platform settings
- PUT /api/admin/settings Update a platform setting
- GET /api/admin/logs/errors List error log entries
Paths are relative to /agent-hub-api
List platform settings
GET /agent-hub-api/api/admin/settings
Returns the runtime configuration, grouped by section.
Returns every setting the service recognises, grouped by section. For each setting the response gives its key, type, a human description, the effective value, the source of that value (environment, db_override, or default), whether it is editable at runtime, and whether a change requires_restart. Settings that hold a secret are marked redacted and their value is returned as [REDACTED].
- Authentication
- Bearer token How it works
- Permission
- Requires an administrator account.
Parameters
No parameters.
Returns
Returns the grouped settings payload.
Errors
- 403 The caller is not an administrator.
curl "$VDF_BASE_URL/agent-hub-api/api/admin/settings" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/agent-hub-api/api/admin/settings`, {
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
},
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.get(
f"{os.environ['VDF_BASE_URL']}/agent-hub-api/api/admin/settings",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"environment": "production",
"fetched_at": "2026-09-01T09:30:00+00:00",
"groups": [
{
"name": "Execution & Logging",
"settings": [
{
"key": "LOG_LEVEL",
"group": "Execution & Logging",
"type": "string",
"description": "Application log level.",
"editable": true,
"requires_restart": true,
"source": "environment",
"redacted": false,
"value": "INFO",
"override_value": null,
"override_pending": false
},
{
"key": "MAX_TOOL_ROUNDS",
"group": "Execution & Logging",
"type": "integer",
"description": "Maximum tool rounds per run.",
"editable": true,
"requires_restart": true,
"source": "default",
"redacted": false,
"value": 5,
"override_value": null,
"override_pending": false
}
]
}
]
} Update a platform setting
PUT /agent-hub-api/api/admin/settings
Sets or clears a single platform setting.
Changes one setting, identified by key. Send the new value, or an empty value to clear the override and return the setting to its built-in default. Only settings the service marks editable can be changed; a setting marked as requiring a restart is stored but does not take effect until the service restarts.
Do not send the [REDACTED] placeholder as a value: it is stored literally rather than being treated as "leave the secret unchanged". To keep a secret, omit it from the request.
- Authentication
- Bearer token How it works
- Permission
- Requires an administrator account.
Body parameters application/json
-
keystring RequiredThe setting to change. Must be one the service recognises and allows to be edited.
-
valuestringThe new value. An empty value clears the override and restores the built-in default.
Returns
Returns a success marker and the key that changed.
Errors
- 400
keyis missing, is not a recognised editable setting, orvalueis not valid for the setting's type. - 403 The caller is not an administrator.
curl -X PUT "$VDF_BASE_URL/agent-hub-api/api/admin/settings" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "LOG_LEVEL",
"value": "DEBUG"
}' const response = await fetch(`${process.env.VDF_BASE_URL}/agent-hub-api/api/admin/settings`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
key: 'LOG_LEVEL',
value: 'DEBUG',
}),
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.put(
f"{os.environ['VDF_BASE_URL']}/agent-hub-api/api/admin/settings",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
json={
"key": "LOG_LEVEL",
"value": "DEBUG",
},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"service": "agenthub",
"key": "LOG_LEVEL"
} List error log entries
GET /agent-hub-api/api/admin/logs/errors
Returns recent error and warning log entries, with paging and filters.
Returns the service's recent error and warning log entries, newest first. Only ERROR and WARNING lines are returned, and each entry's message is truncated. By default only the last seven days are searched; pass date_from to widen the window.
- Authentication
- Bearer token How it works
- Permission
- Requires an administrator account.
Query parameters
-
pageintegerPage number, starting at 1.
-
limitintegerEntries per page, capped at 100.
-
levelstringReturn only entries at this level.
Possible values-
ERROR -
WARNING
-
-
date_fromstringEarliest date to include, as
YYYY-MM-DD. Defaults to seven days ago. -
date_tostringLatest date to include, as
YYYY-MM-DD. -
searchstringReturn only entries whose message contains this text.
-
logger_namestringReturn only entries from loggers whose name contains this text.
Returns
Returns the matching log entries and paging information.
Errors
- 403 The caller is not an administrator.
- 500 The log could not be read.
curl "$VDF_BASE_URL/agent-hub-api/api/admin/logs/errors?level=ERROR&limit=50" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/agent-hub-api/api/admin/logs/errors?level=ERROR&limit=50`, {
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
},
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.get(
f"{os.environ['VDF_BASE_URL']}/agent-hub-api/api/admin/logs/errors",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
params={
"level": "ERROR",
"limit": 50,
},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"logs": [
{
"timestamp": "2026-09-01 09:30:00,123",
"level": "ERROR",
"logger_name": "app.services.agent_service",
"message": "Agent run failed: model provider timed out"
}
],
"total": 1,
"page": 1,
"limit": 50,
"pages": 1
}