Thank you for your answer, after all day testing I found the issue:
The urequest library, which is used for the firmware, has an implementation that fails with the GoPro requests due to how it cleans the request body.
During the clean up process of the body its split content by if not l or l == b"\r\n":,
which probably is ok for most of the requests, but not too flexible or safe, but the GoPro use \n\n to split the Content-Type line from the actual body response.
So in order to fix the issue, I need to modify the urequests implementation, from:
if not l or l == b"\r\n":
if not l or l == b"\n" or l == b"\r\n":
with this change, everything works fine.
So my question is, it is possible to replace the urequests library included in the firmware with my fork/custom changes? I have seen how to load external libs, but I don't know the path for the urequest lib.