MergeAndSaveOnline Method Suddenly Failing with AmazonS3 Exception

Body:

Hello Aspose team,

We started experiencing an issue today (2025-09-04) when calling the Slides merge endpoint:

POST http://api.aspose.cloud/v3.0/slides/merge
Method: MergeAndSaveOnline
Product: Aspose.Slides
API Version: v3.0

The request returns a 400 error with the following details:

Error: MergeAndSaveOnline. Exception: AmazonS3 Storage exception:
The AWS Access Key Id you provided

Screenshots are attached showing the error details and request trace IDs.

A few important notes about our setup:

  • This has never happened before — today is the first time we’ve seen it.
  • We are using the default internal Aspose Cloud storage, not our own S3 bucket.
  • Other Slides API operations (e.g., /slides/1/jpeg) still work fine — only the merge endpoint is failing.

Can you please advise if something has changed on your side with the storage backend or if there is a new configuration required?

Thanks,

Request Trace Id (d8efa7ab-f4db-49c6-b935-70140827f806)

1 Like

@emhasb

Hello,

We’ve reviewed the MergeAndSaveOnline error you are receiving:

400 – MergeAndSaveOnline. Exception: AmazonS3 Storage exception:
The AWS Access Key Id you provided …

The message indicates that the internal Aspose Cloud storage (which is backed by Amazon S3) could not authenticate the request that the Slides Merge service uses to write the merged file.

What usually triggers this situation

Reason Why it matters
Temporary credential issue on Aspose side – a short‑lived problem with the S3 keys that back the default storage. The service is unable to write the output file, and the API returns a 400 with the S3 error.
Missing or incorrect storage parameter – the request is trying to write to a storage that isn’t configured (or the default storage has been disabled). The endpoint falls back to the internal storage and fails when it can’t locate valid credentials.
Corrupted request payload – an empty or malformed multipart body (e.g., the file part is missing). The service still attempts to create the output file and hits the storage layer before realizing the payload is invalid.

Since you mentioned that other Slides operations work fine, the most likely cause is a temporary issue with the internal storage credentials or a change in how the storage name is being passed.


Immediate steps you can take

  1. Retry the call – the problem is often transient.

    curl -X POST "https://api.aspose.cloud/v3.0/slides/merge" \
         -H "Authorization: Bearer <your_access_token>" \
         -F "files=@file1.pptx" \
         -F "files=@file2.pptx" \
         -F "outputPath=merged.pptx"
    

    If the request succeeds, the issue was a temporary credential glitch.

  2. Explicitly specify the default storage name (Aspose) in the query string (or body, depending on your SDK).

    POST https://api.aspose.cloud/v3.0/slides/merge?storage=Aspose
    

    This forces the API to use the known internal storage and eliminates ambiguity.

  3. Verify that the request body contains the file parts (or the document stream when you use the SDK).
    A missing file will still cause the service to try to write an empty result, leading to the same S3‑auth error.

  4. Check the access token – ensure it is still valid (not expired) and that the token’s scope includes Slides.
    You can generate a fresh token via the OAuth endpoint:

    POST https://api.aspose.cloud/connect/token
    
  5. If you are using a custom storage (your own S3 bucket) – double‑check that the bucket’s AccessKeyId and SecretKey are correct in the Aspose Cloud Dashboard.
    The error you posted, however, points to the default internal storage, so this step is only needed if you have overridden the storage name.


What to do if the problem persists

If the retry and explicit storage name do not resolve the error, please provide the following details so we can investigate further:

  1. Exact request (curl/SDK code) – include headers, query parameters, and multipart body (you can mask the files).
  2. Access token creation request (client‑id/client‑secret used).
  3. Timestamp of the failing request (UTC) and the Trace‑Id you already captured (d8efa7ab-f4db-49c6-b935-70140827f806).
  4. SDK version (if you are using one) or language/platform you are calling the API from.

You can attach a small sample file (≤ 1 MB) that reproduces the issue. Once we have those items we can look up the internal log for the given trace ID and provide a concrete fix.


Reference links


TL;DR

  • The error is caused by a temporary issue with the internal S3‑backed storage or a missing storage parameter.
  • Retry the request and add ?storage=Aspose to the URL.
  • If it still fails, send us the request details (code, token, trace‑id) so we can pinpoint the root cause.

We’re ready to help you get this resolved quickly—just let us know the additional information if the steps above don’t fix the problem.

Best regards,
Aspose Cloud Support

Follow-up:

Thanks for the quick response. Here’s the exact code we are using in Python with the official SDK (asposeslidescloud):

cfg = Configuration()
cfg.app_sid = settings.ASPOSE_CLIENT_ID
cfg.app_key = settings.ASPOSE_CLIENT_SECRET
api = SlidesApi(cfg)

files = [BytesIO(b) for b in pptx_blobs]
out_path = f"merge/{uuid4()}.pptx"

# This is the failing call
api.merge_and_save_online(out_path, files, None, storage)

downloaded = api.download_file(out_path, storage)

Key details:

  • Storage: we are not passing a custom storage name (so it should use the default internal Aspose storage).
  • Input: each file is a valid one-slide PPTX (we’ve verified).
  • Other endpoints: /slides/{id}/jpeg and download_file both work fine.
  • Trace-Id: d8efa7ab-f4db-49c6-b935-70140827f806

Since this worked fine until today, and no code changes were made on our side, it looks like something changed in how merge_and_save_online interacts with the default storage. Could you please confirm if there’s a regression in the backend?

@emhasb,
Thank you for reporting the issue. I have reproduced the exception when merging presentation files with the merge_and_save_online method. We apologize for any inconvenience caused.

We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): SLIDESCLOUD-2067

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

1 Like

Hi Andrey,

That link to buying paid support didn’t work for me. Can you refer to me another link? I’d be happy to buy support to get this working.

@emhasb,
The link works fine on my end. Alternatively, you can contact Paid Support on the Aspose.Purchase forum. My colleagues will assist you shortly.