Kimlik doğrulama
Kullanıcı adıyla oturum aç
Mobil uygulamanın kullandığı oturum açma ucu: kullanıcı adı + şifre (+ iki adımlı doğrulama kodu) karşılığında xk_ ile başlayan bir oturum belirteci verir. Belirteç API_TOKEN_DAYS gün (varsayılan 90) geçerlidir. Sunucudan sunucuya entegrasyonlarda bunun yerine Geliştiriciler sayfasından açılan API anahtarını ya da OAuth'u kullanın.
Yetkilendirme
Kimlik doğrulama gerekmez.
Gövde application/json
usernamestringzorunluKullanıcı adı.
passwordstringzorunluŞifre.
otpstringisteğe bağlıİki adımlı doğrulama açıksa 6 haneli kod (ilk istekte
otp_required döner).devicestringisteğe bağlıCihaz adı; Ayarlar → Güvenlik'teki oturum listesinde görünür.
Hatalar
| HTTP | error | Anlamı |
|---|---|---|
401 | credentials | Kullanıcı adı veya şifre hatalı. |
401 | otp_required | İki adımlı doğrulama kodu gerekli (`otp`). |
401 | otp_invalid | Doğrulama kodu hatalı ya da süresi geçmiş. |
403 | ip | Bu ağdan erişim izni yok (IP kısıtı). |
403 | license | Lisans süresi doldu — yalnız yönetici erişebilir. |
429 | locked | Çok fazla hatalı giriş — 60 sn bekleyin. |
İstek
curl -X POST https://ornek.solk.app/api/v1/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "1234",
"device": "iPhone 15 · Solk"
}'const res = await fetch("https://ornek.solk.app/api/v1/login", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"username": "admin",
"password": "1234",
"device": "iPhone 15 · Solk"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://ornek.solk.app/api/v1/login",
json={
"username": "admin",
"password": "1234",
"device": "iPhone 15 · Solk"
},
)
print(r.json())Yanıt
{
"app": {
"accent": "#0f3a44",
"accent_dark": "#0b2b33",
"company": "Örnek Kimya",
"currencies": [
"EUR"
],
"currency_base": "EUR",
"currency_symbol": "€",
"logo": "",
"name": "Solk CRM",
"opp_lifetime_days": 180,
"site_url": "https://ornek.solk.app",
"stage_sla": {
"Expect to Close": 15,
"Negotiation": 30,
"Present Solution": 60,
"Qualify": 30,
"Viable": 60
},
"ticket_sla_hours": {
"Acil": 4,
"Düşük": 168,
"Normal": 72,
"Yüksek": 24
},
"unit_default": "kg",
"units": [
"kg"
],
"version": "v22"
},
"license": {
"blocked": false,
"customer": "Örnek Kimya",
"days_left": null,
"end": null,
"label": "Deneme modu",
"modules": [
"calendar"
],
"no": null,
"state": "trial"
},
"ok": true,
"token": "xk_1dcb806508e33cee8d728d9baafc6eee23b6e2cb16da8afd",
"user": {
"email": "deniz@ornekkimya.com.tr",
"full_name": "Deniz Aksoy",
"id": 1,
"modules": [
"calendar"
],
"role": "admin",
"role_label": "Yönetici",
"username": "admin"
},
"weak_password": true
}Örnek yanıt örnek veriyle çalışan bir v22 kurulumundan alındı; listeler en çok iki öğeyle kısaltıldı.