# Hata kodları > https://storelift.net/tr/docs/api/errors/ `/v1` altından dönen her hata aynı gövdeyi taşır. `error`, kodunda karar verirken dayanabileceğin değişmez bir koddur; `message` onu bir cümleyle açıklar, `docs` da bu sayfaya bağlanır. Hata mesajları API'nin döndürdüğü gibi İngilizcedir; altında Türkçesi yer alır. ```json { "error": "scope_required", "scope": "revenue:read", "message": "The key does not carry the scope this endpoint needs.", "docs": "https://storelift.net/docs/api/errors#scope_required" } ``` | Kod | Durum | Mesaj | | --- | --- | --- | | `missing_api_key` | 401 | Send the key in the Authorization: Bearer header or x-api-key. — Anahtarı Authorization: Bearer başlığında ya da x-api-key ile gönder. | | `invalid_api_key` | 401 | The key is not valid. — Anahtar geçerli değil. | | `invalid_token` | 401 | The access token is not valid or has expired. — Erişim belirteci geçerli değil ya da süresi dolmuş. | | `account_deleted` | 401 | The account behind this key was deleted. — Bu anahtarın bağlı olduğu hesap silinmiş. | | `key_expired` | 401 | The key has expired. Create a new one in Settings › API. — Anahtarın süresi dolmuş. Ayarlar › API'de yenisini oluştur. | | `key_revoked` | 401 | The key was revoked. — Anahtar iptal edilmiş. | | `key_budget_reached` | 402 | This key has used its monthly credit budget. Raise or remove the budget in Settings › API; other keys are not affected. — Bu anahtar aylık kredi bütçesini kullandı. Bütçeyi Ayarlar › API'de yükselt ya da kaldır; diğer anahtarlar etkilenmez. | | `key_limit` | 403 | This workspace has more live keys than it is entitled to, so this key is on hold. Delete a key in Settings › API or upgrade the plan. — Bu çalışma alanında hakkından fazla canlı anahtar var, bu yüzden bu anahtar askıda. Ayarlar › API'de bir anahtar sil ya da planı yükselt. | | `key_leaked` | 401 | The key was revoked after it was found in a public repository. Create a new one in Settings › API. — Anahtar, herkese açık bir depoda bulunduktan sonra iptal edildi. Ayarlar › API'de yenisini oluştur. | | `ip_not_allowed` | 403 | This key is restricted to other IP addresses (Settings › API › IP allow list). — Bu anahtar başka IP adresleriyle sınırlı (Ayarlar › API › IP kısıtı). | | `key_paused` | 403 | The key is paused. Resume it in Settings › API. — Anahtar duraklatılmış. Ayarlar › API'de sürdür. | | `plan_required` | 403 | The API is on the Pro plan and above; MCP is on every plan. — API, Pro planı ve üstünde; MCP her planda. | | `scope_required` | 403 | The key does not carry the scope this endpoint needs. — Anahtar, bu ucun istediği kapsamı taşımıyor. | | `app_not_allowed` | 403 | The key is restricted to other apps. — Anahtar başka uygulamalarla sınırlı. | | `credits_exhausted` | 402 | This month's API credits are used up. — Bu ayın API kredileri bitti. | | `rate_limited` | 429 | Too many requests for this key. Slow down and retry. — Bu anahtar için çok fazla istek. Yavaşla ve yeniden dene. | | `daily_hive_limit` | 429 | Today's Hive request allowance is used up. It resets at 00:00 UTC. — Bugünkü Hive istek hakkı bitti. 00:00 UTC'de sıfırlanır. | | `bad_country` | 400 | Send a two-letter storefront code, e.g. country=us. — İki harfli bir vitrin kodu gönder, ör. country=us. | | `unsupported_platform` | 400 | This metric source supports iOS. Send platform=ios. — Bu metrik kaynağı iOS'u destekler. platform=ios gönder. | | `bad_days` | 400 | Send a whole number of days between 1 and 90. — 1 ile 90 arasında tam sayı gün gönder. | | `hive_read_failed` | 400 | Hive could not read this observation. Retry shortly. — Hive bu gözlemi okuyamadı. Kısa süre sonra yeniden dene. | | `hive_write_failed` | 400 | Hive could not save this observation. Retry shortly. — Hive bu gözlemi kaydedemedi. Kısa süre sonra yeniden dene. | | `bad_kind` | 400 | kind must be one of grossing, free, paid, ipad. — kind şunlardan biri olmalı: grossing, free, paid, ipad. | | `bad_genre` | 400 | Send genre as an App Store genre id (e.g. 6014) or a category key such as games. — genre'ı App Store genre kimliği (ör. 6014) ya da games gibi bir kategori anahtarı olarak gönder. | | `bad_day` | 400 | Send day as YYYY-MM-DD, no later than yesterday. — day'i YYYY-MM-DD olarak gönder, en geç dün. | | `bad_goal` | 400 | Send goal as downloads, rank or revenue. — goal'ü downloads, rank ya da revenue olarak gönder. | | `bad_range` | 400 | Send from and to as YYYY-MM-DD, from on or before to. — from ve to'yu YYYY-MM-DD olarak gönder; from, to ile aynı gün ya da daha önce olmalı. | | `bad_term` | 400 | Send a keyword of 1–150 characters. — 1–150 karakterlik bir kelime gönder. | | `bad_app_id` | 400 | Send an App Store id (digits) or a Play package name. — Bir App Store kimliği (rakamlar) ya da Play paket adı gönder. | | `not_measured` | 404 | No verified observation is available for the requested app, keyword or scope. Missing data is not zero. Check the request parameters and follow the linked documentation for available actions. | | `not_connected` | 404 | This source is not connected to the workspace. Connect it under Settings › Connections. — Bu kaynak çalışma alanına bağlı değil. Ayarlar › Bağlantılar altından bağla. | | `bad_query` | 400 | Send q with 1–120 characters. — q'yu 1–120 karakterle gönder. | | `bad_id` | 400 | Send an id from a /v1/search result. — Bir /v1/search sonucundan gelen bir kimlik gönder. | | `no_filters` | 400 | Send at least one filter; the accepted filters are listed in filters. — En az bir süzgeç gönder; kabul edilen süzgeçler filters içinde listelenir. | | `bad_filter` | 400 | A filter value is malformed; the field is named in the response. Ranges take numbers, min on or below max. — Bir süzgeç değeri hatalı biçimde; alanın adı cevapta yazıyor. Aralıklar sayı alır; min, max'e eşit ya da ondan küçük olmalı. | | `bad_cursor` | 400 | The cursor is malformed or expired. Pass meta.pagination.nextCursor from the previous response unchanged. — İmleç hatalı biçimde ya da süresi dolmuş. Önceki cevaptaki meta.pagination.nextCursor değerini değiştirmeden gönder. | | `bad_ids` | 400 | Send ids as a comma-separated list, between min and max apps. — ids'i virgülle ayrılmış liste olarak gönder; uygulama sayısı min ile max arasında olmalı. | | `explorer_required` | 403 | This endpoint is not open on this account. Hive endpoints run on purchased API credits or Hive Explorer; keyword gap, keyword research and keyword metrics are Hive Explorer only. See https://storelift.net/hive/api — Bu uç bu hesapta açık değil. Hive uçları satın alınmış API kredileriyle ya da Hive Explorer ile çalışır; kelime boşluğu, kelime araştırması ve kelime metrikleri yalnız Hive Explorer'dadır. Bkz. https://storelift.net/hive/api | | `method_not_allowed` | 405 | Reads are GET; POST is taken on /v1/actions, /v1/actions/confirm, /v1/apps/{id}/validate-listing and /v1/hive/keywords/{term}/metrics/measure. — Okumalar GET'tir; POST yalnız /v1/actions, /v1/actions/confirm, /v1/apps/{id}/validate-listing ve /v1/hive/keywords/{term}/metrics/measure üzerinde kabul edilir. | | `bad_metrics` | 400 | metrics is a list of popularity and/or difficulty, each at most once. — metrics, popularity ve/veya difficulty içeren bir listedir; her biri en fazla bir kez. | | `bad_wait` | 400 | wait is a whole number of seconds from 0 to 20. — wait, 0 ile 20 arasında tam sayı saniyedir. | | `hive_measurement_unavailable` | 503 | Hive measurement is not available right now. Nothing was used; retry shortly. — Hive ölçümü şu anda kullanılamıyor. Hiçbir hak kullanılmadı; kısa süre sonra yeniden dene. | | `hive_measurement_queue_failed` | 503 | The measurement could not be queued. Nothing was charged; retry shortly. — Ölçüm sıraya alınamadı. Ücret alınmadı; kısa süre sonra yeniden dene. | | `hive_measurement_failed` | 503 | The source attempt failed. Valid metrics stay in the response; retry later. — Kaynak denemesi başarısız oldu. Geçerli metrikler cevapta kalır; sonra yeniden dene. | | `hive_measurement_incomplete` | 503 | The job finished without a result for every requested metric. Valid metrics stay in the response. — İş, istenen metriklerin hepsi için sonuç vermeden bitti. Geçerli metrikler cevapta kalır. | | `hive_measurement_deferred` | 503 | The source deferred this job. Valid metrics stay in the response; retry later. — Kaynak bu işi erteledi. Geçerli metrikler cevapta kalır; sonra yeniden dene. | | `hive_measurement_not_started` | 503 | No measurement job is running for this keyword. Retry the request. — Bu kelime için çalışan bir ölçüm işi yok. İsteği yeniden gönder. | | `unknown_action` | 400 | No such action. Call POST /v1/actions with one of the listed actions. — Böyle bir eylem yok. Listelenen eylemlerden biriyle POST /v1/actions çağır. | | `invalid_arguments` | 400 | An argument is missing or malformed; the field is named in the response. — Bir argüman eksik ya da hatalı biçimde; alanın adı cevapta yazıyor. | | `confirm_token_invalid` | 400 | The confirmation token is unknown or was already used. Preview the action again. — Onay belirteci bilinmiyor ya da daha önce kullanılmış. Eylemi yeniden önizle. | | `confirm_token_expired` | 400 | The confirmation token expired. Preview the action again. — Onay belirtecinin süresi doldu. Eylemi yeniden önizle. | | `confirm_token_mismatch` | 409 | The target changed after the preview. Preview the action again and re-read the diff. — Hedef önizlemeden sonra değişti. Eylemi yeniden önizle ve farkı yeniden oku. | | `write_limit_reached` | 403 | This write is outside the guardrails for the action (see reason). — Bu yazma, eylemin koruma sınırlarının dışında (reason alanına bak). | | `key_in_url` | 400 | API keys are not accepted in the URL, where logs and proxies keep them. Send the key in the x-api-key header (or Authorization: Bearer) and rotate this one. — API anahtarları URL'de kabul edilmez; günlükler ve vekil sunucular onları orada saklar. Anahtarı x-api-key başlığında (ya da Authorization: Bearer ile) gönder ve bu anahtarı yenile. | | `test_key_read_only` | 403 | Test keys (sl_test_) never write. — Test anahtarları (sl_test_) asla yazmaz. | | `job_not_found` | 404 | No such job in this workspace. — Bu çalışma alanında böyle bir iş yok. | | `workspace_suspended` | 403 | This workspace is suspended. Contact support@storelift.net. — Bu çalışma alanı askıya alındı. support@storelift.net ile iletişime geç. | | `ip_list_required` | 403 | This workspace requires every key to carry an IP allow list. Add one in Settings › API. — Bu çalışma alanı her anahtarın bir IP kısıtı taşımasını şart koşuyor. Ayarlar › API'de ekle. | | `already_measuring` | 409 | A measurement for this app is already running. — Bu uygulama için bir ölçüm zaten çalışıyor. | | `ai_limit` | 429 | This month's AI visibility runs are used. The response carries limit and resetsAt. — Bu ayın AI görünürlüğü turları kullanıldı. Cevap limit ve resetsAt değerlerini taşır. | | `in_progress` | 409 | A write for this target is already running. Wait for it to finish. — Bu hedef için bir yazma zaten çalışıyor. Bitmesini bekle. | | `asc_required` | 403 | Connect App Store Connect under Settings › Connections first. — Önce Ayarlar › Bağlantılar altından App Store Connect'i bağla. | | `asc_role` | 403 | The App Store Connect key needs the Admin or App Manager role to edit metadata. — Meta veriyi düzenlemek için App Store Connect anahtarının Admin ya da App Manager rolü olmalı. | | `asc_rejected` | 502 | App Store Connect refused the change; its own message is in detail. — App Store Connect değişikliği reddetti; kendi mesajı detail içinde. | | `asc_unavailable` | 502 | App Store Connect could not be reached. Retry in a moment. — App Store Connect'e ulaşılamadı. Birazdan yeniden dene. | | `ios_only` | 403 | This action needs the App Store side of the app. — Bu eylem uygulamanın App Store tarafını gerektirir. | | `no_editable_version` | 404 | No editable App Store version. Metadata can only change while a version is in Prepare for Submission or rejected — the current states are listed. — Düzenlenebilir App Store sürümü yok. Meta veri yalnızca bir sürüm Prepare for Submission durumundayken ya da reddedilmişken değişebilir — mevcut durumlar listelenir. | | `locale_not_found` | 404 | That storefront language is not on the version; the available locales are listed. — O vitrin dili sürümde yok; kullanılabilir diller listelenir. | | `changed_since_preview` | 409 | The listing changed in App Store Connect after the preview. Nothing was written — preview again. — Mağaza sayfası önizlemeden sonra App Store Connect'te değişti. Hiçbir şey yazılmadı — yeniden önizle. | | `ai_text_limit` | 429 | This month's AI writing allowance is used up. resetsAt says when it renews; Settings › Plan adds more. — Bu ayın AI yazım hakkı bitti. resetsAt ne zaman yenileneceğini söyler; Ayarlar › Plan'dan daha fazlası eklenir. | | `ai_not_configured` | 503 | The AI writer is starting up. Retry in a moment. — AI yazarı başlatılıyor. Birazdan yeniden dene. | | `ai_failed` | 502 | The AI writer returned an answer we could not read. Retry in a moment. — AI yazarı okuyamadığımız bir cevap döndürdü. Birazdan yeniden dene. | | `audit_failed` | 502 | The storefront scan stopped midway. Start it again with refresh. — Vitrin taraması yarıda durdu. refresh ile yeniden başlat. | | `review_ai_limit` | 429 | This month's Review AI allowance is used up. resetsAt says when it renews; Settings › Plan adds more. — Bu ayın Yorum AI hakkı bitti. resetsAt ne zaman yenileneceğini söyler; Ayarlar › Plan'dan daha fazlası eklenir. | | `review_not_found` | 404 | No review with that id in the stored reviews for this storefront. Take the id from get_reviews or search_reviews. — Bu vitrin için saklanan yorumlarda bu kimlikle bir yorum yok. Kimliği get_reviews ya da search_reviews'tan al. | | `bad_locale` | 400 | The locale is two letters, an underscore and two letters, e.g. de_de, pt_br. — Dil kodu iki harf, bir alt çizgi ve iki harften oluşur, ör. de_de, pt_br. | | `no_audit` | 409 | Localization writes from the storefront audit's source listing. Run get_storefront_audit with start for this app, then call again. — Yerelleştirme, vitrin analizinin kaynak sayfasından yazar. Bu uygulama için get_storefront_audit'i start ile çalıştır, sonra yeniden çağır. | | `no_storefront` | 409 | No storefront of this app reads that locale. Pick a locale the storefront audit lists. — Bu uygulamanın hiçbir vitrini o dili okumuyor. Vitrin analizinin listelediği bir dil seç. | | `measure_busy` | 503 | Apple's search is answering slowly this minute; call again shortly. Nothing was used. — Apple'ın araması şu dakika yavaş cevap veriyor; kısa süre sonra yeniden çağır. Hiçbir hak kullanılmadı. | | `localize_quota` | 429 | This plan's listing writes for the period are used. The response carries limit, used and period. — Bu planın dönem için sayfa yazımı hakkı kullanıldı. Cevap limit, used ve period değerlerini taşır. | | `no_job` | 404 | No localization is running for that locale. Call without poll to start one. — O dil için çalışan bir yerelleştirme yok. Başlatmak için poll olmadan çağır. | | `ai_timeout` | 504 | The AI writer took too long. Retry in a moment; the allowance was returned. — AI yazarı çok uzun sürdü. Birazdan yeniden dene; hak iade edildi. | | `not_found` | 404 | No such app in this workspace. — Bu çalışma alanında böyle bir uygulama yok. | | `unknown_endpoint` | 404 | No such endpoint. — Böyle bir uç yok. |