invalid_request
Docs version v1 (main)Nauthera is pre-1.0, in a design-partner program
A handler refused a request it could read but cannot act on (400).
Meaning
The request passed the schema check and a handler still refused it. The causes:
- a hosted sign-in UI call (
/v1/auth/*, or/orgs/{slug}/v1/auth/*) sent without a body, or a registration or emailed-link request without a usable email address; - an admin API call (
/v1/admin/*) that breaks a rule of its own, such as a create user body with both or neither ofpasswordandinvite, a blankusername, an audit filter that does not parse, or a list cursor that was altered or belongs to another sort or collection; - a consent or logout confirmation for an authorization or logout request the server cannot find or no longer accepts;
- on any route, middleware before the handler: one of
Authorization,DPoP,DPoP-Nonce,Cookie,Origin,Sec-Fetch-SiteorContent-Typerepeated.
Impact
The request did nothing. A user of the hosted sign-in UI sees an error on the form or an error page; it usually means the page and the server disagree, a stale tab, or a proxy that rewrote the request. For an admin-API caller or a client developer it is a bug in the caller. It is not expected in normal operation.
Diagnosis
- Read
detail: for a handler refusal it names the rule, such as "send exactly one of password and invite". - Look the
request_id(also inX-Request-ID) up on the admin dashboard's Troubleshooting page, or with therequest_idfilter ofGET /. A repeated header is recorded asv1/ admin/ orgs/ {slug}/ audit-events http.header.repeatedwith reasonrepeated_headerand the header's name inheader; a refused cursor namescursor_tampered,cursor_scope_mismatchorcursor_sort_mismatchas its cause. - For a repeated header, compare what the client sent with what reached the server:
a proxy that appends its own
CookieorAuthorizationline causes it.
Mitigation
- As a user: reload the sign-in page from the application and try again.
- As a client or admin-API developer: fix the request as
detailsays. Send each single-valued header once, start a list again without the cursor instead of editing one, and do not retry the same request unchanged. - As an operator: if every request through one proxy is refused for a repeated header, configure the proxy to replace the header rather than add a second one.
Escalation
Escalate when a request the documentation says is valid is refused, or when the
hosted sign-in UI shipped with the server triggers it on its own. Open an issue with
the request id, the detail, the endpoint and the server version
(nauthera-server version). Never attach tokens, cookies or passwords.
Problem code runbooks · Generated from internal/ in nauthera-server.