For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://modelgates.ai/docs/_mcp/server.

Model Fallbacks

The models parameter lets you automatically try other models if the primary model's providers are down, rate-limited, or refuse to reply due to content moderation.

How It Works

Provide an array of model IDs in priority order. If the first model returns an error, ModelGates will automatically try the next model in the list.

typescript
import { ModelGates } from '@modelgates/sdk'; const modelgates = new ModelGates({  apiKey: '<MODELGATES_API_KEY>',}); const completion = await modelgates.chat.send({  models: ['anthropic/claude-sonnet-4.6', 'gryphe/mythomax-l2-13b'],  messages: [    {      role: 'user',      content: 'What is the meaning of life?',    },  ],}); console.log(completion.choices[0].message.content);
typescript
const response = await fetch('https://modelgates.ai/api/v1/chat/completions', {  method: 'POST',  headers: {    'Authorization': 'Bearer <MODELGATES_API_KEY>',    'Content-Type': 'application/json',  },  body: JSON.stringify({    models: ['anthropic/claude-sonnet-4.6', 'gryphe/mythomax-l2-13b'],    messages: [      {        role: 'user',        content: 'What is the meaning of life?',      },    ],  }),}); const data = await response.json();console.log(data.choices[0].message.content);
python
import requestsimport json response = requests.post(  url="https://modelgates.ai/api/v1/chat/completions",  headers={    "Authorization": "Bearer <MODELGATES_API_KEY>",    "Content-Type": "application/json",  },  data=json.dumps({    "models": ["anthropic/claude-sonnet-4.6", "gryphe/mythomax-l2-13b"],    "messages": [      {        "role": "user",        "content": "What is the meaning of life?"      }    ]  })) data = response.json()print(data['choices'][0]['message']['content'])

Fallback Behavior

If the model you selected returns an error, ModelGates will try to use the fallback model instead. If the fallback model is down or returns an error, ModelGates will return that error.

By default, any error can trigger the use of a fallback model, including:

  • Context length validation errors
  • Moderation flags for filtered models
  • Rate-limiting
  • Downtime

Pricing

Requests are priced using the model that was ultimately used, which will be returned in the model attribute of the response body.

Using with OpenAI SDK

To use the models array with the OpenAI SDK, include it in the extra_body parameter. In the example below, gpt-4o will be tried first, and the models array will be tried in order as fallbacks.

python
from openai import OpenAI openai_client = OpenAI(  base_url="https://modelgates.ai/api/v1",  api_key={},) completion = openai_client.chat.completions.create(    model="openai/gpt-4o",    extra_body={        "models": ["anthropic/claude-sonnet-4.6", "gryphe/mythomax-l2-13b"],    },    messages=[        {            "role": "user",            "content": "What is the meaning of life?"        }    ]) print(completion.choices[0].message.content)
typescript
import OpenAI from 'openai'; const openrouterClient = new OpenAI({  baseURL: 'https://modelgates.ai/api/v1',  apiKey: '{}',}); async function main() {  // @ts-expect-error  const completion = await openrouterClient.chat.completions.create({    model: 'openai/gpt-4o',    models: ['anthropic/claude-sonnet-4.6', 'gryphe/mythomax-l2-13b'],    messages: [      {        role: 'user',        content: 'What is the meaning of life?',      },    ],  });  console.log(completion.choices[0].message);} main();