Hata kodları

Listings API HTTP durum kodları, Listings ve Social için SYxxxxx hata kodları ve v4 API'nin döndürdüğü üç hata yanıtı biçimi.

Listings API, bir isteğin sonucunu bildirmek için standart HTTP durum kodlarını kullanır. Hata kodları SY önekiyle başlar ve hata message dizesi içinde SYxxxxx: <human-readable reason> biçiminde iletilir.

HTTP durum kodları

HTTP status code summary

DurumAnlamıTipik SY koduPython SDK istisnası
200 OKİstek başarılı oldu. Yazma işlemlerinde yanıt gövdesini de kontrol edin (aşağıya bakın).--
400 Bad RequestHatalı biçimlendirilmiş bir istek, ayrıştırılamayan bir filtre, geçersiz bir enum değeri veya hatalı biçimlendirilmiş bir ID.SY90006, SY90001ValidationError
401 UnauthorizedAPI anahtarı eksik, hatalı biçimlendirilmiş veya iptal edilmiş. Henüz anahtarınız yok mu? Sunulduğunda ücretsiz sandbox günlük erişimi edinin.SY90005AuthenticationError
402 Payment RequiredHesabın ödenmemiş bir faturası olduğu için API erişimi duraklatılmıştır. Yalnızca Social'a ait ödenmemiş bir fatura, yalnızca Social uç noktalarını duraklatır. payment_required ve social_payment_required bölümlerine bakın.-APIError
403 ForbiddenAnahtar geçerli ancak kaynağa erişim izni yok.SY90003PermissionDeniedError
404 Not FoundYol veya ID ile belirtilen kaynak mevcut değil.SY90002NotFoundError
422 Unprocessable Entityİstek doğru biçimlendirilmişti ancak bir değer işlenemedi (örneğin, bilinmeyen veya belirsiz bir kategori).-ValidationError
429 Too Many RequestsPlanınızın hız sınırını aştınız. Retry-After üst bilgisine uyun.-RateLimitError
5xxBir sunucu hatası. Okuma işlemini bekleme süresini kademeli olarak artırarak yeniden denemek güvenlidir; bir yazma işlemini tekrarlamadan önce aşağıdaki yazma uyarısına bakın.SY90007InternalServerError

Üç yanıt biçimi

Çoğu hata, aşağıdaki bölümlerde gösterildiği gibi en üst düzeyde veya işlemin sonucunun içinde iç içe yer alan bir errors dizisi içerir. Bazı hatalar ise bunun yerine tek bir error nesnesi döndürür: hız sınırlaması (429) ve bazı istek düzeyindeki hatalar (INTERNAL_SERVER_ERROR gibi bir code içeren 400/500). Her iki biçimi de kontrol edin: errors bir dizidir, error bir nesnedir.

1. İstek düzeyi: en üst düzeyde errors[]

Kimlik doğrulama, yetkilendirme ve hatalı biçimlendirilmiş istek hataları, işlem çalıştırılmadan önce akışı sonlandırır. Hatayı yanıtın en üst düzeyinde içeren, ilgili 4xx durumunu (yukarıda) döndürürler.

JSON
{  "data": { "createLocation": null },  "errors": [{ "message": "SY90005: Invalid Token" }]}

2. Yazma doğrulaması: iç içe data.<operation>.errors[]

Diğer açılardan doğru biçimlendirilmiş bir oluşturma, güncelleme veya yayımlama isteği HTTP 200 döndürür. Girdi bir iş kuralını ihlal ederse hata, işlemin kendi veri yükünün altında data.<operation>.errors içinde iç içe bildirilir. İşlem başarılı olduğunda bu dizi mevcuttur ve boştur ("errors": []).

JSON
{  "data": {    "createLocation": {      "errors": [        { "message": "SY10126: City is Mandatory" },        { "message": "SY10010: state_iso" }      ],      "location": null    }  }}

3. Ağ geçidi düzeyi: en üst düzeyde tek bir error nesnesi

Hız sınırlaması ve beklenmeyen ağ geçidi hataları, dönüştürme işleminden önce akışı sonlandırır ve bir code, bir message ve bir correlation_id içeren tek bir error nesnesi döndürür. 429 gövdesi için aşağıdaki rate_limited bölümüne bakın.

