# Sandbox and test ids

Create a sandbox pair under **API keys › Create sandbox key**. Same endpoints, same response shapes — but only made-up DENEME-… companies. Your real companies, allowance, the registry and AI are never touched. Responses carry the `X-Ulawk-Ortam: deneme` header.

| Id | Behaviour |
|---|---|
| `DENEME-100001` | Ready profile (joint-stock company); recent changes, shows up in the daily feed. |
| `DENEME-100002` | Ready profile (limited company): share transfer, name change. |
| `DENEME-100003` | Ready profile; an officer whose term has lapsed. |
| `DENEME-YAVAS` | Profile being prepared: `profil_hazir=false`, sections `null`, status `profil-hazirlaniyor`. Every new number added with `sirket-ekle` points here. |
| `DENEME-KAYNAK-KAPALI` | 503 `kaynak_erisilemiyor` on every endpoint: `taraf` kaynak, `kaynak` ttsg, retryable, Retry-After 300. |
| `DENEME-TASFIYE` | Company in liquidation: status rows, liquidator. |
| `DENEME-TERKIN` | Struck-off company: `kapandi` category. |
| `DENEME-COK-ILAN` | 250 notices: pagination. |
| `DENEME-UNICODE` | ğ ü ş ı ö ç İ ı in names. |
| `DENEME-UZUN-UNVAN` | A name of almost 300 characters. |

## Behaviour

- Data is fixed; only recent changes are dated a few days before today so the daily feed and webhook tests are never empty.
- `sirket-ekle` creates nothing: an existing sandbox number (like `100001`) returns `zaten_var`, any other number returns `DENEME-YAVAS`.
- Webhook endpoints create real webhook records with a sandbox key; test notifications use the made-up company.
- A live key cannot see DENEME-… ids (404); a sandbox key cannot see real companies.
- Sanctions screening, legacy endpoints and MCP do not accept sandbox keys.
