> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Hata kodu kataloğu

> API'nin döndürdüğü tüm iş hatası kodlarını modül modül, HTTP durumu ve anlamıyla listeler.

Bir istek iş kuralına takılınca API, yanıt gövdesindeki `error_code` alanında sabit bir kod döndürür. Bu sayfa, entegrasyonunuzun karşılaşabileceği kodları konuya göre gruplar ve her biri için HTTP durumunu ve ne zaman döndüğünü söyler. Hata yanıtının genel biçimi ve istemci tarafında hata işleme için [Hatalar](/api/istekler/hatalar) sayfasına bakın.

## Kataloğu kullanma

`error_code` makine tarafından okunacak değerdir; `message` metni ise `Accept-Language` başlığına göre Türkçe veya İngilizce gelir. Programınızda `message` yerine `error_code` değerine göre dallanın.

```json theme={null}
{
  "success": false,
  "error_code": "CONVERSATION_NOT_ASSIGNED",
  "message": "Bu kişinin sohbeti size atanmamış. Görüntülemek için yöneticinizden atama ya da yetki isteyin.",
  "data": { "assigned_user": { "id": 123, "name": "Ayşe Yılmaz" } },
  "meta": { "timezone": "Europe/Istanbul" }
}
```

* `errors` alanı yalnızca alan hatası olduğunda gelir. `data` alanı yalnızca makine tarafından okunabilir bağlam olduğunda gelir. Boş alanlar `null` olarak gönderilmez, yanıttan çıkarılır.
* Toplu işlemlerde bazı kodlar tek tek kalemlerin sonucunda döner. Bunlar tabloda "toplu kalem" olarak işaretlidir.
* Aşağıdaki tablolar iş hatalarını listeler. Mesaj metinlerinin tamamı için yanıttaki `message` alanını kullanın.

<Note>
  Tanımlı olduğu hâlde hiçbir istekte döndürülmeyen kodlar ve yalnızca Flextell'in iç faturalama süreçlerinde kullanılan kodlar bu listeye alınmamıştır.
</Note>

### Her uç noktada görebileceğiniz durumlar

Bu durumlar bir modüle bağlı değildir. İstek hangi uç noktaya giderse gitsin dönebilir.

| Kod | HTTP | Ne zaman |
| - | - | - |
| `MALFORMED_JSON` | 400 | JSON içerik türüyle gönderilen gövde geçerli JSON değil. Kimlik doğrulamadan önce denetlenir. |
| `BAD_REQUEST` | 400 | Başka bir kodla eşlenmeyen geçersiz istek. Yapay zeka raporunun PDF'i tamamlanmadan istenirse 409 ile de döner. |
| `UNAUTHENTICATED` | 401 | Token eksik veya geçersiz. |
| `FORBIDDEN` | 403 | Token'da gereken scope yok, izin yok veya kayıt üzerinde işlem yetkiniz yok. |
| `RESOURCE_NOT_FOUND` | 404 | Kayıt yok, başka kliniğe ait veya görünürlüğünüz dışında. Bilinmeyen rota da bu kodla döner. |
| `METHOD_NOT_ALLOWED` | 405 | Uç nokta bu HTTP yöntemini desteklemiyor. `Allow` başlığı geçerli yöntemleri listeler. |
| `VALIDATION_FAILED` | 422 | Gönderilen veri doğrulamadan geçmedi. Ayrıntı `errors` alanındadır. |
| `TOO_MANY_REQUESTS` | 429 | Oran sınırı aşıldı. Bkz. [Oran sınırları](/api/istekler/oran-sinirlari). |
| `SERVER_ERROR` | 500 / 503 | Beklenmeyen sunucu hatası. Yapay zeka raporunun PDF'i hâlâ hazırlanıyorsa 503 döner. |

## Genel ve klinik kodları

Klinik seçimi, hesap, kullanıcı daveti, OAuth uygulaması ve kurulum ile ilgili kodlar. `X-Tenant` başlığı için bkz. [Klinikler ve X-Tenant](/api/klinikler-ve-x-tenant).

### Klinik ve hesap

