{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/google/main/json-schema/google-generate-content-request-schema.json", "title": "GenerateContentRequest", "x-generated": "2026-10-03", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/google-audio-understanding-api-openapi.yml#/components/schemas/GenerateContentRequest", "type": "object", "required": [ "contents" ], "properties": { "contents": { "type": "array", "description": "The content of the current conversation with the model", "items": { "$ref": "#/$defs/Content" } }, "system_instruction": { "$ref": "#/$defs/Content", "description": "System instructions to guide model behavior" }, "generationConfig": { "$ref": "#/$defs/GenerationConfig", "description": "Configuration options for model generation" } }, "$defs": { "Content": { "type": "object", "properties": { "role": { "type": "string", "enum": [ "user", "model" ], "description": "The role of the content producer (optional for single-turn, required for multi-turn)" }, "parts": { "type": "array", "description": "Ordered parts that constitute a single message", "items": { "$ref": "#/$defs/Part" } } }, "required": [ "parts" ] }, "FileData": { "type": "object", "description": "Reference to a file uploaded via the File API or a YouTube URL", "properties": { "mime_type": { "type": "string", "description": "MIME type of the file (optional for YouTube URLs)" }, "file_uri": { "type": "string", "description": "URI of the file from File API or YouTube URL" } }, "required": [ "file_uri" ] }, "GenerationConfig": { "type": "object", "description": "Configuration options for model generation and outputs", "properties": { "stopSequences": { "type": "array", "description": "Set of character sequences that will stop output generation", "items": { "type": "string" }, "maxItems": 5 }, "temperature": { "type": "number", "format": "float", "description": "Controls randomness of output (default 1.0 for Gemini 3 models)", "minimum": 0.0, "maximum": 2.0, "default": 1.0 }, "topP": { "type": "number", "format": "float", "description": "Maximum cumulative probability of tokens to consider", "minimum": 0.0, "maximum": 1.0 }, "topK": { "type": "integer", "description": "Maximum number of tokens to consider", "minimum": 1 }, "maxOutputTokens": { "type": "integer", "description": "Maximum number of tokens to generate", "minimum": 1 }, "thinkingConfig": { "$ref": "#/$defs/ThinkingConfig", "description": "Configuration for thinking mode (Gemini 2.5 models)" }, "response_mime_type": { "type": "string", "description": "MIME type for structured output (e.g., application/json)", "enum": [ "text/plain", "application/json" ] }, "response_schema": { "type": "object", "description": "JSON schema for structured output format", "additionalProperties": true } } }, "InlineData": { "type": "object", "required": [ "mime_type", "data" ], "properties": { "mime_type": { "type": "string", "description": "MIME type of the data", "enum": [ "image/jpeg", "image/png", "image/webp", "video/mp4", "video/mpeg", "video/mov", "video/avi", "video/x-flv", "video/mpg", "video/webm", "video/wmv", "video/3gpp", "audio/wav", "audio/mp3", "audio/aiff", "audio/aac", "audio/ogg", "audio/flac", "application/pdf" ] }, "data": { "type": "string", "format": "byte", "description": "Base64 encoded data" } } }, "Part": { "type": "object", "description": "A part of the content, can be text, inline data, or file data", "oneOf": [ { "type": "object", "required": [ "text" ], "properties": { "text": { "type": "string", "description": "Text content" } } }, { "type": "object", "required": [ "inline_data" ], "properties": { "inline_data": { "$ref": "#/$defs/InlineData" } } }, { "type": "object", "required": [ "file_data" ], "properties": { "file_data": { "$ref": "#/$defs/FileData" }, "video_metadata": { "$ref": "#/$defs/VideoMetadata", "description": "Optional metadata for video processing (clipping, FPS)" } } } ] }, "ThinkingConfig": { "type": "object", "description": "Configuration for thinking mode in Gemini 2.5 models", "properties": { "thinkingBudget": { "type": "integer", "description": "Thinking budget, set to 0 to disable thinking", "minimum": 0, "default": null } } }, "VideoMetadata": { "type": "object", "description": "Metadata for customizing video processing", "properties": { "start_offset": { "type": "string", "description": "Start time offset for video clipping (format like \"1250s\")", "pattern": "^\\d+s$" }, "end_offset": { "type": "string", "description": "End time offset for video clipping (format like \"1570s\")", "pattern": "^\\d+s$" }, "fps": { "type": "number", "format": "float", "description": "Custom frame rate sampling (frames per second). Default is 1 FPS. Use <1 for long videos, >1 for rapidly changing visuals", "minimum": 0.1 } } } } }