Skip to main content

Trace Settings API

All endpoints verified working via curl. Document updated only after curl confirmation.

Base path: /api/v1/traces/settings. Team-scoped, single row per team, lazily created on first write (updatedAt is null until the team has ever written a value — reads before that return the default { capturePayloads: false, updatedAt: null }). GET allows any team member (requireAnyAuth); PUT requires owner or admin (requireRole('owner', 'admin')).


GET /api/v1/traces/settings

curl $ACRUXCORE_BASE_URL/traces/settings \
-H "Authorization: Bearer $ACRUXCORE_API_KEY"

Response (status 200) — before any write, lazy default:

{
"capturePayloads": false,
"updatedAt": null
}

PUT /api/v1/traces/settings

Requires owner/admin role. Toggles the team's default for whether trace payload bodies (inputs/outputs) get captured on ingest.

curl -X PUT $ACRUXCORE_BASE_URL/traces/settings \
-H "Authorization: Bearer $ACRUXCORE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"capturePayloads": true}'

Response (status 200):

{
"capturePayloads": true,
"updatedAt": "2026-07-12T04:22:15.921Z"
}

A subsequent GET reflects the same values. Emits a trace_settings_updated audit event on change.

Invalid body (status 400):

curl -X PUT $ACRUXCORE_BASE_URL/traces/settings \
-H "Authorization: Bearer $ACRUXCORE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"capturePayloads": "yes"}'

Response (status 400):

{
"error": {
"code": "VALIDATION_ERROR",
"message": "capturePayloads must be a boolean."
}
}