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

# Referensi Kesalahan

> Semua kesalahan yang dapat dikembalikan oleh API publik /v1 Living Security, beserta kode mesin yang stabil, status HTTP, dan cara penyelesaiannya.

Setiap respons kesalahan `/v1` bertipe `application/problem+json` ([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)) dengan kumpulan field yang tetap:

```json theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "No such organization.",
  "code": "resource_not_found",
  "request_id": "req_...",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "retryable": false
}
```

Lakukan percabangan logika berdasarkan `code`, jangan berdasarkan `detail` — `code` merupakan kontrak mesin yang stabil; `detail` dapat dibaca manusia dan dapat berubah. `param` hadir ketika kesalahan dapat dikaitkan dengan parameter permintaan tertentu. Sertakan `request_id` saat menghubungi dukungan.

## Kode kesalahan

| Kode | Status HTTP | Dapat dicoba ulang |
| - | - | - |
| [`unauthorized`](/id/developers/v1/errors/unauthorized) | 401 | Tidak |
| [`credential_inactive`](/id/developers/v1/errors/credential_inactive) | 401 | Tidak |
| [`credential_expired`](/id/developers/v1/errors/credential_expired) | 401 | Tidak |
| [`credential_revoked`](/id/developers/v1/errors/credential_revoked) | 401 | Tidak |
| [`not_entitled`](/id/developers/v1/errors/not_entitled) | 403 | Tidak |
| [`insufficient_permission`](/id/developers/v1/errors/insufficient_permission) | 403 | Tidak |
| [`permission_denied`](/id/developers/v1/errors/permission_denied) | 403 | Tidak |
| [`resource_not_found`](/id/developers/v1/errors/resource_not_found) | 404 | Tidak |
| [`invalid_request`](/id/developers/v1/errors/invalid_request) | 400 atau 409 | Tidak |
| [`invalid_filter`](/id/developers/v1/errors/invalid_filter) | 400 | Tidak |
| [`unsupported_version`](/id/developers/v1/errors/unsupported_version) | 400 | Tidak |
| [`idempotency_key_reuse`](/id/developers/v1/errors/idempotency_key_reuse) | 409 | Bergantung pada konflik |
| [`rate_limited`](/id/developers/v1/errors/rate_limited) | 429 | Ya |
| [`service_unavailable`](/id/developers/v1/errors/service_unavailable) | 503 | Ya |
| [`internal_error`](/id/developers/v1/errors/internal_error) | 500 | Ya |

Kumpulan kode ini bersifat tertutup: kode baru merupakan perubahan kontrak publik dan akan diumumkan melalui changelog API. Respons `retryable: true` berarti kondisi tersebut mungkin dapat teratasi; respons ini tidak membuktikan bahwa operasi tulis tidak berdampak. Coba ulang operasi baca dengan batas jumlah percobaan dan batas waktu yang terbatas, serta gunakan exponential backoff dan jitter. Patuhi `Retry-After` bila ada, termasuk pada `409` atau `429` yang dapat dicoba ulang.

Untuk mutasi, ikuti kontrak idempotensi dan pemulihan yang didokumentasikan untuk operasi tersebut. Pertahankan key dan permintaan asli bila didukung. Jangan membuat key baru setelah timeout atau `5xx`: tindakan tersebut dapat mengulang operasi tulis yang sebenarnya telah berhasil. Header `Idempotency-Key` tidak memberikan perlindungan apa pun pada operasi yang tidak mendukungnya.


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