Hi team,
I’m currently using the generativelanguage.googleapis.com
API to list available models with the endpoint:
GET https://generativelanguage.googleapis.com/v1/models?key=MY_KEY
The response includes helpful basic fields like name
, version
, displayName
, inputTokenLimit
, outputTokenLimit
, and some generation parameters like temperature
, topP
, and topK
.
However, there is critical information missing that would really improve the developer experience and avoid runtime errors.
For example:
- There’s no knowledge cutoff field (important for knowing how “up-to-date” a model is).
- There’s no indication whether a model is a “thinking” model (focused on reasoning) or not.
- There’s no information about supported input types (text, image, video) or output types.
- There’s no status field to indicate if a model is
active
,deprecated
, ordisabled
.
Currently, deprecated models are still being returned in the model list, but trying to use them gives a 404 error like:
{
"error": {
"code": 404,
"message": "Gemini 1.0 Pro Vision has been deprecated on July 12, 2024. Consider switching to a different model, for example gemini-1.5-flash.",
"status": "NOT_FOUND"
}
}
There’s no way to detect this programmatically until a request fails — which could be avoided if the metadata included a status
field.
How it is today:
{
"name": "models/gemini-2.0-flash",
"version": "2.0",
"displayName": "Gemini 2.0 Flash",
"description": "Gemini 2.0 Flash",
"inputTokenLimit": 1048576,
"outputTokenLimit": 8192,
"supportedGenerationMethods": [
"generateContent",
"countTokens",
"createCachedContent"
],
"temperature": 1,
"topP": 0.95,
"topK": 40,
"maxTemperature": 2
}
What we would expect (example):
{
"name": "models/gemini-2.0-flash",
"version": "2.0",
"displayName": "Gemini 2.0 Flash",
"description": "Gemini 2.0 Flash",
"inputTokenLimit": 1048576,
"outputTokenLimit": 8192,
"supportedGenerationMethods": [
"generateContent",
"countTokens",
"createCachedContent"
],
"temperature": 1,
"topP": 0.95,
"topK": 40,
"maxTemperature": 2,
"knowledgeCutoff": "2024-02-01",
"thinkingModel": true,
"supportedInputTypes": ["text", "image"],
"supportedOutputTypes": ["text"],
"status": "active"
}
Why this matters:
In my case, I’m developing an n8n integration where users can dynamically select a model to use.
Some workflows require models that accept images (multimodal input), while others need text-only models.
When listing available models through the API, there’s no way to know:
- If the model accepts images or only text.
- If the model is still available or already deprecated.
This creates two major problems:
- User experience suffers — I cannot correctly filter or validate model choices based on their input capabilities, leading to confusion or failed workflow executions.
- Unnecessary runtime errors — A user might select a model that is no longer available (because the list shows deprecated models without warning) or select a model that does not support the required input type.