Preview: the public API is not live yet. The guides are drafts shared before the first endpoints open and may change.
Errors
Draft.
Format
Errors are returned as RFC 9457 problem details (Content-Type: application/problem+json). Main fields:
| Field | Meaning |
|---|---|
type |
Machine-readable error type. Your program should branch on this. |
title |
Short human-readable description. Not part of the contract and may change. |
status |
HTTP status code. |
code |
A machine code that describes some errors in more detail (extension member). |
| Other extensions | Error-specific extra fields (for example module). |
Example:
{
"type": "license/module-not-entitled",
"title": "Bu modül lisansınızda veya koltuğunuzda yok.",
"status": 403,
"module": "<module-code>"
}
Note: type values are currently relative strings such as license/module-not-entitled. The title text is currently in Turkish.
License errors and permission errors are different
Both return 403; the difference is in type. The license check runs before the permission check.
type |
Status | Meaning | What to do |
|---|---|---|---|
license/module-not-entitled |
403 | The module you called is not in your company's license or your integration seat. The module field gives the module code. |
Contact BilgiTek or your account manager about a license or package change. Retrying will not help. |
license/read-only |
403 | The subscription is in read-only mode; write requests are rejected. Reading and export remain available. | Renew the subscription. You can keep sending read requests. |
authz/forbidden |
403 | The license is fine but the client has no permission for this operation. | Ask BilgiTek to change the permissions (see Authentication). |
Even after a subscription expires, access to your data is never locked: reading, reports and export always remain open.
HTTP status codes
Statuses that appear in the code and in contract decisions:
| Code | When |
|---|---|
| 400 | Invalid request; for example an undecodable page cursor or a page size outside the allowed range. |
| 401 | Authentication failed (missing, invalid or expired token). |
| 403 | License or permission error (table above). |
| 409 | Conflict; for example the record already exists. The response may contain code. |
| 422 | Semantically invalid request; for example the same Idempotency-Key sent with a different body. The response may contain code. |
Recommended handling
- Check
statusfirst, thentype; never branch on thetitletext. - On
license/read-only, you may queue writes and keep reading. - Do not auto-retry
license/module-not-entitledorauthz/forbidden.