| Kod | HTTP | Ne zaman |
| - | - | - |
| `TENANT_HEADER_REQUIRED` | 400 | Klinik rotasında `X-Tenant` başlığı yok. `/oauth/*` ve `/announcements` rotalarında da zorunludur. |
| `TENANT_NOT_FOUND` | 404 | Klinik kimliği hatalı, klinik yok veya silinmiş ya da kullanıcı o kliniğin üyesi değil. |
| `TENANT_CREATION_FORBIDDEN` | 403 | Hesap aktif değil veya ad bilgisi boş olduğu için klinik oluşturulamıyor. |
| `TENANT_CREATION_MEMBERSHIP_EXISTS` | 409 | Kullanıcı zaten bir kliniğe üye. |
| `TENANT_CREATION_KEY_CONFLICT` | 409 | Aynı `Idempotency-Key` başka bir içerikle klinik oluşturma isteğinde kullanılmış. Bkz. [Idempotency](/api/istekler/idempotency). |
| `SINGLE_MEMBER_TENANT` | 422 | Hesap silinirken kullanıcı, tek üyesi olduğu bir klinik bırakıyor. Yanıtın `data.single_member_tenants` alanı bu klinikleri (`id`, `name`) listeler. |
| `USER_LIMIT_REACHED` | 422 | Kliniğin azami kullanıcı sayısına ulaşıldı. Personel eklenirken veya etkinleştirilirken döner. |
| `USER_SAVE_FAILED` | 422 | Kullanıcı kaydı beklenmedik biçimde başarısız oldu. İsteği yeniden deneyin. |
| `TWO_FACTOR_NOT_ENABLED` | 422 | İki faktörlü kimlik doğrulama kapalıyken kapatma, doğrulama veya kurtarma kodu işlemi istendi. |
| `TWO_FACTOR_INVALID_CODE` | 422 | İki faktörlü doğrulama kodu hatalı. |
| `RECOVERY_CODES_REGENERATION_FAILED` | 422 | Kurtarma kodları yeniden oluşturulamadı. |
| `SESSION_LOGOUT_FAILED` | 409 | Diğer tarayıcı oturumlarını kapatma işlemi zaten sürüyor veya kapatılamadı. |

### Davetler

| Kod | HTTP | Ne zaman |
| - | - | - |
| `INVITATION_INVALID` | 404 | Davet geçersiz. |
| `INVITATION_EXPIRED` | 410 | Davetin süresi dolmuş. |
| `INVITATION_PROCESSED` | 409 | Davet daha önce kabul edilmiş veya reddedilmiş. |
| `INVITATION_DUPLICATE` | 409 | Aynı kişi için aktif bir davet zaten var. |
| `INVITATION_ALREADY_MEMBER` | 409 | Kullanıcı zaten bu kliniğin üyesi. |
| `INVITATION_EMAIL_UNVERIFIED` | 403 | Davetleri kullanmadan önce e-posta adresinin doğrulanması gerekiyor. |
| `INVITATION_ROLE_INVALID` | 422 | Davetteki rol artık kullanılamıyor. |
| `INVITATION_PROFILE_INCOMPLETE` | 422 | Daveti kabul etmeden önce profilin tamamlanması gerekiyor. |
| `INVITATION_DELIVERY_UNAVAILABLE` | 503 | Davet gönderimi yapılandırılmamış. |

### OAuth uygulamaları

| Kod | HTTP | Ne zaman |
| - | - | - |
| `OAUTH_CLIENT_ALREADY_REVOKED` | 422 | Uygulamanın erişimi zaten kaldırılmış. |
| `OAUTH_CLIENT_NOT_REVOKED` | 422 | Uygulama zaten aktif; erişimi geri açma isteği gereksiz. |
| `OAUTH_SCOPE_INVALID` | 422 | İstenen scope'lardan biri veya birkaçı geçersiz. |

### Kurulum

| Kod | HTTP | Ne zaman |
| - | - | - |
| `SETUP_REQUIRED` | 428 | Zorunlu kurulum adımları tamamlanmadığı için klinik rotaları kilitli. `data.next_step` sıradaki adımı verir. Bkz. [Erişim kilitleri](/api/istekler/erisim-kilitleri). |
| `SETUP_INCOMPLETE` | 422 | Gerekli kurulum adımları veya kayıtlar eksik. `data.blockers` eksikleri listeler. |
| `SETUP_STEP_INCOMPLETE` | 422 | Adımı tamamlamadan önce gerekli kayıtlar kaydedilmeli. `data.step` ve `data.missing` alanları gelir. |
| `SETUP_STEP_NOT_SKIPPABLE` | 422 | Bu kurulum adımı atlanamaz. |
| `SETUP_STEP_NOT_APPLICABLE` | 422 | Adım, seçilen çalışma modu için geçerli değil. |

## Hasta, lead ve randevu kodları

### Hastalar

