Storage Upload

Upload screenshots directly to your S3-compatible storage (AWS S3, Cloudflare R2, DigitalOcean Spaces, etc.) without downloading them first.

Quick Start

https://api.lambdashot.com/take?url=https://example.com&store=true&storage_path=screenshots/example.png&access_key=YOUR_KEY

Configuration

Configure your S3 credentials in the dashboard, or provide them per-request:

ParameterDescriptionRequired
storeEnable storage uploadYes
storage_pathS3 object key (file path)Yes
storage_bucketS3 bucket nameDashboard or request
storage_access_key_idAWS access key IDDashboard or request
storage_secret_access_keyAWS secret access keyDashboard or request
storage_endpointCustom S3 endpoint URLFor non-AWS storage
storage_return_locationReturn S3 URL in responseNo

Storage Classes

Control storage costs with the storage_class parameter:

  • standard — Default, frequently accessed
  • standard_ia — Infrequent access
  • onezone_ia — Single AZ, infrequent access
  • intelligent_tiering — Automatic tiering
  • glacier — Archive storage
  • deep_archive — Long-term archive

Access Control

Set storage_acl=public-read to make uploaded files publicly accessible. Default is private.

S3-Compatible Storage

Use the storage_endpoint parameter for non-AWS storage:

Cloudflare R2

&storage_endpoint=https://ACCOUNT_ID.r2.cloudflarestorage.com

DigitalOcean Spaces

&storage_endpoint=https://REGION.digitaloceanspaces.com

Backblaze B2

&storage_endpoint=https://s3.REGION.backblazeb2.com

Response

With storage_return_location=true and response_type=json:

{
  "store": {
    "location": "https://your-bucket.s3.amazonaws.com/screenshots/example.png"
  }
}

Async Upload

Combine with async=true to upload without waiting:

https://api.lambdashot.com/take?url=https://example.com&async=true&store=true&storage_path=example.png&webhook_url=https://yoursite.com/webhook&access_key=YOUR_KEY

Dynamic Paths

Use placeholders in storage_path:

  • {timestamp} — Unix timestamp
  • {date} — YYYY-MM-DD format
  • {uuid} — Random UUID
&storage_path=screenshots/{date}/{uuid}.png

Bucket Policy Example

Minimum IAM policy for S3 upload:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:PutObject"],
      "Resource": "arn:aws:s3:::your-bucket/*"
    }
  ]
}

Error Handling

Common storage errors:

  • invalid_storage_configuration — Check bucket region and endpoint
  • storage_access_denied — Verify credentials and IAM permissions
  • storage_returned_transient_error — Temporary S3 error, retry