SignatureDoesNotMatch on S3 presigned URLs from local_upload (V4 API)

,

Hi all,

I’m building an integration with the Frame.io V4 API (OAuth Web App / Adobe IMS auth). Everything works fine up to file upload:

  1. POST /v4/accounts/{account_id}/folders/{folder_id}/files/local_upload with {name, file_size} → succeeds, returns upload_urls with one or more presigned S3 URLs.
  2. PUT the file bytes to that presigned URL → fails every time with AWS SignatureDoesNotMatch, even when strictly matching the SignedHeaders required by the signature (content-type, host, x-amz-acl, sent empty as the canonical request demands).

I isolated this with a clean curl request completely outside my app, reproducing the exact headers required by the signature — same error. Also reproduced via a real browser upload (multi-part, 11 parts). This suggests the presigned signature returned by the API doesn’t validate against AWS regardless of how the client constructs the request.

Frame.io support confirmed my Adobe ID / API auth is correctly set up and pointed me here since this is API-specific.

A few RequestIds from the AWS error responses, for reference:

  • 1SDVH32MHDMJK9M0
  • XXV95SF2JF8ZZV8F
  • PKK895VEYZH3K1ZP

Has anyone else hit this on local_upload, or found a workaround? Happy to share more details (minus account-specific info) if useful.

Thanks!