ReluAutomate
Core concepts

Input & output files

How file data flows in and out of orders, presigned URLs, platform uploads, and external uploads.

Relu Automate supports two ways to get files in, and two ways to get files out.

Input files

Include an external_download_url per input file when creating the order. Relu downloads the file directly. Best for integrators whose files already live in S3, GCS, or similar.

"input_data": {
  "lower_jaw": {
    "external_download_url": "https://s3.amazonaws.com/.../lower.stl",
    "extension": ".stl"
  }
}

The URL must be publicly reachable (we don't support IP allowlists). Set the signed-URL expiry to at least 3 hours, ideally 24 hours — orders can queue before Relu downloads the file.

Option 2: upload to the platform

Get a presigned upload URL, upload your file, then reference the resulting file_id in the order.

POST /input-files
{ "name": "My upper IOS file", "extension": ".stl" }

You get back { file_id, upload_url }. PUT the file to upload_url, then reference file_id in the order.

Output files

By default, Relu stores outputs on the platform, where they remain available for download indefinitely. If you want them pushed elsewhere too, include external_upload_url per output in the order body:

"output_data": {
  "lower_jaw_model": { "external_upload_url": "https://.../upload" }
}

Relu PUTs the result to that URL when the order completes. The output also stays available through the platform, so you get both.

Download a stored output

GET /orders/{order_id}?include_output_download_urls=true includes a temporary download_url for each available output. If you already have an output file ID, request a fresh URL directly:

GET /output-files/{file_id}

This route requires read:output-files scope and order:view permission on the file's order. GET /output-files/{file_id}/content downloads the bytes and can convert mesh files with mesh_format=stl, ply, or obj.

The output-file create, update, upload, and delete routes are also listed in the API reference. They require the matching output-file scope and order:edit permission.

Input/output names differ per service

The keys under input_data and output_data (like lower_jaw, volume, lower_jaw_model) depend on the specific service and are always snake_case. The fastest way to get them is three-dots menu → View API Example on the service card in the platform UI, or call GET /services/{id}.

Which to use

  • Presigned URLs everywhere if you control your own storage, faster and no data-egress cost from Relu.
  • Platform uploads if you're prototyping or don't have storage set up.

On this page