Toolbox-service endpoint "Invalid authentication data provided"

EDIT: I realized that this endpoint is not listed under the Open Cloud v2 category on the docs so perhaps it isn’t supported. I find it strange though since I would assume that endpoints showing the necessary scopes are accessible.

On that note, the documentation for the web endpoints could use serious improvement. It is difficult to find what is and isn’t supported with the new open cloud. And as someone who is attempting to build an app using these APIs, I would appreciate a separate home for updated (/non legacy) endpoints so it is easy to view the reference for all the endpoints without needing to sort everything and double check if I am in the v2 section, legacy section, etc.

I am using the required scope as per docs (creator-store-product:read).

Authentication is being done correctly. Running the exact same request structure with the user.advanced:read scope, calling /users/id returns the idVerified field which is a restricted field that would only show up if proper auth is provided.

I am attempting to use the toolbox service endpoint but it keeps returning a 403 error.

Making GET request to: https://apis.roblox.com/toolbox-service/v2/assets:search?searchCategoryType=Plugin&query=Interface&userId=1175129163

Final headers being sent:

{
  "Content-Type": "application/json",
  "Authorization": "Bearer eyJ..."
}

Response status: 403

Response headers:

{
  "content-length": "73",
  "content-type": "application/json",
  "date": "Wed, 25 Jun 2025 05:53:38 GMT",
  "nel": "{\"report_to\":\"network-errors\",\"max_age\":604800,\"success_fraction\":0.001,\"failure_fraction\":1}",
  "report-to": "{\"group\":\"network-errors\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://ncs.roblox.com/upload\"}]}",
  "server": "public-gateway",
  "strict-transport-security": "max-age=3600",
  "vary": "Origin",
  "x-envoy-upstream-service-time": "19",
  "x-ingress-proxy": "true",
  "x-roblox-edge": "lga2",
  "x-terms-message": "Terms apply https://rblx.co/TOU."
}

response body:

{"errors":[{"message":"Invalid authentication data provided","code":0}]}

Additionally, when I run this in a browser while signed in to Roblox I do not have any issues with it

Hey factor!

Are you trying to call this endpoint with API key authentication? If so, that would use the x-api-key header as documented in Manage API keys | Documentation - Roblox Creator Hub instead of the Authorization header. If you are trying to call with OAuth 2.0 authentication - unfortunately this endpoint does not support OAuth 2.0 authentication yet.

I’ve noted the unclear error message internally as something to fix, as well as the fact that the Open Cloud documentation doesn’t show which authentication types are supported for each endpoint.

1 Like

Okay got it, thanks. Yeah - auth types are not super clear. I was operating under the assumption that if the required scope is supported by OAuth then I would be able to use that. Appreciate that getting cleared up.

Any plans to support this for OAuth in the future?

Also in regards to this, there are a few endpoints which show that x-api-key is the required header when the bearer auth works too.

1 Like

Also with support - all APIs not referred to as “Legacy APIs” in the documentation are officially supported on Open Cloud :slight_smile: .

Regarding your documentation feedback, as you scroll through the “Feature” pages (e.g. Users | Documentation - Roblox Creator Hub), the headers on the side will indicate whether you are in the “Legacy” or “Open Cloud” section. Is that sufficient for viewing the references?

Definitely fine as is, not a pressing concern. For my use case where I am specifically using the Open Cloud section, as I’m flipping through all the endpoints, it would be convenient to just be able to see it all there (kind of like a global filter where I can choose to have it only show Open Cloud or vice-versa).

Got it, will document this feedback internally as well. Thanks!

Some more details on what I am referring to here:

Also in regards to this, there are a few endpoints which show that x-api-key is the required header when the bearer auth works too.

The user and group endpoints in the docs all show x-api-key but it accepts bearer too