Bir yazma işleminde, dolu bir data.<operation> nesnesi içeren 200 durumunda bile her zaman data.<operation>.errors değerini okuyun: yazma işlemi kısmen başarısız olabilir ve bunu burada bildirebilir.

402 Payment Required yanıtında error sarmalayıcısı bulunmaz: code, message, doc_url ve ödenecek bir fatura olduğunda pay_url en üst düzeydedir. Aşağıdaki payment_required bölümüne bakın.

Bir yazma işlemini yeniden denemek bedelsiz değildir

v4 API, Idempotency-Key desteği sunmaz: üst bilgi yok sayılır ve hiçbir uç nokta tekrarlanan yazma işlemlerini algılamaz. Zaman aşımına uğrayan veya 5xx döndüren bir oluşturma, güncelleme veya yayımlama çağrısı yine de sunucuda kalıcı olarak kaydedilmiş olabilir; bu nedenle kontrol etmeden yeniden denemek yinelenen bir konum, gönderi veya yorum yanıtı oluşturabilir.

Okuma işlemlerini bekleme süresini kademeli olarak artırarak serbestçe yeniden deneyin. Bir yazma işleminde önce veriyi geri okuyun: kaydı kontrolünüzdeki bir anahtarla (storeId, bir mağaza kodu, etkileşimin yanıt listesi) arayın ve yalnızca kayıt gerçekten mevcut değilse çağrıyı tekrarlayın.

Yaygın kodlar

Common SY error codes

KodMesajHTTP durumuAnlamı
SY90005Invalid Token401API anahtarı eksik, hatalı biçimlendirilmiş veya iptal edilmiş. Kontrol panelinden yeniden bir anahtar oluşturun ve bunu Authorization: API <your-key> olarak gönderin.
SY90001Not authorized to access this resource401 / 403Anahtar bu kaynak için reddedildi. Hem Python hem de Node SDK'ları bu hatayı AuthenticationError olarak fırlatır.
SY90002Invalid Id404 / 400Bir yol veya bağımsız değişken kimliği çözümlenemedi (genellikle hatalı veya base64 biçiminde olmayan bir relay kimliği).
SY10126City is Mandatory200 (yanıt gövdesi)Girdide zorunlu bir alan (city) eksik.
SY10010state_iso200 (yanıt gövdesi)stateIso değeri eksik veya geçersiz. Geçerli değerler için ülkeler ve eyaletler uç noktasına bakın.

SY10xxx aralığındaki doğrulama kodları belirli bir girdi alanına karşılık gelir; message, alanın veya karşılanmayan kuralın adını belirtir. SY90xxx aralığındaki kimlik doğrulama ve yetkilendirme kodları istek düzeyindedir ve eşleşen durumla birlikte en üst düzeyde gelir.

Bağlı hesap kodları

SY810xx aralığındaki kodlar, bir yayın platformundaki işletme kaydını içe aktaran veya bağlayan Connected Accounts uç noktalarından gelir. Bu kodlar, HTTP 200 yanıtının gövdesinde iç içe gelir (yukarıdaki 2. yanıt yapısı); bu nedenle durum başarılı olsa bile data.<operation>.errors değerini okuyun.

SY810xx connected-account and import codes

