Skip to main content

Novita AI

Connect AISIX AI Gateway to the Novita AI LLM API so applications can call Novita-hosted models with an AISIX caller key and stable model alias.

The LLM API from Novita is OpenAI-compatible and uses bearer authentication. AISIX discovers it through the novita-ai community catalog provider.

SettingValue used by AISIX
Catalog provider IDnovita-ai
API basehttps://api.novita.ai/openai/v1
Example upstream modeldeepseek/deepseek-v3.2
AuthenticationBearer API key

Prerequisites

Prepare:

  • An AISIX Cloud environment with an attached gateway.
  • A Novita AI API key.
  • curl and jq.

Export the AISIX connection details:

export AISIX_CP="http://localhost:8080/api"
export AISIX_TOKEN="aisix_pat_YOUR_ADMIN_TOKEN"
export ENV_ID="YOUR_ENVIRONMENT_ID"
export AISIX_PROXY="http://127.0.0.1:3000"

Configure the Novita AI Upstream

Create a Provider Key

export NOVITA_API_KEY="YOUR_NOVITA_API_KEY"

PROVIDER_KEY_ID=$(
curl -sS -X POST "$AISIX_CP/provider_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "novita-prod",
"provider": "novita-ai",
"api_key": "'"${NOVITA_API_KEY}"'",
"api_base": "https://api.novita.ai/openai/v1",
"allowed_environments": ["'"${ENV_ID}"'"]
}' | jq -er '.provider_key.id'
)

echo "$PROVIDER_KEY_ID"

The provider ID includes the -ai suffix. novita is not the AISIX catalog ID.

The API base also includes /openai/v1. AISIX appends /chat/completions, producing https://api.novita.ai/openai/v1/chat/completions. Using the bare host would send traffic to a route Novita does not document.

AISIX derives the openai adapter for this catalog provider. Omit adapter from the request.

Create a Model

Create an alias with Novita's publisher-namespaced model ID:

MODEL_ID=$(
curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/models" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "novita-deepseek-prod",
"model_name": "deepseek/deepseek-v3.2",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -er '.model.id'
)

echo "$MODEL_ID"

Model IDs and availability change as the catalog from Novita is updated. Copy the current ID, including its publisher prefix and casing, from the Novita model list.

Create a Caller API Key

AISIX_API_KEY=$(
curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/api_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "novita-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -er '.plaintext'
)

echo "$AISIX_API_KEY"

Verify the Provider Connection

curl -sS -X POST "$AISIX_PROXY/v1/chat/completions" \
-H "Authorization: Bearer $AISIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "novita-deepseek-prod",
"messages": [
{
"role": "user",
"content": "Say hello from Novita AI."
}
]
}'

AISIX forwards deepseek/deepseek-v3.2 to the Novita OpenAI-compatible chat endpoint with the Novita API key.

Endpoint Coverage

Chat completions is supported. AISIX can bridge compatible Responses and Messages requests through the same adapter. Embeddings require a Novita embedding model served on the configured OpenAI-compatible API root.

Image generation, video generation, and rerank have provider-specific allowlists and do not accept novita-ai. Use Provider Passthrough only for Novita-native routes that are beneath the configured API base.

Troubleshooting

SymptomCheck
Upstream authentication errorConfirm NOVITA_API_KEY is active.
Upstream 404Keep /openai/v1 in api_base.
Model not foundCopy the complete publisher-namespaced model ID from Novita.
Provider key creation returns 400Use provider: "novita-ai" and omit adapter.

For provider-specific parameter or response mapping, see Provider-Specific Overrides.