Google · Schema

GenerateContentRequest

AdvertisingCloudDevelopersGooglePlatformSearchT1Agentic CommerceUniversal Commerce ProtocolAP2A2A

Properties

Name Type Description
contents array The content of the current conversation with the model
system_instruction object System instructions to guide model behavior
generationConfig object Configuration options for model generation
View JSON Schema on GitHub

JSON Schema

google-generate-content-request-schema.json Raw ↑
{
  "$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
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/google-generate-content-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.