video upload using stagedUploadsCreate access denied error

Topic summary

A developer encountered an “AccessDenied” error when uploading files via Shopify’s stagedUploadsCreate GraphQL mutation. Despite receiving a signed URL from the mutation, the subsequent HTTP request failed with an XML error response.

Key troubleshooting points identified:

  • Successfully receiving a response from stagedUploadsCreate confirms the app has correct scopes
  • The “Access Denied” error during HTTP upload typically indicates issues with the access token or authorization header parameter
  • For Node.js implementations, using the useAuthenticatedFetch hook is recommended
  • The app requires write_files scope (not just generic read/write permissions)

Status: The issue appears related to authentication configuration rather than scope permissions, with specific guidance provided for proper authenticated request handling.

Summarized with AI on October 28. AI used: claude-sonnet-4-5-20250929.

Hey guys, i’m trying to upload a file using the graphql stagedUploadsCreate mutation. I get the signedUrl, then I fill the http request using the response shopify gives me.

However, I’m getting the error:
data: ‘<?xml version="1.0" encoding="UTF-8"?>\n’ +
AccessDeniedAccess DeniedKWFH2ZGPZNGY1QRKHKknUB/ek/4zi7cg0TjKf5luSJyFV4cLp5KLz4Zujyys61XHF3ZhwynkeullCtWIvaMUa/lrVyw=’

My “Shopify App” should have all the required access to upload files (read_permissions and write_permissions) any idea why It’s not working?

(The post is old but this might help someone.)

If you get a response from the stagedUploadsCreate mutation, your app must have the right scopes. But getting an “Access Denied” error when sending the HTTP request means that there’s a problem with your access token/ authorisation header parameter. If you’re using Nodejs, make sure to use the useAuthenticatedFetch hook.

See https://shopify.dev/apps/auth/basic-http#step-3-make-authenticated-requests

Make sure your app has “write_files” scopes.