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
- Configure PII redaction: Redaction
- Configure safety rules: Guardrails
- Panel reference: Panel