| Kod | HTTP | Ne zaman |
| - | - | - |
| `CUSTOMER_ERASED` | 409 | Verileri imha edilmiş hasta üzerinde yazma işlemi denendi. Kayıt salt okunurdur. Kayıtların `record_state.reason_code` alanında da bu değer görünür. Toplu işlemlerde kalem kodu olarak da döner. |
| `CUSTOMER_FORM_ALREADY_COMPLETED` | 409 | Hasta formu bağlantısı ikinci kez gönderildi. |
| `MERGE_SAME_CUSTOMER` | 422 | Hasta kendisiyle birleştirilemez. |
| `MERGE_TENANT_MISMATCH` | 422 | Birleştirilecek iki hasta aynı kliniğe ait değil. |
| `MERGE_CUSTOMER_DELETED` | 422 | Silinmiş bir hasta birleştirmeye katılamaz. |
| `MERGE_CUSTOMER_ERASED` | 422 | Verisi imha edilmiş veya açık imha talebi olan hasta birleştirmeye katılamaz. |
| `MERGE_INVALID_FIELD_SELECTION` | 422 | Birleştirme alan seçimi bilinmeyen bir alan veya geçersiz bir değer içeriyor. `data.fields` alanı ilgili alanları gösterir. |

### Lead'ler ve pipeline

| Kod | HTTP | Ne zaman |
| - | - | - |
| `LEAD_NOT_ASSIGNED` | 403 | Lead, işlemi yapan kullanıcıya atanmamış. `data.assigned_user` sahibin `id` ve `name` değerini verir; atanmamışsa `null` gelir. Kayıtların `record_state.reason_code` alanında ve toplu kalem sonuçlarında da görünür. |
| `LEAD_FINANCIAL_BLOCKED` | 422 | Lead aşamasındaki kayıt için finansal işlem yapılamaz. Önce Lead'i hastaya dönüştürün. |
| `LEAD_NOT_CONVERTIBLE` | 422 | Lead yalnızca kazanıldı aşamasından hastaya dönüştürülebilir. |
| `LEAD_ALREADY_CONVERTED` | 422 | İşlem, hastaya dönüştürülmüş Lead üzerinde yapılamaz. |
| `LEAD_LOST_REASON_REQUIRED` | 422 | Lead'i kaybedildi olarak işaretlerken kayıp nedeni zorunlu. `errors.lost_reason` alanı gelir. |
| `LEAD_NO_LOST_STAGE` | 422 | Aktif pipeline'da kaybedildi aşaması yok. |
| `LEAD_NO_WON_STAGE` | 422 | Aktif pipeline'da kazanıldı aşaması yok. |
| `LEAD_ASSIGNEE_INVALID` | 422 | Seçilen kullanıcıya Lead atanamaz. |
| `LEAD_NO_ACTIVE_PIPELINE` | 422 | Yeni sohbetin kişisi Lead olacak ama aktif pipeline yok. |
| `PIPELINE_ACTIVE_DELETE_BLOCKED` | 422 | Aktif pipeline silinemez. |
| `PIPELINE_STAGE_LOCKED` | 422 | Kilitli aşamalar (giriş, kazanıldı, kaybedildi) silinemez. |
| `PIPELINE_STAGE_HAS_LEADS` | 422 | İçinde Lead bulunan aşama silinemez. Önce Lead'leri başka bir aşamaya taşıyın. |

### Randevular, hatırlatmalar ve tedaviler

| Kod | HTTP | Ne zaman |
| - | - | - |
| `APPOINTMENT_ALREADY_CANCELLED` | 409 | `POST /appointments/{id}/cancel` zaten iptal edilmiş bir randevuya gönderildi. |
| `APPOINTMENT_NOT_CANCELLED` | 409 | `POST /appointments/{id}/revert-cancel` iptal edilmemiş bir randevuya gönderildi. |
| `APPOINTMENT_SALE_EXISTS` | 409 | Randevu tamamlanırken "satış oluştur" seçildi ama randevunun satışı zaten var. `data.sale_id` mevcut satışı verir. |
| `APPOINTMENT_SALE_MISSING` | 422 | Randevu tamamlanırken "mevcut satışa ekle" seçildi ama randevunun satışı yok. |
| `REMINDER_NOT_PENDING` | 422, toplu kalem | Bekleyen olmayan hatırlatma onaylanmak veya reddedilmek istendi. |
| `REMINDER_EXPIRED` | 422, toplu kalem | Gönderim zamanı geçen hatırlatma onaylanamaz veya reddedilemez. |
| `REMINDER_NOT_ERRORED` | 422, toplu kalem | Yalnızca hatalı hatırlatmalar yeniden kuyruğa alınabilir. |
| `REMINDER_NOT_SENDABLE` | 422, toplu kalem | Yalnızca kuyrukta ve onaylanmış hatırlatmalar gönderilebilir. |
| `REMINDER_NOT_DELETABLE` | 422, toplu kalem | Yalnızca kuyruktaki, hatalı veya süresi geçmiş hatırlatmalar silinebilir. |
| `REMINDER_SEND_FAILED` | 422, toplu kalem | Hatırlatma kanal üzerinden gönderilemedi. |
| `TREATMENT_SESSIONS_PLAN_REQUIRED` | 422 | Seans sayısı değiştirilirken seans planı gönderilmedi. |

