Broken API functionality: Asset linking, Asset query, Files/search

Hey folks,

I am stumped by a number of different API calls which seem to not work as expected.
Trying to associate an asset with a campaign doesn’t work via the API:
[PUT] https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/assets/FORM/{formId}
always returns a validation error with message:

"Invalid asset id '{internalFormId}' for assetType 'FORM'"

We can see that the values are correct because the formId GUID is being resolved to an internal Id (a 12 digit number). This also applies to other assetTypes (eg FILE_MANAGER_FILE or EMAIL)
Then, when the asset is manually associated with the campaign via the UI, a call to retrieve all of the campaign assets yields zero results
[GET] https://api.hubapi.com/marketing/campaigns/2026-03/{campaignId}/assets/FORM

{
 "results": []
}

Similarly, this also applies to any other asset types.
Also, when attempting to return a list of files via the /search the response also yields no results:
[GET] https://api.hubapi.com/files/2026-03/files/search

{
 "results": []
}

We definitely have non-achived/non-hidden files uploaded, and fetching the file data explicitly with a known ID returns the information as expected:
[GET] https://api.hubapi.com/files/2026-03/files/{fileId}
Authentication is being performed with a service key

I have just tried creating a Legacy App and using the access token for the same requests, and they seem to succeed. I suppose we will just need to use this mode of authentication until the Service Key comes out of beta?

Hey @Sebbo,

Welcome to the Community!

Glad you were able to find a way around this. That said, you can find more on Service Keys here

I’d like to tag in some of our Top Contributors to see if they additional suggestions on top of what you’ve found already.

Hey @Josh, @Anton, @GRajput -- Do you have any suggestions for @Sebbo on this?

Thanks in advance!

Best,

Sam, Community Manager

Yep, cheers for the link - as mentioned, we can use the Legacy App as a means of authentication, but it does seem very misleading that there is no “function is not supported (yet?)” message when using service keys for the various calls… wondering if this is a known limitation and it is the features are intended to be added going forward, or are we just using the methods incorrectly?