Orshot Logo
OrshotDocs

S3 Compatible Storage

Store rendered files in your own S3 or Cloudflare R2 bucket

The Orshot S3 Compatible Storage integration allows you to store rendered files directly in your own Amazon S3 or Cloudflare R2 bucket. This gives you full control over your rendered content storage, enabling custom retention policies, access controls, and seamless integration with your existing cloud infrastructure.

Supported Providers

  • Amazon S3 - AWS Simple Storage Service
  • Cloudflare R2 - S3-compatible object storage by Cloudflare

Connecting S3 Storage

  1. Navigate to Workspace > Settings > Storage in your Orshot dashboard
  2. Click Connect next to S3 Compatible Storage
  3. Select your storage provider (AWS S3 or Cloudflare R2)
  4. Enter your credentials:
    • Endpoint: Your S3/R2 endpoint URL
    • Access Key ID: Your access key
    • Secret Access Key: Your secret key
    • Bucket Name: The bucket where files will be stored
    • Folder Path: Default folder for renders (defaults to renders)
  5. Click Test Connection to verify your credentials
  6. Click Connect to save the configuration

Getting Your Credentials

Amazon S3

  1. Go to AWS IAM Console
  2. Create a new IAM user or use an existing one
  3. Attach a policy with S3 permissions for your bucket:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}
  1. Generate access keys for the user
  2. Your endpoint will be: https://s3.{region}.amazonaws.com (e.g., https://s3.us-east-1.amazonaws.com)

Cloudflare R2

  1. Go to Cloudflare Dashboard > R2
  2. Create a bucket if you haven't already
  3. Go to Manage R2 API Tokens and create a new API token
  4. Copy the Access Key ID and Secret Access Key
  5. Your endpoint will be: https://{account_id}.r2.cloudflarestorage.com

Using S3 Storage in API Requests

If S3 storage is enabled on the Storage page, all your renders will automatically be uploaded to your S3 bucket — no need to add connections in your API request.

To explicitly control the upload or specify custom options, add the connections parameter to your render request:

{
  "templateId": 25,
  "modifications": {
    "headline": "Hello World"
  },
  "response": {
    "type": "url",
    "format": "png"
  },
  "connections": [
    {
      "type": "storage",
      "provider": "s3"
    }
  ]
}

Specifying a Custom Folder

Override the default folder by specifying a folder path:

{
  "connections": [
    {
      "type": "storage",
      "provider": "s3",
      "folder": "marketing/banners/2024"
    }
  ]
}

Custom File Names

Use response.fileName to set a custom name for the uploaded file:

{
  "templateId": 25,
  "modifications": { "headline": "Hello" },
  "response": {
    "type": "url",
    "format": "png",
    "fileName": "marketing-banner-001"
  },
  "connections": [
    {
      "type": "storage",
      "provider": "s3",
      "folder": "banners"
    }
  ]
}

API Response Examples

Successful Upload

{
  "data": {
    "content": "https://store.orshot.com/cloud/w-50/renders/images/abc123.png",
    "type": "url",
    "format": "png",
    "responseTime": "1.2s"
  },
  "connections": [
    {
      "type": "storage",
      "provider": "s3",
      "path": "renders/abc123.png",
      "status": "success"
    }
  ]
}

Multi-Page Upload

When rendering multi-page templates, each page is uploaded separately:

{
  "data": [
    {
      "page": 1,
      "content": "https://storage.orshot.com/cloud/w-50/renders/images/abc123.png"
    },
    {
      "page": 2,
      "content": "https://storage.orshot.com/cloud/w-50/renders/images/def456.png"
    }
  ],
  "format": "png",
  "type": "url",
  "responseTime": 3166.01,
  "totalPages": 2,
  "renderedPages": 2,
  "connections": [
    {
      "type": "storage",
      "provider": "s3",
      "path": [
        { "page": 1, "path": "renders/template_page_1.png" },
        { "page": 2, "path": "renders/template_page_2.png" }
      ],
      "status": "success"
    }
  ]
}

Upload Failed (with Warning)

Connection issues return warnings but don't block the render:

{
  "data": {
    "content": "https://store.orshot.com/cloud/w-50/renders/images/abc123.png",
    "type": "url",
    "format": "png",
    "responseTime": "1.2s"
  },
  "warnings": [
    {
      "title": "Failed to upload to S3: Access Denied",
      "details": ""
    }
  ],
  "connections": [
    {
      "type": "storage",
      "provider": "s3",
      "path": null,
      "status": "error",
      "error": "Access Denied"
    }
  ]
}

S3 Not Connected

{
  "data": {
    "content": "https://store.orshot.com/cloud/w-50/renders/images/abc123.png",
    "type": "url",
    "format": "png"
  },
  "warnings": [
    {
      "title": "S3 connection not found for this workspace",
      "details": ""
    }
  ]
}

Connection Parameters

ParameterTypeRequiredDescription
typestringYesMust be "storage"
providerstringYesMust be "s3"
folderstringNoCustom folder path. Uses default folder if not specified

Managing Your Connection

Enable/Disable Sync

You can temporarily pause S3 uploads without disconnecting:

  1. Go to Workspace > Settings > Storage
  2. Toggle the Active switch to enable or disable automatic uploads

Update Folder Path

To change the default folder where renders are stored:

  1. Go to Workspace > Settings > Storage
  2. Click the edit icon next to the folder path
  3. Enter the new folder path
  4. Click Save

Edit Credentials

If you need to update your S3 credentials:

  1. Go to Workspace > Settings > Storage
  2. Click Edit on your S3 connection
  3. Update the credentials
  4. Test the connection and save

Notes

  • Non-blocking: S3 upload failures won't block your render—you'll still get the image URL from Orshot's storage
  • Folder creation: Files are stored with the specified folder path as a prefix in the bucket
  • Supported formats: PNG, JPG, JPEG, WebP, PDF, MP4, GIF
  • Permissions: Ensure your credentials have PutObject and GetObject permissions on the bucket

Need Help?

  • Contact support at hi@orshot.com or use the chat button in your Orshot dashboard

On this page