Skip to content
Files SDK
Esc
navigateopen⌘Jpreview

TanStack Start

Mount the Files gateway in a TanStack Start server route. createRouteHandler returns { GET, POST, PUT } over the Web Request - Web-native, runs on every deploy target.

files-sdk/tanstack-start mounts a createFilesRouter in a TanStack Start server route. TanStack Start hands each method handler a Web Request on { request }, so — like files-sdk/nextcreateRouteHandler returns a { GET, POST, PUT } handlers object: GET serves downloads, POST the JSON verbs, and PUT the upload byte path. The handlers are Web-native, so the route runs on every TanStack Start deployment target.

import { createFileRoute } from "@tanstack/react-router";
import { createFiles } from "files-sdk";
import { s3 } from "files-sdk/s3";
import { createFilesRouter } from "files-sdk/api";
import { createRouteHandler } from "files-sdk/tanstack-start";

const router = createFilesRouter({
  files: createFiles({ adapter: s3({ bucket: "uploads" }) }),
  allowedOrigins: ["https://app.example.com"],
  authorize: async ({ req }) => {
    /* throw to deny, or return a per-user constraint — see /ui/server/authorization */
  },
});

export const Route = createFileRoute("/api/files")({
  server: { handlers: createRouteHandler(router) },
});

See the gateway options for the full configuration and the authorize model for locking it down.

Was this page helpful?