Skip to content
Dil: Türkçe

Geliştiriciler için API

API hata biçimi ve hata kodları

Güncellendi: 1 Kasım 2026 5 dk okuma

LinkHarbor API hata yanıtları nasıl yapılandırılır, en önemli hata kodları ne anlama gelir ve kodun bunlara nasıl tepki vermeli.

API’nin her hata yanıtı aynı biçime sahiptir. Kodun message içindeki metne değil, error alanındaki hata koduna güvenmeli – kod sabit kalır, metin ise değişebilir ve hesap diline çevrilir.

Bir hata yanıtının yapısı

Örnek: 422 validation_failed
{
  "error": "validation_failed",
  "message": "Some of the information provided is invalid. Please check and try again.",
  "details": [
    { "field": "title", "reason": "minLength", "message": "…" }
  ],
  "request_id": "6b1f0c2e-…"
}
error
Makine tarafından okunabilir kod, örneğin not_found. Çoğu hatada X-Error-Code başlığında da bulunur – ama gövdedeki alana güven.
message
Hesap dilinde insan tarafından okunabilir açıklama: bir API anahtarıyla çalışma alanı sahibininki, bağlı bir uygulamayla onu bağlayan kişininki. Geçerli bir token olmadan – örneğin token kontrolünden gelen 401 – dil Accept-Language’i izler, aksi halde İngilizcedir. Content-Language başlığı dili belirtir.
details
Yalnızca söylenecek daha fazla şey olduğunda bulunur. Girdi doğrulamasından gelen 422 için her sorun için field, reason ve message içeren bir liste; iş mantığından gelen 422 ve diğer tüm hatalar için bir nesne, örneğin reason, retry_after_sec veya bir issues listesiyle. Bir boyut aşıldığında field, reason ve limit, 413 request_too_large için max_bytes ve max_kb içerir. Bu yüzden details’in bir liste olup olmadığını kontrol et.
request_id
İsteğin kimliği. X-Request-Id başlığında da bulunur. Destek ekibiyle iletişime geçtiğinde bunu ekle.

İstisnalar: 429 rate_limited yanıtında details yerine retry_after_sec alanı vardır; 429 ve 403 insufficient_scope ile gövdede request_id eksiktir. Token kontrolünden gelen 401 ve şema kontrolünden gelen 422’nin X-Error-Code başlığı yoktur ve şema kontrolünde yalnızca üst düzey message çevrilir; details içindeki metinler İngilizce kalır. X-Request-Id başlığı her zaman ayarlanır.

En önemli kodlar

