diff --git a/docs/providers-reference.md b/docs/providers-reference.md index c29489de5..a2f009cf8 100644 --- a/docs/providers-reference.md +++ b/docs/providers-reference.md @@ -2,7 +2,7 @@ This document maps provider IDs, aliases, and credential environment variables. -Last verified: **February 20, 2026**. +Last verified: **February 21, 2026**. ## How to List Providers @@ -61,6 +61,14 @@ credential is not reused for fallback providers. | `osaurus` | — | Yes | `OSAURUS_API_KEY` (optional; defaults to `"osaurus"`) | | `nvidia` | `nvidia-nim`, `build.nvidia.com` | No | `NVIDIA_API_KEY` | +### Vercel AI Gateway Notes + +- Provider ID: `vercel` (alias: `vercel-ai`) +- Base API URL: `https://ai-gateway.vercel.sh/v1` +- Authentication: `VERCEL_API_KEY` +- Vercel AI Gateway usage does not require a project deployment. +- If you see `DEPLOYMENT_NOT_FOUND`, verify the provider is targeting the gateway endpoint above instead of `https://api.vercel.ai`. + ### Gemini Notes - Provider ID: `gemini` (aliases: `google`, `google-gemini`) diff --git a/src/providers/mod.rs b/src/providers/mod.rs index d48f2c43e..995358c43 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -73,6 +73,7 @@ const QWEN_OAUTH_DEFAULT_CLIENT_ID: &str = "f0304373b74a44d2b584a3fb70ca9e56"; const QWEN_OAUTH_CREDENTIAL_FILE: &str = ".qwen/oauth_creds.json"; const ZAI_GLOBAL_BASE_URL: &str = "https://api.z.ai/api/coding/paas/v4"; const ZAI_CN_BASE_URL: &str = "https://open.bigmodel.cn/api/coding/paas/v4"; +const VERCEL_AI_GATEWAY_BASE_URL: &str = "https://ai-gateway.vercel.sh/v1"; pub(crate) fn is_minimax_intl_alias(name: &str) -> bool { matches!( @@ -985,7 +986,10 @@ fn create_provider_with_url_and_options( "Venice", "https://api.venice.ai", key, AuthStyle::Bearer, ))), "vercel" | "vercel-ai" => Ok(Box::new(OpenAiCompatibleProvider::new( - "Vercel AI Gateway", "https://api.vercel.ai", key, AuthStyle::Bearer, + "Vercel AI Gateway", + VERCEL_AI_GATEWAY_BASE_URL, + key, + AuthStyle::Bearer, ))), "cloudflare" | "cloudflare-ai" => Ok(Box::new(OpenAiCompatibleProvider::new( "Cloudflare AI Gateway", @@ -2004,6 +2008,14 @@ mod tests { assert!(create_provider("vercel-ai", Some("key")).is_ok()); } + #[test] + fn vercel_gateway_base_url_matches_public_gateway_endpoint() { + assert_eq!( + VERCEL_AI_GATEWAY_BASE_URL, + "https://ai-gateway.vercel.sh/v1" + ); + } + #[test] fn factory_cloudflare() { assert!(create_provider("cloudflare", Some("key")).is_ok());