<Note>
  `POST /appointments` ile iptal statüsünde randevu oluşturmak `422` ve `VALIDATION_FAILED` döndürür; `status` alanında hata vardır. Önce randevuyu oluşturun, sonra iptal edin. Ayrıntı için [Randevular](/api/kaynaklar/randevular) sayfasına bakın.
</Note>

## Sohbet ve kanal kodları

### Sohbetler ve mesajlar

| Kod | HTTP | Ne zaman |
| - | - | - |
| `CONVERSATION_NOT_ASSIGNED` | 403 | `ViewAllConversations` iznine sahip olmayan kullanıcı, kendisine atanmamış bir Lead'in sohbetini görmek veya başlatmak istedi. `data.assigned_user` sahibin `id` ve `name` değerini verir; atanmamışsa `null` gelir. Görünürlük kuralları için bkz. [İzinler ve görünürlük](/api/izinler-ve-gorunurluk). |
| `CONVERSATION_CHANNEL_MISSING` | 422 | Sohbetin kanalı bulunamadı. |
| `CONVERSATION_CUSTOMER_UNREACHABLE` | 422 | Hastaya, bağlı kanalların hiçbirinden ulaşılamıyor. |
| `CONVERSATION_ADDRESS_TAKEN` | 409 | Bu adres başka bir hastanın sohbetine ait. |
| `CONVERSATION_ALREADY_ARCHIVED` | 422 | Sohbet zaten arşivlenmiş. |
| `CONVERSATION_NOT_ARCHIVED` | 422 | Sohbet arşivlenmemiş; arşivden çıkarılamaz. |
| `MESSAGE_TOO_LONG` | 422 | Mesaj, kanalın izin verdiği uzunluğu aşıyor. Mesajda sınır karakter sayısı yazar. |
| `UNSUPPORTED_FILE_TYPE` | 422 | Dosya türünü kanal desteklemiyor. |
| `MEDIA_GROUP_CONFLICT` | 422 | Albüm için gönderilen `media_group_id` başka bir sohbette veya gönderende kullanılmış. |
| `MESSAGE_EDIT_BLOCKED` | 422 | Mesaj düzenlenemez: silinmiş, hastadan gelmiş, metin değil, kanal düzenlemeyi desteklemiyor veya düzenleme süresi dolmuş. |
| `MESSAGE_EDIT_FAILED` | 422 | Mesaj kanal üzerinde düzenlenemedi. |
| `MESSAGE_DELETE_BLOCKED` | 422 | Mesaj silinemez. |
| `MESSAGE_DELETE_FAILED` | 422 | Mesaj kanal üzerinde silinemedi. |
| `MESSAGE_ALREADY_DELETED` | 422 | Mesaj zaten silinmiş. |
| `MESSAGE_REACTION_BLOCKED` | 422 | Mesaj tepkileri desteklemiyor. |
| `MESSAGE_REACTION_FAILED` | 422 | Mesaj tepkisi güncellenemedi. |
| `SUGGESTION_SOURCE_MISSING` | 422 | AI önerisini yeniden oluşturmak için yanıtsız hasta mesajı yok. |
| `PENDING_APPOINTMENT_UPDATE_FAILED` | 422 | Sohbetten bekleyen randevu güncellenemedi. |

<Warning>
  `MESSAGE_EDIT_BLOCKED` ve `MESSAGE_EDIT_FAILED` kodlarının `message` metni bazı durumlarda İngilizce gelir. Durumu ayırt etmek için metne değil kodun kendisine bakın.
</Warning>

### Hızlı Yanıtlar

| Kod | HTTP | Ne zaman |
| - | - | - |
| `QUICK_REPLY_INACTIVE` | 422 | Hızlı Yanıt aktif değil; gönderilemez. |
| `QUICK_REPLY_EMPTY_MESSAGE` | 422 | Gönderilecek içerik yok: mesaj boş ve dosya seçilmedi. |
| `QUICK_REPLY_MEDIA_MISSING` | 422 | Hızlı Yanıta eklenmiş medya yok. |
| `QUICK_REPLY_MEDIA_LIMIT_REACHED` | 422 | Hızlı Yanıt izin verilen en fazla eke zaten sahip. |
| `QUICK_REPLY_MEDIA_ORDER_MISMATCH` | 422 | Yeni sıralama, Hızlı Yanıtın tüm eklerini birer kez içermiyor. |

### Kanallar

