Skip to content

Audit Trail

Obstruo logs every request that passes through the gateway. The audit trail gives you a complete, immutable record of what was sent to which model, what was redacted, whether a guardrail fired, how long the call took, and what it cost.

Viewing the audit log

Go to Observability โ†’ Audit log in the panel. Each row represents a single request and shows:

Column Description
Time When the request arrived at the gateway
Request Unique request ID - searchable in the log
Client Client IP or identifier
Key ยท Project Which ObstruoKey and project processed the request
Model The logical model name your application used
Tokens Prompt + completion token counts
Latency End-to-end response time
Status HTTP status code
PII Redaction state: no PII, redacted, disabled, or audit-only

Click any row to see the full request detail, including which entity types were detected (PII values are never stored).

Monitoring dashboard

Go to Observability โ†’ Monitoring for real-time system performance:

  • RPS - requests per second
  • P95 - 95th percentile latency in milliseconds
  • Error rate - percentage of failed requests
  • Burn rate - estimated spend per hour

The Provider health table shows status, RPM, and success rate per upstream provider. A live request stream shows incoming calls in real time with model, latency, and HTTP status.

Safety panel

Go to Observability โ†’ Safety for a security-focused view:

  • Attack attempts - prompt injection and policy violation attempts in the last 24h
  • Block rate - percentage of attempts blocked
  • Critical open - unresolved high-severity incidents
  • False-positive rate - across active guardrails

The Top attack techniques table shows which categories are firing most (e.g. Instruction override, Credential egress, Persona / DAN). Recent incidents lists individual events with severity, technique, rule that fired, and risk score.

Correlating with your application logs

The id field of an API response (e.g. chatcmpl-abc123) is the upstream provider's completion id, passed through unchanged - it is not the Obstruo request ID and cannot be used to look up an Audit log entry. Audit entries are keyed by an internal request ID (req_...) that is currently not exposed on the response.

To correlate an application-side event with its audit entry, log the request timestamp on your side and match on time + ObstruoKey + model + status in the Audit log - for typical traffic volumes this identifies the request unambiguously:

import datetime

sent_at = datetime.datetime.now(datetime.timezone.utc)
response = client.chat.completions.create(
    model="obstruo-chat",
    messages=[{"role": "user", "content": "Hello!"}],
)
# Log sent_at + the ObstruoKey name + model alongside your trace,
# then match the audit row on time / key / model / status.

Data retention

Audit logs are retained for 3 days on the Free plan. Upgrade to a paid plan for longer retention periods.

PII values are never stored - only the entity type labels (e.g. EMAIL_ADDRESS, PERSON).

Next steps