Skip to main content
The public model catalog is served from apps/web at:
GET /api/v1/infrastructure/ai/models
Without pagination parameters, the route keeps the legacy response shape and returns an array of language models. For catalog pages and sync jobs, prefer the paginated contract:
GET /api/v1/infrastructure/ai/models?format=paginated&type=all&page=1&limit=60
The paginated response is:
{
  data: Model[];
  pagination: {
    page: number;
    limit: number;
    total: number;
  };
}
Supported filters include type, provider, tag, enabled, ids, q, and search. Use type=all when a caller needs language, image, embedding, and video models. Selection UIs must use server-side search plus paginated “load more” behavior instead of preloading a fixed first page and filtering locally. The root-admin AI credits route has the same paginated model browsing contract:
GET /api/v1/admin/ai-credits/models?page=1&limit=50&q=flash&type=language&enabled=true
Use ids=provider/model-a,provider/model-b to pin selected defaults or allowlist rows while the visible search page changes. In development, the AI credits admin model sync defaults to the Tuturuuu production public catalog before falling back to the Vercel AI SDK model source. This keeps local catalogs close to production while preserving the explicit Vercel source for refreshing upstream gateway metadata. Gemini 3.1 Flash Lite is stable under gemini-3.1-flash-lite and google/gemini-3.1-flash-lite. Runtime callers should normalize the retired gemini-3.1-flash-lite-preview aliases before model resolution so stored preferences and older clients keep working without sending the preview ID to providers. private.ai_gateway_models stores provider-owned catalog metadata, so its text fields are exempt from the global strict text-field length trigger and generated text check constraints. JSON payload fields on the same table still keep the standard payload-size checks.