| Kod | HTTP | Ne zaman |
| - | - | - |
| `CHANNEL_NOT_WEBSITE` | 422 | İşlem yalnızca web sitesi kanallarında kullanılabilir. |
| `CHANNEL_EMBED_TOKEN_MISSING` | 422 | Web sitesi kanalının henüz gömme token'ı yok. |
| `CHANNEL_NOT_WHATSAPP` | 422 | İşlem yalnızca WhatsApp kanallarında kullanılabilir. |
| `CHANNEL_NOT_CONNECTED` | 422 | WhatsApp kanalı bağlı değil. Önce bağlayın. |
| `CHANNEL_INACTIVE` | 422 | Sohbetin kanalı pasif (**Aktif** anahtarı kapalı). Metin, medya, sesli mesaj, Hızlı Yanıt, tepki ve AI önerisi gönderimi bu kodla reddedilir; mesaj kuyruğa alınmaz ve saklanmaz. Kanalı yeniden etkinleştirip tekrar deneyin. `CHANNEL_NOT_CONNECTED` kanalın sağlayıcı bağlantısının kopuk olduğunu, `CHANNEL_INACTIVE` ise kanalın kapatıldığını gösterir. |
| `CHANNEL_HISTORY_SYNC_DISABLED` | 422 | Kanalın geçmiş senkronizasyonu kapalı. Önce açın. |
| `CHANNEL_PROVIDER_UNSUPPORTED` | 422 | Kanal sağlayıcısı bu işlemi desteklemiyor. |
| `CHANNEL_PROVIDER_UNAVAILABLE` | 502 | Kanal sağlayıcısına ulaşılamadı. Daha sonra yeniden deneyebilirsiniz. |
| `CHANNEL_NOT_TELEGRAM` | 422 | İşlem yalnızca Telegram kanallarında kullanılabilir. |
| `CHANNEL_TELEGRAM_TOKEN_MISSING` | 422 | Telegram kanalını bağlamak için bot token gerekli. Hata `errors.bot_token` altında gelir. |
| `CHANNEL_TELEGRAM_TOKEN_INVALID` | 422 | Telegram bot token'ı reddetti. Token'ı BotFather'dan alın ve kontrol edin. |
| `CHANNEL_TELEGRAM_WEBHOOK_REJECTED` | 422 | Telegram webhook adresini reddetti. Adres herkese açık bir HTTPS URL olmalı. Hata `errors.webhook_base_url` altında gelir. |

<Note>
  Gönderim kabul edildikten (kuyruğa alındıktan) sonra kanal kapatılırsa istek hata dönmez; mesaj saklanır, `metadata.delivery_status` değeri `failed` olur ve `ChatLogUpdated` olayı yeniden yayınlanır. Ayrıntı için [Kanallar ve olaylar](/api/gercek-zamanli/kanallar-ve-olaylar) sayfasına bakın.
</Note>

## Finans, satış ve fatura kodları

### Hesaplar ve işlemler

| Kod | HTTP | Ne zaman |
| - | - | - |
| `TRANSACTION_CREATE_FAILED` | 422 | İşlem oluşturulamadı. İsteği yeniden deneyin. |
| `PAIRED_TRANSACTION_IMMUTABLE` | 422 | Eşleştirilmiş işlemin tutarı düzenlenemez. İşlemi silip yeniden oluşturun. |
| `BANK_ACCOUNT_HAS_TRANSACTIONS` | 422 | İşlemi olan banka hesabı silinemez. |
| `BANK_ACCOUNT_UPDATE_BLOCKED` | 422 | Banka hesabı güncellenemez. |
| `ACCOUNT_TRANSACTION_NOT_DELETABLE` | 422 | Toplu silmede seçilen hareketlerden bazıları kaydı değiştirilemeyen bir hastaya ait olduğu için hiçbir hareket silinmedi. |

### Satışlar, teklifler ve stok

| Kod | HTTP | Ne zaman |
| - | - | - |
| `SALE_NO_CUSTOMER` | 422 | Satış için hasta bulunamadı. |
| `PAYMENT_ADD_FAILED` | 422 | Tahsilat eklenirken hata oluştu. İsteği yeniden deneyin. |
| `SALE_TRANSACTION_NOT_COLLECTION` | 422 | Yalnızca tahsilat işlemleri güncellenebilir; bu işlem tahsilat değil. |
| `SALE_INVOICED` | 422 | Faturalandırılmış satış silinemez. |
| `SALE_CANCELLED` | 422 | İptal edilmiş satış stoktan düşülemez. |
| `SALE_NOTHING_TO_DEDUCT` | 422 | Satışta stoktan düşülecek ürün kalemi yok. |
| `SALE_ALREADY_DEDUCTED` | 422 | Bu satış için stok zaten düşülmüş. |
| `STOCK_DEDUCTION_DISABLED` | 422 | Klinikte manuel stok düşme kapalı; stok otomatik düşülür. |
| `INSUFFICIENT_STOCK` | 422 | İşlemi tamamlamak için yeterli stok yok. Mesaj ürünü ve depoyu belirtir. |
| `STOCK_QUANTITY_LIMIT_EXCEEDED` | 422 | İşlem sonucundaki stok miktarı izin verilen üst sınırı aşıyor. |
| `WAREHOUSE_HAS_STOCK` | 422 | Stoğu kalan depo silinemez. |
| `OFFER_LOCKED` | 422 | Kabul edilmiş veya satışa dönüştürülmüş teklif güncellenemez ya da silinemez. |
| `OFFER_NOT_CONVERTIBLE` | 422 | Teklif satışa dönüştürülemez. |
| `OFFER_ALREADY_CONVERTED` | 422 | Teklif zaten satışa dönüştürülmüş. |
| `OFFER_TEMPLATE_MISSING` | 422 | Klinikte aktif bir teklif şablonu yapılandırılmamış. |
| `OFFER_TEMPLATE_INVALID` | 422 | Seçilen teklif şablonu bu kliniğe ait değil. |
| `OFFER_PDF_FILE_MISSING` | 404 | Teklifin PDF dosyası depolama alanında yok. |

