The question seems to imply the authentication failure is the fault of the client making the request. In that case, if I had to pick a code, I would probably choose to return 403 Forbidden.
RFC 7231 §6.5.3 describes the 403 code as follows:
The 403 (Forbidden) status code indicates that the server understood the request but refuses to authorize it. A server that wishes to make public why the request has been forbidden can describe that reason in the response payload (if any).
If authentication credentials were provided in the request, the server considers them insufficient to grant access. The client SHOULD NOT automatically repeat the request with the same credentials. The client MAY repeat the request with new or different credentials. However, a request might be forbidden for reasons unrelated to the credentials.
An origin server that wishes to "hide" the current existence of a forbidden target resource MAY instead respond with a status code of 404 (Not Found).
This status code is commonly used as a generic 'authentication failed' response and isn't likely to trigger any specific authentication mechanism, like 401 can compel a browser to show a username/password prompt. The specific reason why authentication failed can be described in the response body, either in a machine-readable form (e.g. JSON or XML), or as a human-readable document (e.g. HTML).
Code 400 isn't the worst possible choice here, but it's rather generic.
Proxy-Authenticate
header that contains information on how to authorize correctly.' What do you think should be put in it? RFC 7235 also says 'The client MAY repeat the request with a new or replaced Proxy-Authorization header field', so it looks like it's part of a very specific mechanism that doesn't apply to the asker's situation. – Scabbard