HTTPerrorAnlamıNe yapmalı
400invalid_jsonGövde geçerli JSON değilJSON’u kontrol et
400bad_requestYanlış Content-Type veya hatalı istekContent-Type: application/json ayarla
401missing_bearer_tokenAuthorization başlığında token yokAuthorization: Bearer … başlığını ayarla
401invalid_tokenToken’ın süresi dolmuş veya geçersiz ya da anahtar silinmişYeni bir token al; işe yaramazsa anahtarı kontrol et
401invalid_api_keyToken değişiminde yanlış anahtar kimliği veya gizli değerKimlik bilgilerini kontrol et
402plan_limit_reachedPlan limitine ulaşıldı, örneğin kısa bağlantılar içinYükselt veya girişleri sil
403insufficient_scopeKapsam eksik veya uç nokta API anahtarları için etkin değilDoğru kapsamla bir anahtar oluştur
403forbiddenBu işlem için yetki yokPanelde yap
403feature_not_availableÖzellik plana dahil değilPlanı kontrol et
403block_type_requires_planBlok türü yalnızca daha yüksek bir planda kullanılabilirFarklı bir blok türü seç veya yükselt
403template_lockedPremium şablon mevcut planda kullanılamıyorGET /v1/templates/available listesinden bir şablon seç
403workspace_suspended, workspace_read_only, workspace_grace_expiredAçık bir ödeme nedeniyle çalışma alanı kilitli veya salt okunurÖdemeyi panelde hallet
404not_foundKaynak yok veya çalışma alanına ait değilKimliği kontrol et
409conflictMevcut durumla genel çakışmaDurumu yeniden yükle, girdiyi değiştir
409workspace_template_in_useÇalışma alanı şablonu hâlâ sayfalar tarafından kullanılıyor; sayı details.count içindeSayfaları başka bir şablona geçir, sonra sil
409handle_taken, slug_takenKullanıcı adı veya kısa bağlantı slug’ı zaten alınmışFarklı bir değer seç
409form_in_use, page_not_private, page_not_published, never_publishedDurumla çakışma: form hâlâ bir sayfada, sayfa özel değil veya yayınlanmamış, hiç yayınlanmamışDurumu değiştir, sonra tekrar dene
409page_limit_reached, link_limit_reached, block_limit_reached, form_limit_reached, asset_limit_reached, asset_storage_limit_reached, workspace_template_limit_reachedPlanın sayı veya depolama limitine ulaşıldıGirişleri kaldır veya yükselt
409draft_not_publishableTaslakta sorunlar var; liste details.issues içindeSorunları düzelt, sonra yeniden yayınla
413request_too_largeGövde bu uç nokta için izin verilenden büyük (64 KB, 1 MB veya 2 MB); limit details.max_kb içindeİstek başına daha az veri gönder, bkz. Hız limitleri
413payload_too_largeYüklenen dosya 10 MB’tan büyükDosyayı küçült
422validation_failedGeçersiz girdi veya bilinmeyen alan; ayrıntılar details içindeAlanları details’te anlatıldığı gibi düzelt
422handle_reserved, target_url_invalid, target_url_scheme, target_url_hostKullanıcı adı ayrılmış ya da hedef URL geçersiz veya izin verilmiyorFarklı bir değer seç
422workspace_template_disabledSeçilen çalışma alanı şablonu devre dışıŞablonu “Alan adları ve şablonlar” altında etkinleştir ya da başka birini seç
422template_css_external, template_section_invalidÇalışma alanı şablonu: CSS harici sunuculardan yüklüyor ya da bir {{#if}}/{{#unless}}/{{#each}} bölümü yanlış yerleştirilmişHarici adresleri kaldır ya da bölümü aynı etiket veya metin içinde kapat
422custom_css_externalÖzel CSS harici sunuculardan bir şey yüklüyorHarici adresleri CSS’ten kaldır
429rate_limited, api_key_lockedÇok fazla istek ya da hatalı denemelerden sonra anahtar kilitliRetry-After veya details.retry_after_sec ne diyorsa o kadar bekle
500internal_errorBeklenmeyen hataDaha sonra tekrar dene, request_id’yi not al
503service_unavailableHizmet geçici olarak kullanılamıyorBir aradan sonra tekrar dene

Girdi hatalarını okuma

422 validation_failed ile details her sorunu ayrı ayrı listeler: field alanın yoludur (iç içe nesneler için eğik çizgilerle, örneğin theme_config/button_style), reason ihlal edilen kuraldır, örneğin required, minLength, maxLength, enum veya additionalProperties. additionalProperties ile mesaj hangi alanların bilinmediğini söyler – çoğu zaman alan adında bir yazım hatası.

Kodunda önerilen ele alış

  • 400, 413 ve 422: yeniden deneme, bunun yerine isteği düzelt
  • 401 invalid_token: bir kez yeni bir token al ve yeniden dene
  • 403: yeniden deneme; kapsamı, planı veya bunu kimin yapmaya yetkili olduğunu kontrol et
  • 404: kimliği kontrol et; bir silmeden sonra bu normaldir
  • 409: durumu yeniden yükle ve işlemin hâlâ gerekli olup olmadığına karar ver
  • 429: Retry-After ne diyorsa o kadar bekle, sonra yeniden dene – bkz. Hız limitleri
  • 500 ve 503: artan aralarla birkaç kez yeniden dene

Bir şey bulamadın mı?

Neye ihtiyacın olduğunu bize anlat, destek ekibimiz sana kişisel olarak yardımcı olsun.

Destekle iletişime geç