> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tuturuuu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Catalog

> How Tuturuuu publishes, browses, and syncs AI gateway model metadata.

The public model catalog is served from `apps/web` at:

```txt theme={null}
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:

```txt theme={null}
GET /api/v1/infrastructure/ai/models?format=paginated&type=all&page=1&limit=60
```

The paginated response is:

```ts theme={null}
{
  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:

```txt theme={null}
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.
