# Public model list

`GET https://api.endless.app/models/public`

Source: https://endless.app/docs/api/models/public-list

Public model list.

## Authentication

- `bearerAuth`: HTTP bearer (JWT)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `language` | query | "en" \| "es" \| "pt" | no |  |
| `Endless-Api-Version` | header | string | no | Pin the caller to an API major (`1`). Omit to accept the current version. A major this deployment cannot serve is refused with 400 `unsupported_api_version`. |

## Responses

### 200 OK

Content type: `application/json` — array<object>

- `codename` (string, required)
- `name` (string, required)
- `maker` (object | null, required)
  - `id` ("google" | "openai" | "anthropic" | "elevenlabs" | "blackforestlabs" | "minimax" | "bytedance" | "kuaishou" | "recraft" | "alibaba" | "xai" | "spacexai" | "zai" | "mistral" | "deepseek" | "typesafeai" | "moonshotai" | "krea" | "ideogram" | "lightricks" | "pixverse" | "pruna" | "veed" | "imagineart" | "clarity" | "reve" | "firered" | "meta" | "topaz" | "endless" | null, required)
  - `name` (string, required)
- `description` (string | null, required)
- `kind` ("image" | "video" | "audio" | "chat", required)
- `minimum_required_plan` ("hobby" | "basic" | "pro" | "business" | null, required)
- `price` (object | null, required)
- `added_at` (string, required)
- `copy` (object | null)
  - `tagline` (string, required)
  - `summary` (string, required)
  - `about` (array<string>, required)
  - `best_for` (array<string>, required)
  - `specs` (array<object>, required)
    - `key` ("context_window" | "max_output" | "inputs" | "outputs" | "resolution" | "duration" | "references" | "audio" | "languages" | "editing", required)
    - `value` (string, required)
  - `faq` (array<object>, required)
    - `q` (string, required)
    - `a` (string, required)
- `copy_updated_at` (string | null)

### Errors

- `400` (Error): The request is malformed, or failed input validation. `message` names the field and the rule it broke; `data.issues` carries them individually.
- `401` (Error): No bearer token, or a token that failed verification.
- `402` (Error): The workspace has no credits left, or the caller is over a spending limit.
- `403` (Error): Authenticated, but the caller's role in this workspace does not carry the permission this operation needs.
- `409` (Error): The request is well-formed, but the resource's current state forbids it — a taken name, a last admin, a limit already reached.
- `429` (Error): The caller has spent its rate-limit window. `Retry-After` says when to come back.
- `500` (Error): The request failed on our side. Safe to retry an idempotent operation with backoff.
