On June 23, 2026, OpenAI added a Safety Usage Dashboard to the API platform at platform.openai.com/usage/safety. The dashboard shows blocked Responses API requests, organized by the safety_identifier values you send on each request.
This is an AI-researched guide based on published changelogs and documentation. ChatForest does not have hands-on access to these tools.
What the Safety Usage Dashboard does
When a Responses API request is blocked by OpenAI’s safety classifiers, the event now appears in the Safety dashboard tagged with whatever safety_identifier you passed on the request. That gives you a per-user view of safety blocks across your entire organization — without waiting for a violation email from OpenAI.
The dashboard is read-only and covers Responses API requests. It lives at platform.openai.com/usage/safety.
The prerequisite: passing safety_identifier on every request
The dashboard is only useful if you tag your requests. Without safety_identifier, blocked requests have no user attribution and the dashboard can’t tell you anything actionable.
Responses API (Python SDK):
response = client.responses.create(
model="gpt-5.5",
input="...",
safety_identifier="user_abc123"
)
Chat Completions API (Python SDK):
response = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "..."}],
safety_identifier="user_abc123"
)
Realtime API (WebSocket session credential):
OpenAI-Safety-Identifier: user_abc123
Pass this as an HTTP header when obtaining session credentials.
Best practice: Don’t send email addresses or usernames directly. Hash the identifier first — the value just needs to be stable across sessions for the same user, not human-readable. Use a keyed HMAC of your internal user ID.
Note: safety identifiers don’t carry over between APIs or sessions. A user blocked via Responses API is not automatically blocked in Chat Completions, and vice versa.
Enforcement escalation: what happens before you see the dashboard
The Safety Usage Dashboard gives you visibility into a system that was already running before the dashboard existed. Here’s how enforcement works:
| Stage | What happens |
|---|---|
| Request classification | Every GPT-5 request is classified into risk thresholds. Low-risk requests pass through normally. |
| Repeated high-risk hits | OpenAI sends a warning email to your organization. Requests still complete, but you’re on notice. |
| Sustained violations (~7 days) | Your organization loses GPT-5 access entirely until resolved. |
| High-confidence policy violation | The specific safety_identifier is permanently blocked. All future requests from that identifier receive an identifier_blocked error. |
The permanent block is the critical one: OpenAI currently cannot unblock individual safety identifiers. Once an identifier is blocked, that user cannot use your application’s OpenAI-backed features. You’d need to contact OpenAI support to discuss org-level access, and the underlying user account in your system is effectively banned from the AI features.
What to do when you see blocked requests in the dashboard
Step 1 — Map the identifier back to the user. Your safety_identifier values should be internally traceable. Look up who that hashed ID belongs to in your system.
Step 2 — Pull the request context. Review what prompts the user was sending around the time of the block. Your own request logs (not OpenAI’s) are the place to do this — OpenAI’s dashboard shows that a block happened, not the content that triggered it.
Step 3 — Decide your response. Options:
- Suspend the user from AI features in your system while you investigate
- Implement additional input filtering for that user before re-enabling
- Permanently revoke access if the violation was intentional abuse
Step 4 — Do not try to rotate identifiers. Giving a blocked user a new safety_identifier to circumvent the block violates OpenAI’s terms of service and could escalate enforcement to the entire organization.
Decision guide: should you implement safety_identifier?
| Situation | Recommendation |
|---|---|
| Single-user app (personal tool, internal script) | Skip it — one user means no attribution value; the dashboard won’t add anything. |
| Multi-tenant SaaS with untrusted input | Implement immediately. This is the key scenario the feature is designed for. |
| B2B app with vetted enterprise customers | Implement, but lower priority — vetted users generate fewer violations. |
| High-volume app where one bad actor could pull org access | High priority. The identifier lets OpenAI block the actor, not the org. |
The safety_identifier parameter costs nothing and adds no latency. The only reason to skip it is if your application is genuinely single-user.
Pairing with inline moderation (June 4)
Two safety features shipped within weeks of each other in June 2026:
-
Inline moderation scores (June 4): Add
moderation={"model": "omni-moderation-latest"}to a Responses API call, and the response includes flagged/score data for both input and output. Useful for soft-blocking, logging, or showing users a content warning before or after generation. -
Safety Usage Dashboard (June 23): Shows requests that OpenAI’s own classifiers actually blocked, tagged by safety_identifier. This is enforcement-layer data, not soft-flag data.
These operate at different levels. Inline moderation is a tool you run and act on yourself. The Safety Usage Dashboard shows what OpenAI’s enforcement system did regardless of your own moderation layer.
A full safety observability stack uses both: your own moderation layer (inline scores) to catch borderline content early, and the Safety Dashboard to see what made it past your layer and got blocked by OpenAI’s classifiers.
Limitations
- Responses API only: The dashboard covers Responses API blocked requests. Chat Completions blocks may not appear.
- Read-only, no export API: The dashboard is a UI-only view. There’s no documented API endpoint to programmatically retrieve blocked request data.
- No content included: The dashboard shows that a request was blocked, not what the request contained. You need your own request logging to see the content.
- No unblock via dashboard: Individual safety_identifier blocks are permanent and can only be addressed by contacting OpenAI support.
- Identifiers don’t cross APIs: A blocked Responses API identifier is not automatically blocked in Chat Completions or Realtime.
The bottom line
If you’re running a multi-tenant application on OpenAI’s Responses API, add safety_identifier to every request today — not because of the dashboard, but because it limits blast radius if one of your users triggers an enforcement action. The dashboard is the reward: instead of finding out about blocks via an email from OpenAI’s trust and safety team, you can see them as they happen and respond on your own timeline.