Helix API Undocumented 404

Howdy! To be brief I’ve been working with the Twitch API (Specifically endpoints on api.twitch.tv/helix) and for some reason a number of calls give an undocumented 404.

I ran my OAuth through id.twitch.tv/oauth2/validate and it came out as valid with the proper ClientID.

Example call:

GET https://api.twitch.tv/helix/users?id=<userID>

Headers (OAuth):

Client-Id: <ClientID>
Authorization: <Token>

Both the ClientID and Token are valid, the userID is also valid.
I compared it to Reference | Twitch Developers and I think I did it exactly as per documentation.
It is possible that I am missing something but I remember this call functioning properly as of a month ago.

At the present moment this calls response body is:

{
    "error": "Not Found",
    "status": 404,
    "message": ""
}

Some things that might be important to note:

  • I am making these API calls via Postman
  • My postman is up to date and I have reproduced the 404 via JS
  • input parameters (id vs login) have no impact on 404 outcome
  • I have tried refreshing and invalidating my token and getting a new one but the 404 persists

Is there something I’m missing // is there some dumb mistake I’ve made that I’m too blind to see or is the helix API giving an undocumented 404 for no reason?

Hm, from what you’re posting, it all looks good and i can’t reproduce any 404 on the URL you posted.

Without seeing any further code (Feel free to share it!) I would have to blindly guess that you may be accidentally trying to call https://api.twitch.tv/helix/user instead of https://api.twitch.tv/helix/users - which would result in a 404.

To add this this:

404 is “route not found”, it’s not documented as it’s "standard across the whole API and only occurs if incorrectly calling the API. It’s not a valid HTTP response code when calling correctly".

Either using the wrong HTTP Verb, or a typo, or something isn’t calling what you think it’s calling. Network tools for the browser in JS will help debug what and how you are actually calling.

A token problem would be a 403.

404 - route it’s just not there, generally user error.
403 - a token problem
400 - input error (you got words in your id generally)
200 - got data, it may or may not contain users

If everything is correct, there could be an issue based on region if fast.ly is being dumb, often a problem for south american users. You can debug this from making your call via another region such as your production server in a different region