Plural
Sign in

Catalog

See which models are available, then inspect the information you need to choose one.

Browse the hosted catalog

The fastest way to discover models is the model catalog. It lists every model available through this workspace. Open a model to see its context window, accepted modalities, supported request parameters, serving providers, regions, and pass-through prices.

Model ids use a stable author/model form, such as openai/gpt-5.6-luna. Use that id in routing, environments, and benchmarks. The serving host can change without changing the model id.

Browse from Python

ModelCatalog.models() returns every bundled ModelSpec. Filter that list when you need to build your own model picker, find every model from one author, or select only models that accept a required modality.

python
from plural import ModelCatalog

catalog = ModelCatalog()
models = catalog.models()

for spec in models:
    print(
        spec.id,
        spec.context_length,
        spec.architecture.input_modalities,
    )

Understand a model entry

A model entry answers the questions you need before trying it:

  • context_length — how much prompt and conversation history fits
  • architecture — accepted input and output modalities
  • supported_parameters — controls such as tools, structured output, reasoning, or sampling settings
  • ordered_endpoints() — which providers and regions can serve the model
  • pricing — prompt, completion, and long-context rates
python
from plural import ModelCatalog, estimate_cost
from plural.types import Usage

catalog = ModelCatalog()
spec = catalog.require("openai/gpt-5.6-luna")

print(spec.name)
print(spec.supported_parameters)
print([
    (host.provider, host.region, host.pricing)
    for host in spec.ordered_endpoints()
])

usage = Usage.from_counts(prompt=25_000, completion=2_000)
print(estimate_cost(usage, spec))

Catalog data and live availability

Request GET /v1/models when another application needs the hosted catalog. The catalog describes the models and endpoints Last Labs can route; an individual provider may still be temporarily unavailable. The routing layer handles that at request time.

Prices are upstream list prices with no Last Labs routing markup. If several hosts serve the same model, the request is charged at the host and region that actually answered it. Use estimate_cost() for planning, then use the response usage for the final amount.

NextUse a modelSwap models without rewriting the application around each provider.