Skip to main content
AI Sonar is multi-format: you can keep OpenAI-compatible clients, Anthropic-native Messages calls, Gemini-native REST calls, and media endpoints in their natural shapes. The safest migration is not to translate every workload into one universal format. Choose the route that owns the behavior your application needs.

Route Mapping

Quick Migration Recipes

OpenAI to AI Sonar

Change only the SDK base_url / baseURL to https://api.aisonar.dev/v1, keep your existing OpenAI API key environment variable name if that is easier for rollout, and replace model IDs after checking GET /v1/models.

OpenRouter to AI Sonar

Use https://api.aisonar.dev/v1 where your app previously used OpenRouter’s OpenAI-compatible base URL. Remove provider-prefixed model IDs and use AI Sonar public model IDs from /v1/models; when a workload needs Claude Messages or Gemini generateContent, move it to the native AI Sonar endpoint instead of forcing it through OpenAI-compatible chat.

LiteLLM to AI Sonar

Use LiteLLM’s custom_openai/<model> route with api_base: https://api.aisonar.dev/v1. Keep LiteLLM aliases separate from real AI Sonar model IDs so you can change routing policy without changing application prompts.

Claude Messages via AI Sonar

Point Anthropic SDK clients at https://api.aisonar.dev and call messages.create. Do not append /v1 to the SDK base URL; the SDK owns the /v1/messages path.

Gemini Native via AI Sonar

Keep Gemini payloads on https://api.aisonar.dev/v1beta/models/{model}:generateContent. Gemini-native contents, parts, files, cached contents, function declarations, and built-in tools should stay on this route when your app depends on Gemini behavior.

OpenAI-Compatible Migration

Keep your existing retry, timeout, and streaming code, but validate model IDs with GET /v1/models before production traffic. For image generation, send model explicitly and read the image guide because image models differ more than chat models.

Anthropic Migration

Use /v1/messages for Claude-native tool use, thinking flows, and Anthropic message semantics. Do not translate Anthropic-only fields through Chat Completions unless you intentionally want an OpenAI-compatible behavior change.

Gemini Migration

Keep Gemini built-in tools, File API references, cached contents, function declarations, and native content parts on /v1beta when your app depends on Gemini-native behavior.

Media Migration

  1. Query GET /v1/models?recommended_for=image|video|music|3d.
  2. Read GET /v1/models in list responses and the full GET /v1/models/{model} where available.
  3. Send an explicit model, especially for image endpoints.
  4. Store task_id, poll_url, endpoint, model, and your own job ID for async jobs.
  5. Reconcile costs through usage records and billing_transaction_id, not provider task IDs.
Media workloads need their own rollout plan because latency, retries, and final assets behave differently from chat completions.

Production Rollout Plan

Migration Pitfalls

  • Do not put every model behind one OpenAI Chat Completions path if your app needs native Anthropic, Gemini, or Responses behavior.
  • Do not assume old image defaults. Send model explicitly.
  • Do not retry async create requests without checking whether a task was already created.
  • Do not expose provider-specific identifiers in your logs or UI.
  • Do not compare billing with provider task IDs. Use AI Sonar usage records.

API Reference