CrossModel

Model IDs & capabilities

CrossModel uses one model ID format:

vendor/model-name

For example:

deepseek/deepseek-v4-pro
anthropic/claude-sonnet-4.6
openai/gpt-5-mini

Discover available models

Call /v1/models to get the list of models available right now:

curl https://api.crossmodel.ai/v1/models \
  -H "Authorization: Bearer $CROSSMODEL_API_KEY"

If a request names a model that doesn't exist, isn't listed, or is currently unavailable, the endpoint returns:

{
  "error": {
    "message": "Model 'foo/bar' was not found or is unavailable.",
    "type": "invalid_request_error",
    "param": "model",
    "code": "model_not_found"
  }
}

Protocols and models

CrossModel routes each model to the right provider and protocol. You can use the same CrossModel model ID across different endpoints:

EndpointGood for
/v1/chat/completionsThe OpenAI Chat Completions ecosystem — fits most applications.
/v1/responsesThe OpenAI Responses style — structured input and output.
/v1/messagesThe Anthropic Messages style — the Anthropic SDK, Claude Code, and similar tools.

Not every model supports every advanced capability. Whether multimodal input, tool calling, structured output, reasoning budgets, or cached tokens take effect depends on the model and provider.

Capability differences

When choosing a model, these dimensions are worth weighing:

CapabilityNotes
Context lengthLong-context models suit big documents, codebases, and long conversations — usually at higher cost.
Max output tokensCaps how much a single reply can generate. A request's max_tokens / max_completion_tokens is bounded by the model's limit.
Vision inputModels that support image content blocks can handle image_url, input_image, or Anthropic image.
Tool callingModels with function/tool use can return structured call requests.
Reasoning controlsSome models support reasoning_effort, reasoning.effort, or Anthropic thinking.
StreamingMost text models support stream: true, but the event format differs by protocol.
  1. For a new project, start with /v1/chat/completions unless you specifically need the Responses or Anthropic Messages shape.
  2. In production, keep the model ID as a config value so you can switch models quickly.
  3. On model_not_found, call /v1/models first to confirm the spelling and availability.
  4. Before relying on an advanced parameter, validate it against the target model with a little traffic.