{"id":8354,"date":"2025-01-27T19:54:07","date_gmt":"2025-01-28T01:54:07","guid":{"rendered":"http:\/\/blakewhittle@me.com"},"modified":"2026-03-31T23:55:33","modified_gmt":"2026-04-01T04:55:33","password":"","slug":"using-the-s3-compatible-api","status":"publish","type":"docs","link":"https:\/\/infiniteuploads.com\/docs\/advanced-configuration\/using-the-s3-compatible-api\/","title":{"rendered":"Using the S3 Compatible API"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p>Infinite Uploads cloud storage has an API and credentials that are compatible with the S3 API protocol. This means it is often possible to configure many apps designed for managing files in S3 to use your Infinite Uploads cloud storage buckets. This can be a great way to manage your files in our cloud and use your storage for files outside of the normal WordPress media library! Note not all apps have a flexible enough configuration ability to be compatible with this, so your results may vary. We give a few examples in this document for some popular apps. Others will be configured in a similar manner.<\/p>\n\n\n\n<p>If you have a business level plan, you can access your S3 compatible credentials for each site via the <a href=\"https:\/\/infiniteuploads.com\/account\/sites\/\">Sites dashboard page<\/a> when logged in to our site. It appears like this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/620bea1939e5d05141b69f92\/file-ibDem8QL5r.png\" alt=\"\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"notes-\">Notes:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><strong>Important &ndash; Infinite Upload cloud storage is designed only for hosting public files as its main use case is for your website media. Any files in your cloud storage can be accessed via our CDN if the url is known or guessed.<\/strong><\/em><\/li>\n\n\n\n<li><em>Your API key is restricted to the specific path in your bucket. You can only perform S3 commands List\/Put\/Get\/Copy inside that path or you will get a permissions error. You cannot manage buckets.<\/em><\/li>\n\n\n\n<li><em>Our S3 Compatibility API only supports the most recent version of authentication known as the v4, or version 4. If your integration asks you to specify which version (typically v2 or v4), make sure you select v4 as the option.&nbsp;<\/em><\/li>\n\n\n\n<li><em>If your plan expires due to payment issues or is canceled your credentials for all sites will be reset and your will need to reconfigure any apps after enabling again. When you cancel, credentials will be read-only until your scheduled data deletion takes place.<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-following-examples-assume-you-have-these-connection-details-\">The following examples assume you have these connection details:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Endpoint URL<\/strong>: s3.us-west-000.backblazeb2.com<\/li>\n\n\n\n<li><strong>Bucket<\/strong>: iup-usa\/123\/xxxxxxxx\/<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"s3-browser\">S3 Browser<\/h2>\n\n\n\n<p><a href=\"https:\/\/s3browser.com\/\">S3 Browser<\/a> is a freeware Windows Client for any S3 compatible cloud services.<\/p>\n\n\n\n<p>S3 Browser can be configured with the Infinite Uploads S3 Compatible API by following the steps below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-1-\">Step 1:<\/h3>\n\n\n\n<p>On the Add New Accounts tab select the provider as <strong>S3 compatible Storage<\/strong> from the drop down menu. Provide all the necessary credentials such as Key ID, Application key, and the S3 endpoint.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/621012b068cd260cc2d3d0f6\/file-WzTwDs0Mll.png\" alt=\"\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-2-\">Step 2:<\/h3>\n\n\n\n<p>Click the &ldquo;Advanced S3-Compatible storage settings&rdquo; link at the bottom of the window and change the Signature Version to Signature V4.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/6210133c39e5d05141b6b8dd\/file-8JhKFc2yiu.png\" alt=\"\"><\/figure>\n\n\n\n<p>Close the window and proceed with adding the account.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-3-\">Step 3:<\/h3>\n\n\n\n<p>As your access keys do not have permission to list all files in the root of the bucket you have to manually add your bucket by clicking &ldquo;Buckets-&gt;Add External bucket&rdquo;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/620c186f2130e51694687a93\/file-9zzQo8DfIH.png\" alt=\"\"><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"winscp\">WinSCP<\/h2>\n\n\n\n<p><a href=\"https:\/\/winscp.net\/eng\/index.php\">WinSCP<\/a> is a free open source Windows tool that is a file transfer client for SFTP, FTP, WebDAV, SCP and S3. It allows users to transfer files between a local and a remote computer, including S3 compatible storage like Infinite Uploads.<\/p>\n\n\n\n<p>WinSCP can be configured with&nbsp;Infinite Uploads&nbsp;Cloud Storage by following the steps below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-1--69f0ac6f3444c\">Step 1:<\/h3>\n\n\n\n<p>Start WinSCP and you are automatically taken to the connection manager page.&nbsp;Click on New Site&nbsp;and then under File Protocol, select Amazon S3. Enter the S3 Endpoint URL <strong>without the &ldquo;https:\/\/&rdquo;<\/strong>,&nbsp;your Key as Access Key ID and Secret as Secret Access Key into the appropriate fields.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/62101ae368cd260cc2d3d11d\/file-n0FR0QtOEX.png\" alt=\"\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-2--69f0ac6f3444e\">Step 2:<\/h3>\n\n\n\n<p>You do not have permissions to browse the entire bucket so you will need to define your cloud storage directory as default. Under the Advanced popup, choose &ldquo;Environment-&gt;Directories&rdquo;, then paste your bucket path as provided starting with &ldquo;\/&rdquo;, like &ldquo;\/iup-usa\/123\/xxxxxxxx\/&rdquo;. Click ok to save then you can Login!.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/621019ef2130e51694689328\/file-0qLmIRe9Lu.png\" alt=\"\"><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cyberduck\">CyberDuck<\/h2>\n\n\n\n<p>Cyberduck is a freeware software that has compatibility with Infinite Uploads cloud storage.&nbsp;You can download&nbsp;Cyberduck from their webpage here: <a href=\"https:\/\/cyberduck.io\/\">https:\/\/cyberduck.io\/<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-1--69f0ac6f34450\">Step 1:<\/h3>\n\n\n\n<p>Open Cyberduck and then click the open connection icon.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/62101208025ca67522c7d0cc\/file-W2XkJwP4vi.png\" alt=\"\"><\/figure>\n\n\n\n<p>Click the drop-down field that reads, &ldquo;FTP (File Transfer Protocol)&rdquo; and select &ldquo;Amazon S3&rdquo;.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/621011b0d86136157d9a6196\/file-hnQPw4rkuB.png\" alt=\"\"><\/figure>\n\n\n\n<p>Enter the&nbsp;Endpoint <strong>without the &ldquo;https:\/\/&rdquo;<\/strong> in the &ldquo;Server&rdquo; field,&nbsp;your Key as Access Key ID and Secret as Secret Access Key into the appropriate fields.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-2--69f0ac6f34452\">Step 2:<\/h3>\n\n\n\n<p>By default it will list the buckets, but you do not have permissions to browse the entire bucket so you will need to jump to your cloud storage directory directly. Choose the &ldquo;Go-&gt;Go to directory&hellip;&rdquo; menu command, then paste your bucket path as provided starting with &ldquo;\/&rdquo;, like &ldquo;\/iup-usa\/123\/xxxxxxxx\/&rdquo;. Then click Go to load your cloud storage directory.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/d33v4339jhl8k0.cloudfront.net\/docs\/assets\/603853f6d8249c5a9dc5c158\/images\/620dd1f6025ca67522c7c355\/file-WYyWd8rvPs.png\" alt=\"\"><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aws-cli\">AWS CLI<\/h2>\n\n\n\n<p>Start by installing AWS CLI. You can do this by following the instructions <a href=\"https:\/\/aws.amazon.com\/cli\/\">here<\/a>.<\/p>\n\n\n\n<p>Confirm that it is installed by using&nbsp;&nbsp; <em>aws &ndash;version<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configuring-aws-cli-to-interface-with-your-infinite-uploads-account-\">Configuring AWS CLI to interface with your Infinite Uploads account:<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1:<\/h4>\n\n\n\n<p>Use the command&nbsp;&nbsp; <em>aws configure&nbsp;<\/em>to start the configuration process.<\/p>\n\n\n\n<p>You will be prompted with the following.<\/p>\n\n\n\n<p>AWS Access Key ID [None]:&nbsp;&nbsp; <em>Key<\/em><\/p>\n\n\n\n<p>AWS Secret Access Key [None]:&nbsp;&nbsp; <em>Secret<\/em><\/p>\n\n\n\n<p>Default region name [None]:&nbsp;&nbsp; <em>leave blank<\/em><\/p>\n\n\n\n<p>Default output format [None]:&nbsp;&nbsp; <em>leave blank<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2:<\/h4>\n\n\n\n<p>Configuration should be set now. You should be able to test the integration by attempting to list files your site bucket.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">aws s3 ls s3:\/\/iup-usa\/123\/xxxxxxxx\/ --endpoint-url=https:\/\/s3.us-west-000.backblazeb2.com\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"using-aws-cli-to-transfer-data-to-from-infinite-uploads\">Using AWS CLI to transfer data to\/from Infinite Uploads<\/h3>\n\n\n\n<p>Copy local directory to Infinite Uploads:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">aws s3 cp local_directory\/ s3:\/\/iup-usa\/123\/xxxxxxxx\/ --recursive --endpoint-url=https:\/\/s3.us-west-000.backblazeb2.com\n<\/pre>\n\n\n\n<p>Download files from Infinite Uploads:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">aws s3 cp s3:\/\/iup-usa\/123\/xxxxxxxx\/ local_directory --recursive --endpoint-url=https:\/\/s3.us-west-000.backblazeb2.com\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"creating-pre-signed-urls-from-aws-cli\">Creating pre-signed URLs from AWS CLI<\/h3>\n\n\n\n<p>Generating a pre-signed URL on a bucket that expires in 3600 seconds (default)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">aws s3 presign s3:\/\/iup-usa\/123\/xxxxxxxx\/ --endpoint-url=https:\/\/s3.us-west-000.backblazeb2.com\n<\/pre>\n\n\n\n<p>Generating a pre-signed URL on a folder in a bucket, that expires in 360 seconds<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">aws s3 presign s3:\/\/iup-usa\/123\/xxxxxxxx\/folder\/filename.png --expires-in 300 --endpoint-url=https:\/\/s3.us-west-000.backblazeb2.com\n<\/pre>\n\n\n\n<p>Note: Depending on how you are using the pre-signed URL, you may need to enclose it in quotes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"s5cmd\">s5cmd<\/h2>\n\n\n\n<p><a href=\"https:\/\/github.com\/peak\/s5cmd\">s5cmd<\/a> is a free open source tool that supports a wide range of object management tasks both for cloud storage services, and local filesystems. It also supports parallel tasking and multiple threads for very fast throughput.<\/p>\n\n\n\n<p>s5cmd can be configured with Infinite Uploads Cloud Storage by following the steps below.<\/p>\n\n\n\n<p>Step 1:<\/p>\n\n\n\n<p>Create a directory that will contain your credentials file.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir ~\/.aws\n<\/pre>\n\n\n\n<p>Step 2:<\/p>\n\n\n\n<p>Create your credentials file, and enter your Key and Secret in the format shown below.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vi ~\/.aws\/credentials\n<\/pre>\n\n\n\n<p>Enter the following information and then save and exit.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[default] aws_access_key_id = 9xxxxxxxxxxx00000000003 aws_secret_access_key = Kyyyyyyyyyyy00000g\n<\/pre>\n\n\n\n<p>Step 3:<\/p>\n\n\n\n<p>Example usage.<\/p>\n\n\n\n<p>Note: The endpoint URL must be specified on each command, or you can set up a system alias that includes it automatically.<\/p>\n\n\n\n<p>List contents of your bucket.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">s5cmd -endpoint-url https:\/\/s3.us-west-000.backblazeb2.com ls s3:\/\/iup-usa\/123\/xxxxxxxx\/\n<\/pre>\n\n\n\n<p>Copy a local file into a bucket.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">s5cmd -endpoint-url https:\/\/s3.us-west-000.backblazeb2.com cp my-pets2020.jpg s3:\/\/iup-usa\/123\/xxxxxxxx\/\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aws-php-sdk\">AWS PHP SDK<\/h2>\n\n\n\n<p>You can use the <a href=\"https:\/\/docs.aws.amazon.com\/sdk-for-php\/v3\/developer-guide\/s3-examples.html\" target=\"_blank\" rel=\"noreferrer noopener\">AWS SDK<\/a> for powerful interaction with our storage. Remember any *Bucket methods will not work, but most *Object methods will be compatible as long as it&rsquo;s limited to your assigned bucket path.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Include the SDK using the Composer autoloader\nrequire '&lt;path for&gt;\/vendor\/autoload.php';\n\nuse Aws\\S3\\S3Client;\n\n\/\/init client\n$s3Client = new S3Client([\n    'version'     =&gt; 'latest',\n    'region'      =&gt; 'us-west-000', \/\/use provided region\n    'endpoint' =&gt; 'https:\/\/s3.us-west-000.backblazeb2.com', \/\/use provided endpoint\n    'credentials' =&gt; [ \/\/use provided creds\n        'key'    =&gt; 'your-access-key',\n        'secret' =&gt; 'your-secret-key',\n    ],\n]);\n\n\/\/put an object\ntry {\n    $result = $s3Client-&gt;putObject([\n        'Bucket' =&gt; 'iup-usa\/123\/xxxxxxxx\/',\n        'Key' =&gt; 'new\/bucket-relative\/filename.png,\n        'SourceFile' =&gt; '\/local\/file\/path',\n    ]);\n} catch (S3Exception $e) {\n    echo $e-&gt;getMessage() . \"\\n\";\n}\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Infinite Uploads cloud storage has an API and credentials that are compatible with the S3 API protocol. This means it is often possible to configure many apps designed for managing files in S3 to use your Infinite Uploads cloud storage buckets. This can be a great way to manage your files in our cloud and [&hellip;]<\/p>\n","protected":false},"author":3787,"featured_media":0,"template":"","meta":{"_acf_changed":false,"wds_primary_doc_category":0,"wds_primary_doc_tag":0,"footnotes":""},"doc_category":[168],"doc_tag":[],"class_list":["post-8354","docs","type-docs","status-publish","hentry","doc_category-advanced-configuration"],"acf":[],"year_month":"2026-04","word_count":1308,"total_views":"2769","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"name":"Blake Whittle","author_nicename":"blakew","author_url":"https:\/\/infiniteuploads.com\/blog\/author\/blakew\/"},"doc_category_info":[{"term_name":"Advanced Configuration","term_url":"https:\/\/infiniteuploads.com\/docs-category\/advanced-configuration\/"}],"doc_tag_info":[],"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/docs\/8354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/users\/3787"}],"version-history":[{"count":0,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/docs\/8354\/revisions"}],"wp:attachment":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/media?parent=8354"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/doc_category?post=8354"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/doc_tag?post=8354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}