OVHcloud AI Endpoints
OVHcloud AI Endpoints provides managed inference endpoints for hosted models. AISIX gives applications caller keys and stable model aliases for accessing those endpoints.
Prerequisites
Before starting, prepare the following:
- One AISIX setup:
- For AISIX Cloud, an environment with an attached gateway and a write-scoped admin token. For On-Premises, follow the AISIX Cloud Quickstart. To request Hybrid Cloud access, contact API7.
- For the open-source AISIX gateway, prepare either a local AISIX installation or the Docker setup from the Open-Source AISIX Gateway Quickstart. Configure the gateway to load a declarative resources file.
- An OVHcloud AI Endpoints access token.
- Access to the selected model.
curlandjq.
Configure with AISIX Cloud
Export the AISIX Cloud connection details:
# AISIX_CP is the Admin API base URL; include /api and omit a trailing slash
# The local On-Premises quickstart uses http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CLOUD_ADMIN_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
export ENV_ID="YOUR_ENVIRONMENT_ID"
OVHcloud is a community catalog provider with an OpenAI-compatible endpoint. AISIX connects through the openai adapter and authenticates upstream requests with a bearer token.
Create a Provider Key
export OVHCLOUD_API_KEY="YOUR_OVHCLOUD_ACCESS_TOKEN"
PROVIDER_KEY_ID=$(
curl -sS -X POST "$AISIX_CP/provider_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "ovhcloud-prod",
"provider": "ovhcloud",
"api_key": "'"${OVHCLOUD_API_KEY}"'",
"api_base": "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1",
"allowed_environments": ["'"${ENV_ID}"'"]
}' | jq -er '.provider_key.id'
)
echo "$PROVIDER_KEY_ID"
Use the catalog ID ovhcloud and omit adapter. AISIX derives the OpenAI wire format and bearer authentication.
The API base is the shared OpenAI-compatible root documented by OVHcloud. It includes /v1; AISIX adds /chat/completions.
Create a Model
Create an alias with the exact OVHcloud 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": "ovhcloud-llama-prod",
"model_name": "Meta-Llama-3_3-70B-Instruct",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -er '.model.id'
)
echo "$MODEL_ID"
OVHcloud model IDs do not necessarily match the publisher's original repository ID. Copy the value shown by OVHcloud, including underscores, hyphens, and casing.
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": "ovhcloud-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -er '.plaintext'
)
echo "$AISIX_API_KEY"
Configure with the Open-Source AISIX Gateway
Export the upstream credential and choose the caller API key that applications will send to the gateway:
export OVHCLOUD_API_KEY="YOUR_PROVIDER_API_KEY"
export CALLER_API_KEY="YOUR_CALLER_API_KEY"
Create a complete declarative resources file for this provider:
_format_version: "1"
provider_keys:
- display_name: "ovhcloud-prod"
provider: "ovhcloud"
adapter: "openai"
api_key: ${OVHCLOUD_API_KEY}
api_base: "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1"
models:
- display_name: "ovhcloud-llama-prod"
provider: "ovhcloud"
model_name: "Meta-Llama-3_3-70B-Instruct"
provider_key: "ovhcloud-prod"
api_keys:
- display_name: "ovhcloud-caller"
key_env: CALLER_API_KEY
allowed_models:
- "ovhcloud-llama-prod"
If AISIX is installed locally, validate the file before loading it:
aisix validate --resources resources.yaml
After validation, start the gateway with the referenced environment variables in its process environment. Reload an existing gateway only if those variables are already available to the process; otherwise, restart it with the updated environment.
If you use Docker, adapt the validation and startup commands in the Open-Source AISIX Gateway Quickstart. Mount this resources.yaml file and pass every environment variable it references with -e in both commands. After the resources load, prepare the shared verification request below:
export AISIX_API_KEY="$CALLER_API_KEY"
Verify the Provider Connection
Export the AISIX gateway origin:
# The local quickstarts use http://127.0.0.1:3000
export AISIX_PROXY="YOUR_AISIX_GATEWAY_ORIGIN"
Send a chat-completions request through the AISIX proxy:
curl -sS -X POST "$AISIX_PROXY/v1/chat/completions" \
-H "Authorization: Bearer $AISIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ovhcloud-llama-prod",
"messages": [
{
"role": "user",
"content": "Say hello from OVHcloud AI Endpoints."
}
]
}'
AISIX sends the OVHcloud model ID to the OpenAI-compatible chat endpoint with bearer authentication.
Endpoint Coverage
An OVHcloud model alias does not reach every proxy route. AISIX uses the openai adapter for the normalized inference routes, but some routes also restrict the configured provider value.
| Route | OVHcloud support |
|---|---|
/v1/chat/completions, including stream: true | Supported. Tool calling, structured output, vision, and other capabilities depend on the selected model. |
/v1/responses | Supported through the chat-based Responses bridge, not OVHcloud's native Responses API. Fields without a chat equivalent are ignored. Use /passthrough/ovhcloud/responses when the native contract is required. |
/v1/messages | Supported for Anthropic-shaped callers through translation to chat completions. /v1/messages/count_tokens is unavailable because it requires an Anthropic-protocol provider key. |
/v1/embeddings | Supported when the alias names an OVHcloud embedding model, such as bge-m3. |
/v1/audio/transcriptions | Supported when the alias names an OVHcloud speech-to-text model, such as whisper-large-v3. AISIX rewrites the model alias and forwards the OpenAI-compatible multipart form to OVHcloud's transcription endpoint. |
/v1/audio/translations and /v1/audio/speech | Not available on the shared OVHcloud OpenAI-compatible base. OVHcloud handles translation through the transcription prompt and publishes text-to-speech models on separate native endpoints. |
/v1/images/generations, /v1/videos, and /v1/rerank | Not available for an alias whose provider value is ovhcloud; these AISIX routes use provider allowlists that exclude it. |
/v1/models | Returns caller-accessible AISIX aliases, not the OVHcloud model catalog. Use /passthrough/ovhcloud/models for OVHcloud's current list. |
/passthrough/ovhcloud/*rest | Available through a configured passthrough route for OVHcloud-native routes, with limited gateway normalization. |
The /passthrough/ovhcloud paths on this page assume a passthrough route claiming that prefix with the OVHcloud API base as its target_url; grant the route name on the caller key's allowed_routes. The normalized /v1/responses route is usually preferable when its translated feature set is sufficient: AISIX rewrites the model alias, streams incrementally, and parses usage. For native OVHcloud Responses behavior, passthrough forwards the body unchanged, so send the upstream model ID rather than the AISIX alias. OVHcloud currently requires store: false and client-managed conversation history on that API. A passthrough route relays the upstream response incrementally, including SSE. AISIX detects the Responses envelope from input and records token usage when the response includes supported input_tokens and output_tokens fields.
See Provider Compatibility for the gateway-wide endpoint rules.
Troubleshooting
| Symptom | Check |
|---|---|
Upstream 401 or 403 | Confirm the access token and project entitlement. |
Upstream 404 | Keep /v1 in api_base and copy the OVHcloud model ID exactly. |
| Model not found | Check underscores, hyphens, and version segments in model_name. |
Provider key creation returns 400 | Use provider: "ovhcloud" and omit adapter. |
Next Steps
You have now connected AISIX to OVHcloud AI Endpoints and verified the model alias. Continue with these guides:
- Model Aliases: configure routing, retry behavior, or cost metadata for the alias.
- Routing and Failover: route this alias alongside another European endpoint.
- Provider Compatibility: review supported proxy endpoints and provider-specific boundaries.