### Faturalar

e-Fatura entegratörüne bağlı işlemlerin çoğu, entegratör çağrısı başarısız olduğunda ilgili `*_FAILED` koduyla `422` döner. İsteği daha sonra yeniden deneyebilirsiniz.

| Kod | HTTP | Ne zaman |
| - | - | - |
| `INVOICE_ACCOUNT_MISSING` | 422 | Fatura bir fatura hesabına bağlı değil. |
| `INVOICE_ACCOUNT_HAS_INVOICES` | 422 | Fatura kesmiş fatura hesabı silinemez. |
| `INVOICE_CREATE_FAILED` | 422 | Fatura oluşturulamadı. |
| `INVOICE_PREVIEW_FAILED` | 422 | Fatura önizlemesi oluşturulamadı. |
| `INVOICE_PDF_GENERATION_FAILED` | 422 | Fatura PDF dosyası oluşturulamadı. |
| `INVOICE_SEND_FAILED` | 422 | Fatura gönderilemedi. |
| `INVOICE_EMAIL_SEND_FAILED` | 422 | Fatura e-postası gönderilemedi. |
| `INVOICE_EMAIL_HISTORY_FAILED` | 422 | Fatura e-posta geçmişi alınamadı. |
| `INVOICE_STATUS_QUERY_FAILED` | 422 | Fatura durumu sorgulanamadı. |
| `INVOICE_SERIES_LOOKUP_FAILED` | 422 | Fatura serisi alınamadı. |
| `INVOICE_CREDIT_LOOKUP_FAILED` | 422 | Fatura kredi bilgisi alınamadı. |
| `INVOICE_CANCEL_FAILED` | 422 | Fatura iptal edilemedi. |
| `INVOICE_CANCEL_REVERT_FAILED` | 422 | Fatura iptali geri alınamadı. |

## Abonelik kodları

Abonelik, plan, ek paket ve ödeme akışının kodları. `402` ile dönen kilitlerin davranışı için bkz. [Erişim kilitleri](/api/istekler/erisim-kilitleri). Planlar ve ödemeler için bkz. [Abonelik ve faturalama](/api/kaynaklar/abonelik-ve-faturalama).

### Abonelik ve kota

| Kod | HTTP | Ne zaman |
| - | - | - |
| `SUBSCRIPTION_REQUIRED` | 402 / 422 | 402: abonelik veya demo süresi dolduğu için klinik rotaları ya da kotalı özellikler (yükleme, AI vb.) kilitli. 422: demo klinikte ücretli plan atandı veya aktif ücretli plan olmadan ek paket ya da kullanıcı sayısı değişikliği istendi. |
| `ACCESS_RESTRICTED_BY_OVERDUE_PAYMENT` | 402 | Vadesi geçmiş ödeme tamamlanana kadar erişim kısıtlı. `data` içinde `proforma_invoice_id` ve `due_date` gelir. |
| `QUOTA_EXHAUSTED` | 422 | Ölçülen özelliğin kullanım hakkı doldu. `data.billing_type` hangi kotanın dolduğunu söyler. |
| `STORAGE_HARD_LIMIT_EXCEEDED` | 422 | Yükleme, kliniğin depolama üst sınırını aşar. `data` içinde `used_bytes`, `hard_limit_bytes` ve `requested_bytes` gelir. |
| `SUBSCRIPTION_CHANGE_NOT_AVAILABLE` | 422 / 409 | 422: aktif dönemde plan değiştirilemez. 409: başka bir plan teklifi için ödeme yapılmış veya sürüyor; `data.proforma_invoice_id` verilir. |
| `PLAN_DOWNGRADE_BLOCKED_BY_ACTIVE_USERS` | 422 | Hedef planın izin verdiğinden fazla aktif kullanıcı var. Önce fazlalıkları devre dışı bırakın. `data` içinde `active_users`, `limit`, `plan` gelir. |
| `SEAT_REDUCTION_BLOCKED_BY_ACTIVE_USERS` | 422 | Azaltılan kullanıcı sayısından fazla aktif kullanıcı var. `data` içinde `active_users` ve `limit` gelir. |
| `BILLING_PLAN_NOT_FOUND` | 404 / 422 | 404: atanmak istenen plan yok. 422: satın alınmak veya fiyatlanmak istenen plan bilinmiyor, pasif veya faturalanamaz. |
| `QUOTA_PACKAGE_NOT_FOUND` | 404 / 422 | Ek paket bulunamadı. |
| `QUOTA_PACKAGE_NOT_AVAILABLE_FOR_PLAN` | 422 | Ek paket kliniğin planında kullanılamıyor. |
| `PURCHASE_IDEMPOTENCY_CONFLICT` | 409 | Satın alma anahtarı başka bir istek için zaten kullanılmış. Bkz. [Idempotency](/api/istekler/idempotency). |
| `PURCHASE_NOT_CANCELLABLE` | 409 | Ödeme işleniyor veya satın alım artık iptal edilemiyor. Ödeme durumunu yeniden kontrol edin. |

