Kılavuzlara dön
Sorun giderme·17 Temmuz 2026·6 dk okuma

401/403 döndüren OpenAI uyumlu API — base_url ve başlık tuzakları

OpenAI uyumlu API'lerin amacı SDK'nın doğrudan çalışmasıdır; dolayısıyla 401 aldığınızda hata neredeyse her zaman değiştirdiğiniz iki satırdadır: base_url ve api_key. İşte gerçekten oluşma sırasına göre hata türleri.

Son inceleme tarihi: .

OpenAI uyumlu API'lerin amacı SDK'nın doğrudan çalışmasıdır; dolayısıyla 401 aldığınızda hata neredeyse her zaman değiştirdiğiniz iki satırdadır: base_url ve api_key. İşte gerçekten oluşma sırasına göre hata türleri.

Hata

yanıt (HTTP 401)
{
  "error": {
    "type": "invalid_api_key",
    "message": "Invalid or missing API key.",
    "code": "invalid_api_key"
  }
}

Nedenler ve çözümler özeti

NedenÇözüm
base_url içinde /v1 son eki eksik (veya iki kez eklenmiş)Çoğu ağ geçidi tam olarak https://host/v1 ister; SDK /chat/completions bölümünü kendisi ekler.
Farklı bir ana bilgisayardan alınmış anahtarsk-… anahtarları yalnızca onları oluşturan hizmette kimlik doğrular; ön ek ↔ ana bilgisayar eşleşmesini kontrol edin.
Kurumsal proxy / WAF Authorization başlığını kaldırıyorTemiz bir ağdan test edin; proxy'yi Authorization'ı geçirecek şekilde yapılandırın.
OPENAI_API_KEY ortam değişkeni açıkça verdiğiniz anahtarın üzerine yazıyorSDK varsayılan olarak ortam değişkenini okur; bazı kurulumlarda eski bir ortam değişkeni sessizce öncelik kazanır. api_key'i açıkça geçirin.

SDK'nın vurduğu tam URL'yi doğrulayın

client.base_url değerini yazdırın ve kimlik doğrulamalı en ucuz uç nokta olan GET /v1/models'i çağırın. /models çalışıyorsa kimlik doğrulama düzgündür ve hata başka yerdedir:

check.py
from openai import OpenAI

client = OpenAI(
    base_url="https://api.kunavo.com/v1",   # exactly one /v1
    api_key="sk-kn-...",                 # explicit beats env vars
)
print(client.base_url)
print([m.id for m in client.models.list().data][:5])

SDK'yı elemek için aynı ana bilgisayarı curl ile çağırın

Authorization: Bearer ile curl çalışıyor, SDK çalışmıyorsa SDK'nın gerçek isteğini karşılaştırın (OPENAI_LOG=debug ayarlayın); on vakadan dokuzunda bir proxy veya ortam değişkeni bir şeyi yeniden yazmıştır.

Kunavo üzerinden çağrı yapıyorsanız

Kunavo'nun uç noktası https://api.kunavo.com/v1 adresinde katı biçimde OpenAI şekillidir ve GET /v1/models kimlik doğrulama için duman testidir. Kodunuz api.openai.com üzerinde çalışıyorsa base_url'yi Kunavo'ya yönlendirmek tek değişikliktir; aynı SDK, aynı wire biçimi ve Claude, GPT ve medya modelleri için tek anahtar.

Sık sorulan sorular

Bir ağ geçidinde 401 ile 403 arasındaki fark nedir?

401 = kimlik bilgisi kabul edilmemiştir (anahtar eksik/geçersiz). 403 = anahtar geçerlidir ancak bu işlemi yapmasına izin verilmez (devre dışı anahtar, askıya alınmış hesap, izin verilmeyen model). Hata gövdesini okuyun; uyumlu API'ler nedeni error.message içinde verir.

Kodum yerelde çalışıyor da CI'da neden 401 alıyor?

CI farklı bir ortamdır: secret ayarlanmamış, farklı bir servis için ayarlanmış veya bir proxy başlığı kaldırıyor olabilir. Gerçekte ne gönderildiğini görmek için CI içinden repr(key[:12]) ve base_url değerlerini loglayın.

İlgili kılavuzlar

Hata anlamlarına ilişkin daha fazla bilgi hata referansı bölümünde; anahtar almak kayıt ve kimlik doğrulama kılavuzu üzerinden bir dakika sürer.