KodAnlamıYapılması gerekenler
SY81019Anahtarla ilişkili hesap için hiçbir kullanıcı çözümlenemedi.Destek ekibiyle iletişime geçin: hesabın etkin bir birincil kullanıcısı yok.
SY81066connectedAccountId mevcut değil veya hesap arşivlenmiş.Kimliği GET /connected-accounts üzerinden yeniden okuyun.
SY81067connectedAccountListingId için kod çözme veya çözümleme işlemi yapılamadı.Bunu bir connected-account-listings kaydının id alanından yeniden alın.
SY81068Bu işletme kaydı zaten bir konuma bağlı.Önce bağlantısını kesin veya başka bir işletme kaydı seçin.
SY81069Bağlı hesabın kimlik bilgileri artık geçerli değil.Hesabı connect-google veya connect-facebook aracılığıyla yeniden bağlayın.
SY81070İşletme kaydı, belirttiğiniz bağlı hesaba ait değil.Her işletme kaydını alındığı hesapla eşleştirin. Yaygın bir neden, gövdede connectedAccountId olmadan işletme kayıtlarını almaktır; bu durumda başka bir hesabın işletme kayıtları döndürülür.
SY81071Konum oluşturulurken beklenmeyen bir hata oluştu.Yeniden deneyin; sorun devam ederse destek ekibiyle iletişime geçin.
SY81072Konum oluşturma işlemi, verilerin hazırlanması veya kaydedilmesi sırasında başarısız oldu.Yeniden deneyin; sorun devam ederse destek ekibiyle iletişime geçin.
SY81073Bu işletme kaydı türü içe aktarma için desteklenmiyor.Yalnızca Google ve Facebook işletme kayıtları içe aktarılabilir.
SY81074Google, işletme kaydı için veri döndürmedi.İşletme kaydının hâlâ mevcut olduğunu ve hesabın bu kaydı hâlâ yönettiğini doğrulayın.
SY81075Google'ın API istek hızı sınırı aşıldı.Bekleme süresini kademeli olarak artırarak daha sonra yeniden deneyin.
SY81076İşletme kaydının Google'dan alınması başarısız oldu.Yeniden deneyin; hesabın Google izinlerini kontrol edin.
SY81077Facebook sayfasından ülke belirlenemedi.Facebook'ta sayfanın adresine bir ülke ekleyin, ardından yeniden deneyin.
SY81078Facebook sayfasından konum verilerinin oluşturulması başarısız oldu.Yeniden deneyin; sorun devam ederse destek ekibiyle iletişime geçin.
SY81081İşletme kaydında birincil kategori ayarlanmamış.İşletme kaydında bir birincil kategori ayarlayın, ardından yeniden deneyin.
SY81082İşletme kaydının ülkesi desteklenmiyor.Desteklenen ülkeler için ülkeler ve eyaletler uç noktasına bakın.
SY81083Google işletme kaydı içe aktarılamadı.Zaman damgasını belirterek destek ekibiyle iletişime geçin.
SY81084Facebook'tan içe aktarma işlemi hazırlanırken dahili bir hata oluştu.Yeniden deneyin; sorun devam ederse zaman damgasını belirterek destek ekibiyle iletişime geçin.
SY81085Facebook sayfası içe aktarılamadı.Zaman damgasını belirterek destek ekibiyle iletişime geçin.
SY81086Konum oluşturma işlemi bir iş kuralı tarafından reddedildi. İç içe yer alan message, altta yatan kodu içerir; örneğin hesapta kullanılabilir konum hakkı kalmadığında SY10151 kodunu içerir.İç içe yer alan mesajı okuyun; SY10151 için bir konum eklentisi ekleyin veya planı yükseltin.
SY81087Konum oluşturma isteği başarısız oldu.Yeniden deneyin; sorun devam ederse zaman damgasını belirterek destek ekibiyle iletişime geçin.
SY81088Konum oluşturma işlemi tanımlanamayan bir nedenle başarısız oldu.Zaman damgasını belirterek destek ekibiyle iletişime geçin.
SY81089Dahili bir servis çağrısı, başarı belirtmeyen bir durum döndürdü. İsteğinizle ilgili bir sorun değil.Bir kez yeniden deneyin; sorun devam ederse dahili çağrıyı izleyebilmemiz için zaman damgasını belirterek destek ekibiyle iletişime geçin.
SY81090Dahili konum oluşturma çağrısı sırasında beklenmeyen bir hata oluştu.Yeniden deneyin; sorun devam ederse zaman damgasını belirterek destek ekibiyle iletişime geçin.

Social kodları

SY950xx aralığındaki kodlar Social endpoint'lerinden gelir: markalar, bağlantılar ve sosyal medya gönderileri. Bağlı hesap kodları gibi, bunlar da bir HTTP 200 yanıtının gövdesinde iç içe gelir; bu nedenle durum başarılı olsa bile data.<operation>.error değerini (ve toplu işlem rotalarında data.<operation>.errors değerini) okuyun.

SY950xx Social codes

