Api

Module Configuration

Reference for the tina config options in nuxt.config.ts.

Every module option is set under the tina key:

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['nuxt-tina'],
  tina: {
    clientId: process.env.NUXT_TINA_CLIENT_ID,
    token: process.env.NUXT_TINA_TOKEN,
    branch: 'main',
    visualEditing: true,
    media: {
      publicFolder: 'public',
      mediaRoot: 'uploads',
      provider: 'tina',
    },
    enabled: true,
    debug: false,
  },
})

All options are optional. The module falls back to sane defaults, including reading credentials from the environment. See Installation & Setup for the env var list.

Options

OptionTypeDefaultDescription
clientIdstringNUXT_TINA_CLIENT_ID | TINA_CLIENT_ID env varYour Tina Cloud client ID.
tokenstringNUXT_TINA_TOKEN | TINA_TOKEN env varTina Cloud read-only token (kept server-side only).
branchstringNUXT_TINA_BRANCH | HEAD env var, else 'main'The Git branch content queries target.
tinaPathstring'tina'Where the Tina config folder lives, relative to the project root.
visualEditingbooleantrueEnables the client-side iframe postMessage bridge plugin.
media.publicFolderstring'public'The folder public web assets live in.
media.mediaRootstring'uploads'The subfolder uploaded images are stored under.
media.provider'tina' | 'cloudinary''tina'The media store backend. 'cloudinary' registers the /api/cloudinary/** route. See Media & Cloudinary.
enabledbooleantrueDisables the module entirely when false.
debugbooleanfalseLogs bridge activity to the browser console: connections, received messages, and messages dropped for failing the origin check.

Startup warnings

In development, the module checks for common misconfigurations and logs a warning when it finds one:

  • media.provider is 'cloudinary', but a required Cloudinary environment variable is missing.
  • tinaPath looks like an absolute path instead of a relative one.

These checks never run in production, so they can't add noise to your production logs.


Copyright © 2026