Transloadit
Pricing
Log in
Sign up
EssentialsRobotsFAQAPIFormats
Getting started
  • Overview
  • My first App
  • Saving result files
Topics
  • Assembly Instructions
  • Assembly Variables
  • Dynamic Evaluation
  • Templates
  • Webhooks
  • Third party Credentials
  • Builtin Templates
  • Resize Strategies
  • Advanced use Parameter
  • Assembly Execution Progress
  • Workspaces
  • AI Agents
Software Development Kits
  • Overview
  • HTTP REST API
  • Android SDK
  • Browsers
  • Convex
  • cURL
  • Go SDK
  • Java SDK
  • jQuery SDK
  • MCP Server
  • Multipart Form
  • Node.js SDK
  • PHP SDK
  • Python SDK
  • Ruby SDK
  • Terraform
  • TransloaditKit
  • Zapier Integration
Community Projects
  • Overview

Convex

transloadit/convex

@transloadit/convex is a Convex component that makes Transloadit feel native. It signs upload options server-side, verifies webhooks, and stores results in Convex so your UI can update in real -time.

Install

npm i @transloadit/convex @uppy/core @uppy/transloadit

Setup

  1. Register the component:
// convex/convex.config.ts
import { defineApp } from 'convex/server'
import transloadit from '@transloadit/convex/convex.config'

const app = defineApp()
app.use(transloadit)

export default app
  1. Set environment variables:
npx convex env set TRANSLOADIT_KEY <your_auth_key>
npx convex env set TRANSLOADIT_SECRET <your_auth_secret>
  1. Create actions with makeTransloaditAPI:
// convex/transloadit.ts
import { makeTransloaditAPI } from '@transloadit/convex'
import { components } from './_generated/api'

export const { createAssemblyOptions, queueWebhook, listResults } = makeTransloaditAPI(
  components.transloadit,
)

Uppy client

Use Uppy with assemblyOptions() from Convex so secrets never reach the browser:

import Uppy from '@uppy/core'
import Transloadit from '@uppy/transloadit'
import { api } from '../convex/_generated/api'

const uppy = new Uppy().use(Transloadit, {
  waitForEncoding: true,
  assemblyOptions: async () => {
    const { assemblyOptions } = await runAction(api.transloadit.createAssemblyOptions, {
      steps: {
        resized: {
          use: ':original',
          robot: '/image/resize',
          width: 800,
        },
      },
    })

    return assemblyOptions
  },
})

Demo app

See the end-to-end wedding gallery demo at convex-demo.transload.it and the full source in the GitHub repo.

← BrowserscURL →
Transloadit
© 2009–2026 Transloadit-II GmbH
Privacy⋅Terms⋅Imprint

Product

  • Services
  • Pricing
  • Demos
  • Security
  • Support

Company

  • About / Press
  • Blog / Jobs
  • Comparisons
  • Open source
  • Solutions

Docs

  • Getting started
  • Transcoding
  • FAQ
  • API
  • Supported formats

More

  • Platform status
  • Community forum
  • StackOverflow
  • Uppy
  • Tus