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

# Node.js ile ilk entegrasyon

> Sunucu tarafında fetch ile Basic kullanın; zaman aşımını ve kaynak cevabını kontrollü işleyin.

Node.js 20 veya üzeri kullanın. Bu örnek sunucu içindir; API gizli değerini tarayıcıya veya istemci paketine koymayın. Ek HTTP paketi gerekmez.

```javascript theme={null}
async function main() {
  const apiUserId = process.env.MUHASIP_API_USER_ID
  const secretKey = process.env.MUHASIP_API_SECRET
  if (!apiUserId || !secretKey) throw new Error("API kimlik bilgileri eksik.")

  const response = await fetch("https://api.muhasip.pro/apps", {
    redirect: "manual",
    headers: {
      Authorization: "Basic " + Buffer.from(`${apiUserId}:${secretKey}`).toString("base64"),
      Accept: "application/json"
    },
    signal: AbortSignal.timeout(30000)
  })
  let data
  try {
    data = await response.json()
  } catch {
    throw new Error(`JSON olmayan cevap; HTTP ${response.status}`)
  }
  if (response.status !== 200 || data.status !== true) {
    throw new Error(`İstek başarısız; HTTP ${response.status}`)
  }
  const apps = Array.isArray(data.result) ? data.result : []
  console.log("Uygulama sayısı:", apps.length)
}

main().catch(() => {
  console.error("Uygulama listesi okunamadı; erişim ve cevap biçimini kontrol edin.")
  process.exitCode = 1
})
```

## Diğer cevap biçimleri

Her işlem JSON döndürmez. İşlem sayfalarındaki genel örneklerde `response.arrayBuffer()` ile alınan `data`, cevabın ham baytlarını tutar. Sözleşme JSON diyorsa `JSON.parse(new TextDecoder().decode(data))`; HTML diyorsa metin; dosya diyorsa dosya içeriği olarak işleyin. Base64 metnini yalnız ilgili alanın sözleşmesi bunu belirtiyorsa çözün.

HTTP başarılı olsa da kaynağın `status` alanını ve ilgili alt sonucu kontrol edin. `response.ok` tek başına bütün mali akışın tamamlandığını göstermez. `AbortSignal.timeout` yalnız istemcinin bekleme süresini keser; uzaktaki işlemi geri almaz.

## Mali çağrılar

Gereken çağrıda `MUHASIP_IDEMPOTENCY_KEY` değerini aynı iş için koruyun. Uygulamanız yeniden başlasa da aynı işi yeni anahtarla göndererek devam etmeyin. Makbuzdaki `operationId` ve güvenli sonuç kimliklerini saklayın; belirsizlikte [işlem durumunu okuyun](/api-reference/islem-takibi/muhasip-get-apps-operations-operationid).


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