Threads AI

ModelInfo

What a model adapter declares about itself: which model and adapter it is, its parameters and limits, the inputs it accepts, its hosted tools and whether a lost response can be looked up.

Fields

modelModelRefrequired

The provider and model name. Recorded when the thread starts.

adapterAdapterRefrequired

The model adapter and every provider-conversion setting that affects the wire request (API flavour, cache-breakpoint placement, tool-choice mapping).

paramsJsonObjectrequired

The model parameters the adapter sends (temperature, output limits and the like), recorded when the thread starts. Changing them changes the agent's config hash.

limitsPolicy.models.itemsrequired

Input bound, output cap, billing bound and price. A factory's max_input_tokens (TS maxInputTokens) is pinned here as context_window.

acceptsreadonly ("text" | "image_ref" | "document_ref" | "audio_ref")[]required

Input parts it accepts; others fail pre-dispatch with content_unsupported.

hosted_toolsreadonly string[]default []

Names of provider-hosted tools this model can call (for example web search run by the provider). A live model that declares any is refused in stub-mode runs, since hosted calls can't be stubbed.

lookupLookupCapabilityrequired

Response lookup by client request id.

cache{ ttl_ms: PosInt } | "none"

How long this model's provider keeps prompt-cache entries: a TTL, "none" when it never caches, absent when unknown. The definition check (check() or the first run) uses agreeing declared TTLs as the default context.cache_ttl_ms and otherwise asks for context.cache_ttl_ms. A custom Model declares it too: without it, an agent needs context.cache_ttl_ms.

cache.ttl_msPosIntrequired

How long a prompt-cache entry lives, in milliseconds.

Edit on GitHub

On this page