Platform settings and logs
These endpoints let an administrator inspect and adjust how the Data service runs, and review its recent errors. They require an administrator account.
Settings are grouped by section (core application, authentication, embeddings, and so on). Each setting reports its current value, where that value comes from, and whether it can be changed without a restart. Settings that hold a secret — for example the encryption key used to protect stored connection credentials — 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 /admin/settings List platform settings
- PUT /admin/settings Update a platform setting
- GET /admin/logs/errors List error log entries
Paths are relative to /data-api
List platform settings
GET /data-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/data-api/admin/settings" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/data-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']}/data-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": "Embeddings",
"settings": [
{
"key": "EMBEDDING_MODEL_ID",
"group": "Embeddings",
"type": "string",
"description": "Embedding model id.",
"editable": true,
"requires_restart": false,
"source": "default",
"redacted": false,
"value": "qwen/qwen3-embedding-8b",
"override_value": null,
"override_pending": false
},
{
"key": "EMBEDDING_DIMS",
"group": "Embeddings",
"type": "integer",
"description": "Expected embedding vector dimensions.",
"editable": true,
"requires_restart": false,
"source": "default",
"redacted": false,
"value": 4096,
"override_value": null,
"override_pending": false
}
]
}
]
} Update a platform setting
PUT /data-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 allows to be changed at runtime can be set here; secret-valued and restart-only settings are read-only through this endpoint.
- 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 allows to be edited at runtime.
-
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 setting that can be edited at runtime, orvalueis not valid for the setting's type. - 403 The caller is not an administrator.
curl -X PUT "$VDF_BASE_URL/data-api/admin/settings" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "EMBEDDING_MODEL_ID",
"value": "qwen/qwen3-embedding-8b"
}' const response = await fetch(`${process.env.VDF_BASE_URL}/data-api/admin/settings`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
key: 'EMBEDDING_MODEL_ID',
value: 'qwen/qwen3-embedding-8b',
}),
});
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']}/data-api/admin/settings",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
json={
"key": "EMBEDDING_MODEL_ID",
"value": "qwen/qwen3-embedding-8b",
},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"service": "data",
"key": "EMBEDDING_MODEL_ID"
} List error log entries
GET /data-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/data-api/admin/logs/errors?level=ERROR&limit=50" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/data-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']}/data-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.routes",
"message": "Connection test failed: host unreachable"
}
],
"total": 1,
"page": 1,
"limit": 50,
"pages": 1
}