### Proforma faturalar ve ödemeler

| Kod | HTTP | Ne zaman |
| - | - | - |
| `PROFORMA_NOT_FOUND` | 404 | Proforma fatura yok veya başka bir kliniğe ait. |
| `PROFORMA_INVALID_TRANSITION` | 422 | Proforma fatura istenen duruma geçirilemez. |
| `PROFORMA_NOT_PAYABLE` | 422 | Proforma fatura mevcut durumunda ödenemez. |
| `PROFORMA_ALREADY_PAID` | 422 | Proforma faturanın tamamı zaten ödenmiş. |
| `OFFICIAL_INVOICE_ISSUED` | 422 | Proforma için resmi fatura kesilmiş; önce faturayı iptal edin. |
| `PAYMENT_AMOUNT_EXCEEDS_BALANCE` | 422 | Ödeme tutarı kalan bakiyeyi aşıyor. `data` içinde `amount` ve `outstanding_amount` gelir. |
| `PAYMENT_AMOUNT_MISMATCH` | 422 | Doğrulanan ödeme tutarı kalan bakiyeyle eşleşmiyor. |
| `PAYMENT_CURRENCY_MISMATCH` | 422 | Doğrulanan ödeme para birimi istenenle eşleşmiyor. |
| `PAYMENT_ALREADY_PROCESSED` | 409 | Bu ödeme zaten işlenmiş. |
| `PAYMENT_SESSION_EXPIRED` | 409 | Ödeme oturumunun süresi dolmuş. Yeni bir ödeme denemesi başlatın. |
| `PAYMENT_BUYER_EMAIL_REQUIRED` | 422 | Ödemeyi başlatmadan önce geçerli bir fatura e-posta adresi eklenmeli. |
| `PAYMENT_INITIATION_FAILED` | 502 | Ödeme başlatılamadı. |
| `PAYMENT_VERIFICATION_FAILED` | 502 | Ödeme, sağlayıcı üzerinden doğrulanamadı. |
| `PAYMENT_GATEWAY_UNAVAILABLE` | 503 | Ödeme altyapısı kullanılamıyor. |

### İndirim kodları

| Kod | HTTP | Ne zaman |
| - | - | - |
| `DISCOUNT_CODE_NOT_FOUND` | 404 | İndirim kodu bulunamadı. |
| `DISCOUNT_CODE_EXPIRED` | 422 | İndirim kodu artık geçerli değil. |
| `DISCOUNT_CODE_EXHAUSTED` | 422 | İndirim kodu kullanım sınırına ulaştı. |
| `DISCOUNT_CODE_ALREADY_USED` | 422 | İndirim kodu bu klinik tarafından daha önce kullanılmış. |

## Diğer kodlar

### Dosyalar

| Kod | HTTP | Ne zaman |
| - | - | - |
| `FILE_CONFIRM_FAILED` | 422 | Yüklenen dosya doğrulanamadı. Neden `message` alanında yazar. Bkz. [Dosya yükleme](/api/istekler/dosya-yukleme). |
| `FILE_CONTENT_UNAVAILABLE` | 404 | Dosyanın saklanan içeriğine artık ulaşılamıyor. |
| `FILE_REORDER_MISMATCH` | 422 | `PUT /v1/files/reorder` ile gönderilen dosyalar, kaydın dosyalarıyla birebir aynı değil. |

### Silme, geri dönüşüm ve veri imha