KodAnlamıYapılması gerekenler
SY95041Hesap marka sınırına ulaşmış. API planında bu durum oluşmaz: bu planda marka sayısı sınırsızdır.API planında herhangi bir işlem yapmanız gerekmez. Bu kodu görürseniz bildirin: GET /social/limits, brands: null döndürmelidir.
SY95042Hesap, geçerli faturalandırma dönemi için bağlantı sınırına ulaşmış.Üst sınır, GET /social/limits üzerinden alınan usage.connections değeriyle karşılaştırılır; bu, şu anda bağlı olanlar ile bu dönemde serbest bırakılanların toplamından oluşan faturalandırılabilir sayıdır. Bağlantıyı keserek veya bir markayı arşivleyerek boşaltılan bağlantı hakkı, dönem sonuna kadar ayrılmış olarak tutulur; bu nedenle yakın zamanda kesilen bir bağlantı bu hatayı gidermez. Serbest bıraktığınız hesaplardan birini daha önce bağlı olduğu markaya yeniden bağlayın (ücretsizdir, aynı bağlantı hakkını yeniden kullanır), 5 bağlantılık bir paket daha satın alın (hemen geçerli olur) veya usage.connectionsReleased bağlantı hakkının geri geldiği yenileme zamanını bekleyin. Serbest bırakılmış bir hesabı farklı bir markaya bağlamak, aynı bağlantı hakkını yeniden kullanmaz. Planlar ve eklentiler bölümüne bakın.
SY95043Bu hesapta bu ID'ye sahip bir marka yok veya marka arşivlenmiş.ID'yi GET /social/brands üzerinden yeniden okuyun. Marka ID'leri düz UUID'lerdir, Base64 relay ID'leri değildir.
SY95044Bu platform bu hesap için etkin değil.Hesabın Social planı, bağlanmasını istediğiniz platformu kapsamıyor. Destek ekibiyle iletişime geçin veya hesabın erişebildiği bir platform seçin.
SY95045Markanın bu platform için bağlı bir kanalı yok.Kullanıcıyı bu platforma ait bir bağlantı kurma bağlantısına yönlendirin veya platformu platforms içinden çıkarın. Bu durum, gönderi zamanlandıktan sonra kanalın bağlantısı kesildiğinde de görülür.
SY95046Zamanlama veya saat dilimi geçersiz.scheduledAt veya scheduleDate + scheduleTime gönderin, asla ikisini birden göndermeyin. scheduledAt için UTC farkı gerekir; scheduleTime, HH:MM değerindedir. Saat dilimleri IANA tanımlayıcılarıdır (tzCode).
SY95047Bu hesapta bu ID'ye sahip bir toplu işlem işi yok.job.id değerini toplu oluşturma yanıtından yeniden okuyun. İşler süresiz olarak saklanmaz.
SY95048Toplu istek satır sınırını aşıyor.Her istekte en fazla 500 satır gönderin ve kalanları ek gruplara bölün. Hiçbir şey oluşturulmadı.
SY95049Yönlendirme URL'si geçersiz.Bir bağlantı kurma bağlantısındaki redirectUrl ve errorUrl, sizin kontrolünüzdeki mutlak https URL'leri olmalıdır.
SY95050Toplu doğrulama başarısız oldu; satır bazındaki hatalara bakın.Hiçbir şey oluşturulmadı. job.results[] değerini okuyun: reddedilen her satır, 0 tabanlı index değerini, clientReference değerini ve errors[] içindeki nedeni içerir. Bu satırları düzeltin ve grubun tamamını yeniden gönderin.
SY95051Marka, 90 günlük süre şartını karşılamamış.Bir marka, oluşturulmasının üzerinden 90 gün geçmeden arşivlenemez. Yanıt ayrıca status: "TENURE_NOT_MET" değerini de bildirir ve hiçbir şey değişmemiştir. 90. günden sonra yeniden deneyin; marka ve bağlantıları hemen arşivlenir, ancak bağlantı hakları faturalandırma döneminin sonuna kadar ayrılmış olarak tutulur. Süre kuralına bakın.
SY95052Bağlı kanal bu markaya ait değil.Her bağlantıyı, oluşturulduğu markayla eşleştirin. Bir insights çağrısı, bir markanın gönderisi ve başka bir markanın kanal ID'si kullanılarak oluşturulduğunda bu durum yaygın olarak görülür.

