Custom storage destinations

Send generated images directly to your object storage

Connect your bucket once, then use the destination's ID in an image request. Keep generated images in your account, behind your CDN, and under your existing access and retention policies.

  • S3-compatible providers
  • Reusable destination IDs
  • Disable HCTI storage
An image request selects a saved storage destination and writes an image-ID-based file to the configured object storage bucket.

Image request

POST /v1/image

"url": "https://example.com"

"storage_destination_id":

"rK4mQ9xP"

Opaque ID from dashboard or list_storage_destinations

Stored

Production images

Your bucket · your account

Object key

images/9f6526a...60e89.png

Disable HCTI Storage

Keep the rendered image only in your storage destination.

Amazon S3Cloudflare R2Google Cloud StorageBackblaze B2Wasabi

Storage destinations

Write generated images directly to your bucket

Connect an object storage destination once and select it with the opaque ID from the dashboard or list_storage_destinations. HCTI writes the result to your bucket without sending storage credentials in the request.

  1. Connect your bucket

    Choose the provider, bucket, authentication method, and an optional object key prefix.

  2. Test the connection

    Verify that HCTI can reach the bucket and write an object before using it for image requests.

  3. Select it by ID

    Copy the opaque destination ID from the dashboard or obtain it with list_storage_destinations, then reference it without resending credentials.

Supported object storage

Connect Amazon S3, Cloudflare R2, Google Cloud Storage, and other S3-compatible providers

Use built-in configuration for supported providers or connect an S3-compatible HTTPS endpoint that HCTI can reach over the public internet.

Storage behavior

Choose whether HCTI retains the rendered file

Every storage destination writes the rendered image to your bucket. Turn on Disable HCTI Storage when HCTI should not retain or serve the image publicly.

Standard storage

Store the image in your bucket and HCTI

HCTI writes the image to your bucket and retains its hosted copy, so the usual HCTI image URL continues to work.

Disable HCTI Storage

Do not retain the rendered file in HCTI storage

HCTI still processes the render and retains its settings and metadata, but does not store the rendered file, cache it on the HCTI CDN, or provide a public HCTI image URL.

Example conversation using the HCTI MCP integration.
Example conversation
MCP connected with OAuth
  1. You: Create an S3 bucket to store my rendered HCTI images in.
  2. Assistant: Using AWS tools to create the bucket.
  3. Assistant: Using get_aws_storage_external_id from HCTI for your organization's external ID, then AWS tools to create the IAM role and trust policy.
  4. Assistant: Calling create_storage_destination. Write test passed. Storage destination created: rK4mQ9xP.
  5. You: Cool, use it for a new receipt template. Render two test images with sample data.
  6. Assistant: Using create_template with that destination, then create_templated_image for each sample receipt. I'll load the returned image URLs to render them into your bucket.

MCP integration

Manage storage with REST or MCP

Create, inspect, update, and delete storage destinations through your application or AI tools. Both interfaces enforce organization-scoped permissions and test write access before enabling a connection.

Read, create/update, and delete access can be granted separately. Responses never include secret access keys, and updates must explicitly retain or replace them. Render requests use the saved destination ID—not its credentials.

Custom storage requires a supported plan. The example also uses separately authorized AWS tools to create the bucket and IAM role.

Use cases

Use your existing bucket, CDN, and retention policies

Read the storage destination docs

Storage in your account

Write generated images to the bucket and cloud account your team already manages.

CDN and image processing

Use your existing CDN, lifecycle rules, access policies, and image transformations without copying files between systems.

S3-compatible providers

Connect Amazon S3, Cloudflare R2, Google Cloud Storage, or an S3-compatible HTTPS endpoint that HCTI can reach over the public internet.

Disable HCTI Storage

Enable this setting on a destination to prevent HCTI from retaining the rendered file for new images that use it; HCTI still retains image settings and metadata.

Use your own bucket

Send generated images directly to your object storage

Connect and test a storage destination once, then use its ID on every image request that should write there.

Related features

Learn about related options for image and PDF generation, storage, security, and team access.