Bulk operation/Upload file to Shopify: RequestTimeTooSkewed error

Topic summary

A user encounters a RequestTimeTooSkewed error when uploading a JSONL file to Shopify’s staged upload endpoint via curl on Windows 10. The error indicates the time difference between the request and server is too large.

Context:

  • The upload is part of a bulk operation using the GraphQL Admin API
  • The user first calls stagedUploadsCreate mutation to get upload parameters
  • These parameters (key, credentials, signature, date, etc.) are then used in a POST request to Google Cloud Storage

Solution provided:
Execute the two requests sequentially without significant delay between them:

  1. Call stagedUploadsCreate mutation
  2. Immediately upload the file using the returned parameters

The time-sensitive nature of the signed upload URL means any delay can cause the timestamp validation to fail. The issue appears resolved by minimizing the gap between obtaining credentials and performing the upload.

Summarized with AI on November 12. AI used: claude-sonnet-4-5-20250929.

I am trying to upload a file as part of a bulk operation with the GraphQL Admin API.

I invoked stagedUploadsCreate and the reponse provided the required values for the upload through the stagedMediaUploadTarget array.

The following curl invocation fails on Windows 10 while uploading a JSONL input file to Shopify with the request values provided by the response of the stagedUploadsCreate mutation:

curl --location --request POST ‘https://shopify-staged-uploads.storage.googleapis.com/’ --form ‘key=“REMOVED”’ --form ‘x-goog-credential=“REMOVED”’ --form ‘x-goog-algorithm=“GOOG4-RSA-SHA256”’ --form ‘x-goog-date=“20230515T011647Z”’ --form ‘x-goog-signature=“REMOVED”’ --form ‘policy=“REMOVED”’ --form ‘acl=“private”’ --form ‘Content-Type=“text/jsonl”’ --form ‘success_action_status=“201”’ --form [email removed]

The following response is received, instead of a response message with no error.

<?xml version='1.0' encoding='UTF-8'?>RequestTimeTooSkewedThe difference between the request time and the server's time is too large.2023-05-14T18:16:47-07:00

I had the same issue, before you make request to upload the file, you need to make request to stagedUploadsCreate mutation. This should happen in sequence, one after another. There should not be any big delay between these 2 requests.