SY95042 ve SY95044, girdi hataları değil, planın sağladığı haklarla ilgili hatalardır: planı değiştirmeden yeniden denemek aynı şekilde başarısız olur. SY95045, SY95046, SY95049 ve SY95052, sonraki istekte düzeltilebilen girdi hatalarıdır.

İşletme kaydı kullanım hakkı kodları

Listings plan codes

KodAnlamıYapılması gerekenler
SY10150Hesap, konum sınırına ulaşmış.Bir konumu arşivleyin, ek konum eklentisi satın alın veya planınızı yükseltin. Planlar ve eklentiler bölümüne bakın.
SY10151Hesabın bu plandaki konum kontenjanı dolmuş. Sandbox günlük erişiminde, her iki konum da kullanımda.SY10150 için belirtilen çözümler burada da geçerlidir. Günlük erişimde, mevcut bir konumu güncelleyin veya ücretli bir plan seçin. Bağlı bir hesaptaki işletme kaydından konum oluşturulduğunda da SY81086 içinde iç içe yer alır.
SY10152Konum, arşivlenebilmesi için gereken süre boyunca etkin kalmamış.Konumların POST /locations/archive tarafından kabul edilebilmesi için hesabın asgari etkin kalma süresi boyunca etkin olması gerekir; bu süre varsayılan olarak 90 gündür. Bu sürenin dolmasını bekleyin.
SY10155Hesabın Listings planı olmadığından konum oluşturulamaz.API anahtarı, yalnızca Social kullanan bir hesap gibi, Listings aboneliği olmayan bir hesaba ait. Konumlar Listings ürününün bir parçasıdır; POST /locations çağrısını yapmadan önce bu ürüne abone olun.

rate_limited

429 Too Many Requests: Hesap, planının istek hızı sınırını aştı. Gövde, bir retry_after_seconds ipucu, destek taleplerinde belirtmeniz için bir correlation_id ve bu bölüme geri bağlantı veren bir doc_url içeren standart hata yanıtıdır:

JSON
{  "error": {    "code": "RATE_LIMITED",    "message": "Too many requests. Slow down.",    "retry_after_seconds": 30,    "correlation_id": "9f2c1e64-2b1a-4b0e-9f1a-2c7d5e8a1b3c",    "doc_url": "https://listingsapi.com/docs/error-codes#rate_limited"  }}

retry_after_seconds ile belirtilen süre boyunca (veya varsa Retry-After üst bilgisinde belirtilen süre boyunca) bekleyin, ardından bekleme süresini üstel olarak artırarak yeniden deneyin. Plan başına sınırlar ve örnek bir bekleme süresi artırma uygulaması için İstek hızı sınırları bölümüne bakın.

payment_required

402: Bu hesabın son ödemesi gerçekleşmediğinden tüm /api/v4 uç noktaları duraklatılmış durumda. Gövde, mevcut olduğunda, ödenmemiş faturanın Stripe sayfası olan pay_url bilgisini içerir ve X-Error-Code yanıt üst bilgisi aynı code bilgisini taşır. Ödeme yapmak için kontrol panelindeki Faturalandırma sayfasını hâlâ açabilirsiniz.

JSON
{  "code": "payment_required",  "message": "This account has an unpaid invoice, so API access is paused. Pay the invoice to restore access.",  "pay_url": "https://invoice.stripe.com/i/acct_123/test_abc",  "doc_url": "https://listingsapi.com/docs/error-codes#payment_required"}

Son açık fatura ödendikten sonra erişim bir dakika içinde yeniden sağlanır. İlk başarısız ödemeden 3 gün sonra fatura hâlâ ödenmemişse Listings aboneliği iptal edilir ve hesabın konumları arşivlenir. Hesabın etkin bir Social aboneliği de varsa Social erişimi korunur; aksi takdirde hesap kapatılır ve API anahtarları çalışmayı durdurur.

social_payment_required

