Skip to Content
GirişHata Kodları

Hata Kodları ve Yanıt Formatı

Standart Yanıt Zarfı

Tüm API yanıtları tutarlı bir JSON yapısı kullanır.

Başarılı Yanıt

{ "success": true, "data": { ... }, "meta": { "requestId": "req_01HZGK9P3QABCD", "timestamp": "2025-06-10T12:00:00.000Z", "version": "1", "sandbox": false } }

Sayfalandırmalı Yanıt

{ "success": true, "data": [ ... ], "meta": { "requestId": "req_01HZGK9P3QABCD", "timestamp": "2025-06-10T12:00:00.000Z", "version": "1" }, "pagination": { "page": 1, "perPage": 20, "total": 142, "totalPages": 8, "hasNextPage": true, "hasPrevPage": false } }

Hata Yanıtı

{ "success": false, "error": { "code": "VALIDATION_ERROR", "message": "Geçersiz istek verisi.", "details": { "platforms": ["En az bir platform seçilmelidir."], "accountIds": ["En az bir hesap ID'si gereklidir."] }, "docsUrl": "https://docs.sosyalkopru.com/giris/hata-kodlari" } }

HTTP Durum Kodları

KodAnlamNe zaman?
200OKBaşarılı GET/PATCH/DELETE
201CreatedKaynak başarıyla oluşturuldu
400Bad RequestGeçersiz JSON veya parametre
401UnauthorizedGeçersiz veya eksik API anahtarı
402Payment RequiredYetersiz kredi
403ForbiddenKapsam yetkisi veya IP kısıtı
404Not FoundKaynak bulunamadı
405Method Not AllowedDesteklenmeyen HTTP metodu
409ConflictÇakışma — tekil kaynak zaten mevcut veya bağımlılık var
422Unprocessable Entityİş kuralı ihlali
429Too Many RequestsHız limiti aşıldı
500Internal Server ErrorSunucu hatası
503Service UnavailableGeçici servis kesintisi

Hata Kodu Referansı

Hata KoduHTTPAçıklamaÇözüm
UNAUTHORIZED401Authorization başlığı eksikBaşlığı ekleyin
INVALID_API_KEY401API anahtarı tanınmıyorAnahtarı kontrol edin
REVOKED_API_KEY401Anahtar iptal edilmişYeni anahtar oluşturun
EXPIRED_API_KEY401Anahtarın süresi dolmuşYeni anahtar oluşturun
RATE_LIMIT_EXCEEDED429İstek limiti dolduRetry-After süresini bekleyin
INSUFFICIENT_CREDITS402Kredi yetersizKredi yükleyin
FORBIDDEN_SCOPE403Kapsam yetkisi yokAnahtara kapsam ekleyin
IP_NOT_WHITELISTED403IP izin listesinde değilIP’yi panele ekleyin
VALIDATION_ERROR400İstek doğrulama hatasıdetails alanını inceleyin
NOT_FOUND404Kaynak bulunamadıID’yi doğrulayın
CONFLICT409Kaynak zaten mevcut veya bağımlılık çakışmasıMevcut kaynağı güncelleyin
METHOD_NOT_ALLOWED405Desteklenmeyen HTTP metoduİzin verilen metodları kontrol edin
PLATFORM_ERROR422Platform API hatası/posts/{id}/status inceleyin
SERVICE_UNAVAILABLE503Geçici servis kesintisiBirkaç saniye sonra tekrar deneyin
INTERNAL_ERROR500Sunucu iç hatasırequestId ile destek ekibiyle iletişime geçin

Hata İşleme

Exponential Backoff ile Yeniden Deneme

429 ve 5xx yanıtları için yeniden deneme stratejisi uygulayın:

retry.js
async function apiCall(url, options, maxRetries = 3) { for (let attempt = 0; attempt < maxRetries; attempt++) { const response = await fetch(url, options) if (response.ok) return response.json() const body = await response.json() // Hız limiti — Retry-After başlığını bekle if (response.status === 429) { const wait = parseInt(response.headers.get('Retry-After') ?? '60') * 1000 await new Promise(r => setTimeout(r, wait)) continue } // Servis kesintisi if (response.status === 503) { await new Promise(r => setTimeout(r, 5000)) continue } // Sunucu hatası — exponential backoff if (response.status >= 500 && attempt < maxRetries - 1) { await new Promise(r => setTimeout(r, 2 ** attempt * 1000)) continue } // Kurtarılamaz hata (4xx) throw Object.assign(new Error(body.error?.message ?? 'API hatası'), { code: body.error?.code, status: response.status, }) } throw new Error('Maksimum yeniden deneme sayısına ulaşıldı') }

Çakışma (409) Hataları

CONFLICT kodu iki durumda döner:

  1. Tekil kaynak: Aynı URL veya benzersiz alan için kaynak zaten mevcut (örn. webhook limit, kuyrukta tekrarlı gönderi)
  2. Bağımlılık: Silmek istediğiniz kaynak başka kaynaklarca kullanılıyor (örn. aktif gönderilerde kullanılan medya)
const response = await fetch('/v1/media/media_01XYZ', { method: 'DELETE', headers }) if (response.status === 409) { const { error } = await response.json() // error.message: "Bu medya 3 aktif gönderide kullanılıyor." console.error('Çakışma:', error.message) }

Platform Hataları

PLATFORM_ERROR kodu, hedef platformun API’sinden dönen hataları belirtir. Bu durumda gönderi FAILED statüsüne geçer.

const { data } = await fetch( `https://api.sosyalkopru.com/v1/posts/${postId}/status`, { headers } ).then(r => r.json()) for (const platform of data.platforms) { if (platform.status === 'FAILED') { console.error(`${platform.platform}: ${platform.errorMessage}`) // Örnek: "Erişim tokenı süresi doldu — hesabı yeniden bağlayın" } }

Her yanıttaki meta.requestId değerini saklayın. Sorun bildirirken bu ID destek ekibinin sorunu hızlıca bulmasını sağlar.

Last updated on