Skip to content

Routing and reliabilityBrief

Perplexity Agent API dropped model ids: what breaks, what to check

Perplexity's Agent API re-exposes models from OpenAI and others under prefixed ids, and its October changelog removed older ids from the docs. This brief separates what the docs confirm from what you must test, then shows how to find affected calls and set a fallback.

By INFRO Editorial

Published

4 min read

Luminous routing paths connecting one application node to many AI model endpoints

In short

The changelog entry I read says older ids are no longer listed in the model docs, pricing calculator or examples. It does not say those calls now fail, and the entry names Anthropic, Google and xAI ids, not OpenAI ones, so replay your own logs to find out.1

Key takeaways

  • 'No longer listed in the docs' is not the same as 'now returns an error'; Perplexity's changelog entry does not say which one applies to the older ids.
  • The October model-removal entry I read names Anthropic, Google and xAI ids; I could not confirm a removal entry for older OpenAI ids, so treat your own logs as the source of truth.
  • Find affected ids by listing recent requests from your gateway and counting model ids that are not in Perplexity's current table.
  • Set a models array of up to five ids on the Agent API, and include max_output_tokens whenever an anthropic/* id is in the chain.
  • Effort levels move models under you; pin a version if you need a stable configuration.

What the changelog says, and what it doesn't

The October 2026 Agent API entry I read says a list of older models "are no longer listed in the Agent API model docs, pricing calculator, or examples."1 The ids it names are Anthropic (claude-opus-4-8 down to claude-haiku-4-5), Google (gemini-3-flash-preview, gemini-3.5-flash and others) and xAI (grok-4.3, the grok-4.20 variants). No OpenAI id appears in that entry. The page text I received was truncated, so I can't rule out another entry that covers older OpenAI ids.

Two things follow. First, "no longer listed" is a documentation statement. The entry does not say requests naming those ids now return errors. Perplexity is explicit when behavior changes elsewhere: it says old Decisions API ids "continue to work" and select the new model, and that the undocumented ultra effort name "now returns an error."1 The model-removal entry says neither. Second, if you reach OpenAI models through Perplexity, the only safe assumption is that any id missing from the current table may stop resolving, and you should verify by replay.

Which OpenAI ids are listed today

The Agent API models page currently lists these OpenAI ids: openai/gpt-6.1-sol, openai/gpt-6-astra, openai/gpt-6-sol, openai/gpt-6-luna, openai/gpt-5.6-sol, openai/gpt-5.6-terra, openai/gpt-5.6-luna and openai/gpt-5.5.2 Anything your logs show that is not on that list is a candidate for breakage. If you call through the OpenAI SDK pointed at Perplexity's base URL, the model string is still one of these prefixed ids, so the same audit applies.3

The table below pairs tiers by name only. It is a starting point for testing, not a statement that the models behave alike. Rates are Perplexity's published per-million-token rates, which the page says may differ from provider list prices.2

TierListed idsInput / output per 1M (up to 272k input)
Smallopenai/gpt-6-luna, openai/gpt-5.6-luna$0.10 / $0.50 and $0.20 / $1.20
Midopenai/gpt-6-sol, openai/gpt-6.1-sol, openai/gpt-5.6-terra$2.00 / $10.00 for the first two; $2.00 / $12.00 for terra
Largeopenai/gpt-5.6-sol, openai/gpt-5.5, openai/gpt-6-astra$4.00 / $20.00; $5.00 / $30.00; $10.00 / $50.00
Listed OpenAI ids on the Agent API, grouped by name for test planning.

Find the affected ids in your logs

Your own request log is the quickest inventory, because it shows what your applications really send. If you go through a gateway, list recent failed requests, count model ids, and diff them against the table above. INFRO's request API pages through history with limit, a status filter and a next_cursor.4 The field name for the model is an assumption in this sketch, so check it against a real record.

audit_model_ids.py
import os, collections, requests

LISTED = {
    "openai/gpt-6.1-sol", "openai/gpt-6-astra", "openai/gpt-6-sol",
    "openai/gpt-6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra",
    "openai/gpt-5.6-luna", "openai/gpt-5.5",
}
url = "https://api.infro.io/v1/requests"
headers = {"Authorization": f"Bearer {os.environ['INFRO_API_KEY']}"}
params = {"limit": 100, "status": "error"}
counts = collections.Counter()

while True:
    page = requests.get(url, headers=headers, params=params).json()
    for r in page["data"]:
        counts[r.get("model", "unknown")] += 1  # confirm field name
    if not page.get("has_more"):
        break
    params["after"] = page["next_cursor"]

for model, n in counts.most_common():
    flag = "" if model in LISTED else "  <-- not in current table"
    print(f"{n:6d}  {model}{flag}")

Run it a second time without the error filter. A model id that never errors but is absent from the table is still on borrowed time, and you want to know it before it fails. Also grep your code and config for the strings, since scheduled jobs may not appear in a short log window.

Set a fallback so a removed id fails over

Perplexity's Agent API takes a models array of up to five ids and tries them in order until one succeeds; the array takes precedence over model.5 Put the mapped current id first, a second tier or vendor behind it, and include max_output_tokens if any anthropic/* id is in the chain, because those requests are rejected with HTTP 400 without it.2

fallback.py
from perplexity import Perplexity

client = Perplexity()
response = client.responses.create(
    models=["openai/gpt-6.1-sol", "openai/gpt-5.6-terra", "anthropic/claude-sonnet-5-5"],
    input="Summarize this ticket in two sentences.",
    max_output_tokens=2048,
)
print(response.model)  # which id actually answered

Log response.model on every call. A fallback that fires silently changes your quality and your bill, and you want that visible. One caveat: if you set a service_tier, the API applies flex or priority only when every model in the list supports it, otherwise it ignores the tier and uses default processing.2

If you sit behind a gateway, INFRO's fallbacks array does the same job one layer up, but with different rules: it takes up to five catalog model ids, applies only when model names a model rather than a route, and tries them over your own connections.6 Its own refusals, such as an unknown model (404) or an allowlist block (403), return immediately with no failover, while an upstream 400, 404 or 5xx moves on to the next connection.6 Check which of those your removed id produces before you rely on the chain.

Before you ship the mapping

  • Replay a sample of real prompts against the replacement id and compare output length, tool-call behavior and cost; a "same tier" model is not the same model.
  • Pin an effort version if you use effort levels. Dynamic levels change their underlying model, for example high moved to a different OpenAI model in the October entry, and a pinned value like fast@2026-10-16.0 keeps one released configuration.7
  • Re-read the models page and changelog on a schedule. Both change often, and this brief reflects what they said on 1 November 2026.

Questions readers ask

Do I need to change code if I call Perplexity with the OpenAI SDK?
Only the model string matters. The Agent API accepts the OpenAI Responses interface at a Perplexity base URL, and the model value is still a vendor-prefixed Perplexity id such as openai/gpt-5.6-luna, so the same id audit applies.
Does an effort level protect me from a removed model id?
Only partly. A dynamic effort level lets Perplexity change its underlying model, and pinning a version keeps one released configuration. If you override model on top of an effort level, your override is the id that has to resolve.

From the team that builds it

Where this shows up in INFRO

INFRO is a control plane in front of the provider accounts you already hold. The capabilities below are the parts of it this article touches, each with the documentation that defines its behaviour.

INFRO accounts are self-serve. Provider usage is billed to you by your providers; INFRO charges a software subscription and takes 0% of model spend. See plans.

Sources

Numbered in order of first citation. Each was opened and checked against the claim on the date shown.

  1. 1.Changelog (Agent API entries, October 2026) (opens in a new tab) — Perplexity. Accessed Nov 1, 2026.
  2. 2.Agent API Models (opens in a new tab) — Perplexity. Accessed Nov 1, 2026.
  3. 3.OpenAI Compatibility (opens in a new tab) — Perplexity. Accessed Nov 1, 2026.
  4. 4.Request traces (opens in a new tab) — INFRO. Accessed Nov 1, 2026.
  5. 5.Model Fallback (opens in a new tab) — Perplexity. Accessed Nov 1, 2026.
  6. 6.Failover & fallbacks (opens in a new tab) — INFRO. Accessed Nov 1, 2026.
  7. 7.Effort (opens in a new tab) — Perplexity. Accessed Nov 1, 2026.

About this article

Read Perplexity's changelog, Agent API models, effort, model fallback and OpenAI compatibility pages, plus INFRO's fallbacks and request-trace docs, on 2026-11-01. The changelog page was truncated and openai.com/api returned 403. I left out any claim that older OpenAI ids were removed or now return errors, and the removal date, because neither was confirmed.

Last checked against its sources on . The next review is due by . No separate named reviewer is recorded for this article.

How articles are written, sourced and corrected is set out in the editorial standards.