402: Social aboneliğinin son ödemesi gerçekleşmediğinden Social uç noktaları (/api/v4/social/*) duraklatılmış durumda. Listings uç noktaları çalışmaya devam eder. Gövde, payment_required ile aynı alanları içerir ve "code": "social_payment_required" bilgisine sahiptir. İlk başarısız ödemeden 3 gün sonra fatura hâlâ ödenmemişse Social aboneliği iptal edilir ve hesabın markaları arşivlenir. Listings aboneliği olmayan bir hesap kapatılır ve API anahtarları çalışmayı durdurur.

Geliştirici portalı kontrol düzlemi hataları

Geliştirici portalındaki hesap ve anahtar yönetimi uç noktaları (kontrol panelinin kendi API yolları), yukarıdaki REST errors[] biçimlerinden farklı, tek bir yapılandırılmış hata yanıtı döndürür. Her code, bir correlation_id ve burada ilgili bölüme geri bağlantı veren bir doc_url içerir.

JSON
{  "error": {    "code": "AUTH_INVALID_KEY",    "message": "Session is invalid or expired.",    "correlation_id": "9f2c1e64-2b1a-4b0e-9f1a-2c7d5e8a1b3c",    "doc_url": "https://listingsapi.com/docs/error-codes#auth_invalid_key"  }}

auth_missing_key

401: Kimlik bilgileri sağlanmadı. Yeniden oturum açın veya anahtarınızı Authorization: API <your-key> olarak gönderin.

auth_invalid_key

401: Oturum veya anahtar geçersiz ya da süresi dolmuş. Yeniden kimlik doğrulaması yapın veya kontrol panelinden yeni bir anahtar oluşturun.

auth_insufficient_scope

403: Kimlik bilgileri geçerli ancak bu işlem için yetkili değil. Okuma yetkisi kapsamındaki bir anahtar yazma uç noktalarını çağıramaz; gerekiyorsa yazma yetkili bir anahtar oluşturun.

not_found

404: İstenen kaynak veya ID ile belirtilen bir kaynak mevcut değil.

conflict

409: İstek, kaynağın mevcut durumuyla çakışıyor (örneğin, zaten iptal edilmiş bir anahtarın iptal edilmesi).

validation_failed

422: İstek gövdesi doğrulamadan geçemedi. Yanıttaki field ve details, hataya neden olan girdiyi belirtir.

internal_error

500: Sunucu tarafında beklenmeyen bir hata oluştu. Okuma işlemini, bekleme süresini üstel olarak artırarak yeniden deneyin; yazma işlemi için önce kaydı yeniden okuyun (Yazma işlemini yeniden denemek bedelsiz değildir bölümüne bakın). Destek ekibiyle iletişime geçerseniz correlation_id bilgisini belirtin.

dependency_unavailable

503: API'nin bağımlı olduğu bir hizmet geçici olarak kullanılamıyor. Bekleme süresini artırarak yeniden deneyin.

429 için yukarıdaki rate_limited bölümüne bakın.

Kodda hataları işleme

Önce HTTP durumunu kontrol edin; ardından yazma işlemleri için yanıt gövdesinde iç içe bir errors dizisi arayın:

Python
from listingsapi import APIError, ListingsAPI client = ListingsAPI(api_key=os.environ["LISTINGSAPI_KEY"]) try:    location = client.locations.create(input=payload)except APIError as e:    # Raised for a non-2xx status (AuthenticationError, ValidationError, and    # so on) and for an error payload returned inside a 200 body.    raise RuntimeError(f"Listings API error: {e}") from e

Doğrudan HTTP API kullanıldığında aynı iki kontrol açıkça yapılır: önce durum kodu, ardından yanıt içeriği kontrol edilir:

Python
resp = requests.post(    "https://listingsapi.com/api/v4/locations",    headers={"Authorization": f"API {os.environ['LISTINGSAPI_KEY']}"},    json=payload,    timeout=30,)resp.raise_for_status()body = resp.json() op = (body.get("data") or {}).get("createLocation") or {}if op.get("errors"):    messages = [e["message"] for e in op["errors"]]    raise RuntimeError(f"Listings API error: {messages}")

Python SDK her ikisini de sizin için yapar: her HTTP durumunu belirli bir türdeki istisnayla eşleştirir ve ayrıca bir 200 gövdesi içinde döndürülen hata içerikleri için de istisna oluşturur.