OVHcloud AI Endpoints
Connect AISIX AI Gateway to OVHcloud AI Endpoints so applications can call OVHcloud-hosted models through an AISIX caller key.
The OVHcloud OpenAI-compatible endpoint uses bearer authentication. AISIX discovers it through the ovhcloud community catalog provider and uses the openai adapter.
| Setting | Value used by AISIX |
|---|---|
| Catalog provider ID | ovhcloud |
| API base | https://oai.endpoints.kepler.ai.cloud.ovh.net/v1 |
| Example upstream model | Meta-Llama-3_3-70B-Instruct |
| Authentication | Bearer access token |
Prerequisites
Prepare:
- An AISIX Cloud environment with an attached gateway.
- An OVHcloud AI Endpoints access token.
- Access to the selected model.
curlandjq.
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 OVHcloud Upstream
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"
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": "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
Chat completions is supported. AISIX can bridge compatible Responses and Messages requests through the chat adapter. Embeddings require an embedding model and OpenAI-compatible embeddings route exposed by OVHcloud.
Image generation, video generation, and rerank do not accept the ovhcloud provider value. See Provider Compatibility.
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. |
For routing this alias alongside another European endpoint, see Routing and Failover.