admin_reason_required
This code is raised on a non-customer surface (the /internal voice-runtime audience or telephony provider callbacks). It is excluded from the customer OpenAPI document and is registered here so an operator reading a log line has one place to look.
A mutating /admin call arrived with no reason, or one shorter than 8 characters. Every admin mutation carries the operator's reason into the AuditLogEntry, so an absent reason is a refusal rather than a null column - the row exists to be read by someone who was not there (18-admin-console.md §4).
Problem shape
Every non-2xx response is an RFC 9457 application/problem+json body. The type URI below is stable and machine-matchable, so branch on the final path segment (the code) and treat the status as redundant confirmation. See the error-handling guide.
{
"type": "https://docs.vocapable.com/errors/admin_reason_required",
"title": "…",
"status": 422,
"detail": "…",
"instance": "/v1/…"
}