Silme davranışı için bkz. [Silme yaşam döngüsü](/api/istekler/silme-yasam-dongusu).

| Kod | HTTP | Ne zaman |
| - | - | - |
| `RECYCLE_BIN_ENTRY_UNRECOVERABLE` | 409 | Silinen kayıt artık geri yüklenemez: kayıt yok veya silinmiş durumda değil. |
| `RESTORE_CONFLICT` | 409 | Silinen kayıt aktif bir kayıtla çakışıyor. `data.conflicts` dizisi her çakışma için `model_type`, `columns` ve `conflicting_id` verir. |
| `RECYCLE_BIN_RESTORE_FAILED` | 500 | Silinen kayıt geri yüklenemedi. |
| `RECYCLE_BIN_PURGE_FAILED` | 500 | Silinen kayıt kalıcı olarak silinemedi. |
| `ERASURE_REQUEST_CONFLICT` | 409 | Veri imha talebi, mevcut durumunda bu geçişi yapamaz. |
| `ERASURE_SCOPE_UNAVAILABLE` | 500 | İmha kapsamı hazırlanamadı. |
| `ERASURE_CERTIFICATE_UNAVAILABLE` | 500 / 503 | İmha sertifikası kullanılamıyor. 500: üretilemedi. 503: indirme adresi imzalanamadı. |

### İçe aktarma

| Kod | HTTP | Ne zaman |
| - | - | - |
| `IMPORT_SOURCE_INACTIVE` | 422 | İçe aktarma kaynağı aktif değil. |
| `IMPORT_SOURCE_NOT_INSTALLED` | 422 | Kaynak bu klinik için kurulu değil. |
| `IMPORT_SOURCE_ALREADY_INSTALLED` | 422 | Kaynak bu klinik için zaten kurulu. |
| `IMPORT_SOURCE_OAUTH_NOT_SUPPORTED` | 422 | Kaynak OAuth bağlantısı gerektiriyor; bu bağlantı henüz API üzerinden desteklenmiyor. |
| `IMPORT_TYPE_NOT_AVAILABLE` | 422 | Seçilen içe aktarma türlerinden biri bu kaynakta kullanılamıyor. |
| `IMPORT_JOB_ALREADY_RUNNING` | 409 | Bu kaynak için zaten bir aktarım çalışıyor. |
| `IMPORT_JOB_NOT_CANCELLABLE` | 422 | İçe aktarma işi artık iptal edilemez. |
| `IMPORT_START_FAILED` | 422 | İçe aktarma başlatılamadı. |

### Entegrasyonlar ve gelen webhook

| Kod | HTTP | Ne zaman |
| - | - | - |
| `INTEGRATION_NOT_CONNECTABLE` | 422 | Entegrasyon bu şekilde bağlanamaz. |
| `INTEGRATION_ENTITY_NOT_SUPPORTED` | 422 | Entegrasyon seçilen kayıt türünü desteklemiyor. |
| `INTEGRATION_CONNECTION_MAPPING_INCOMPLETE` | 422 | Bağlantıyı etkinleştirmeden önce en az bir ad, telefon veya e-posta alanı eşleştirilmeli. `data.identity_fields` ilgili alanları verir. |
| `INTEGRATION_INBOUND_UNAUTHORIZED` | 401 | `X-Flextell-Secret` başlığı yok veya bağlantıyla eşleşmiyor. |
| `INTEGRATION_INBOUND_INVALID_PAYLOAD` | 422 | Gövde bir JSON nesnesi, JSON nesneleri dizisi veya form verisi olmalı. |
| `INTEGRATION_INBOUND_TOO_MANY_RECORDS` | 413 | Tek istekte en fazla 500 kayıt gönderilebilir. |

Gelen Lead webhook'unun tamamı için bkz. [Gelen Lead webhook'u](/api/webhooklar/gelen-lead-webhooku).

### Bildirimler, personel ve agent

| Kod | HTTP | Ne zaman |
| - | - | - |
| `NOTIFICATION_NOT_DOWNLOADABLE` | 422 | Bildirimin indirilebilir dosyası yok. |
| `NOTIFICATION_EXPORT_FILE_MISSING` | 404 | Dışa aktarılan dosya artık yok. Yeniden dışa aktarın. |
| `STAFF_ROLE_NOT_CONFIGURED` | 422 | Doktor veya asistan için gereken rol klinikte yapılandırılmamış. |
| `STAFF_SAVE_FAILED` | 422 | Doktor veya asistan kaydı kaydedilemedi. İsteği yeniden deneyin. |
| `AGENT_PROMPT_TYPE_DISABLED_IN_MODE` | 422 | Agent tipi, kliniğin mevcut akış modunda etkinleştirilemez. Agent'ı pasif olarak kaydedin. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.