Hızlı Giriş
Görüşmeyi kaydet
Tek istekte görüşme + açık bloklar: firma (yoksa açılır), kişi(ler), proje / fırsat, aşama, ürün, deneme, teklif, sipariş, rakip, pazar payı, fuar leadi ve özel nesne kayıtları; seçilen açık aksiyonlar kapanır, sonraki adım açılır (başkasına atanırsa görev olur). Yanıttaki undo_id ile undo_seconds içinde geri alınır. Benzer adlı firma varsa 409 similar — mevcut kaydı seçin ya da confirm_new: true gönderin.
Yetkilendirme
AuthorizationheaderzorunluBearer belirteci: API anahtarı (sk_…), OAuth erişim belirteci (mcp_…) ya da mobil oturum (xk_…).
Modül: Ziyaretler / AktivitelerKapsam:
crm.writeGövde application/json
customerstringzorunluFirma adı.
template_idintegeristeğe bağlıŞablon (zorunlu blok denetimi için).
visit_type / visit_date / topicstringisteğe bağlıGörüşme türü (
F2F, Online, Call, Deneme), tarih (YYYY-MM-DD), konu.contact / contactsstring / arrayisteğe bağlıAna kişi;
contacts ek katılımcılar (nota yazılır). Yeni kişi: contact: "__new__" + contact_new.opp_id / opp_namestringisteğe bağlıProje: kimlik,
__new__ (yeni) ya da boş (varsayılan proje).note / resultstringisteğe bağlıGörüşme notu ve sonucu.
next_action / action_date / assigneestringisteğe bağlıSonraki adım, tarihi (doğal dil de olur) ve atanan kullanıcı.
close_actionsarray<string>isteğe bağlıKapatılacak aksiyon anahtarları (
/qe/context → open_actions[].key).blocksarray<string>isteğe bağlıAçık bloklar (ör.
firsat, teklif, co:uretim_hatti); alanları gövdede /qe/config → blocks[].fields[].k anahtarlarıyla (stage_label, offer_price …). Özel nesne bloğunda co_<anahtar>_id mevcut kaydı seçer; yeni kayıt için co_<anahtar>_name ve co_<anahtar>_f<alan kimliği>.confirm_newbooleanisteğe bağlıBenzer adlı firma olsa da yeni aç.
Hatalar
| HTTP | error | Anlamı |
|---|---|---|
400 | invalid | Eksik ya da geçersiz alan (`message` ayrıntıyı verir). |
409 | similar | Benzer adlı firmalar var (`similar`); `confirm_new: true` ile yine açılır. |
403 | module | Modül lisansta ya da kullanıcının izinlerinde kapalı. |
İstek
curl -X POST https://ornek.solk.app/api/v1/qe \
-H "Authorization: Bearer $SOLK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": "Alize Paketleme San. ve Tic. A.Ş.",
"visit_type": "F2F",
"topic": "Görüşme",
"note": "Aylık 15 ton, 1,85 €/kg ve 60 gün vade konuşuldu. Hat 3'\''te deneme olumlu. Perşembe numune göndereceğiz.",
"blocks": [
"teklif",
"co:uretim_hatti"
],
"offer_price": "1,85",
"payment_days": "60",
"co_uretim_hatti_id": "1",
"next_action": "Numune gönder",
"action_date": "perşembe"
}'const res = await fetch("https://ornek.solk.app/api/v1/qe", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SOLK_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"customer": "Alize Paketleme San. ve Tic. A.Ş.",
"visit_type": "F2F",
"topic": "Görüşme",
"note": "Aylık 15 ton, 1,85 €/kg ve 60 gün vade konuşuldu. Hat 3'te deneme olumlu. Perşembe numune göndereceğiz.",
"blocks": [
"teklif",
"co:uretim_hatti"
],
"offer_price": "1,85",
"payment_days": "60",
"co_uretim_hatti_id": "1",
"next_action": "Numune gönder",
"action_date": "perşembe"
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://ornek.solk.app/api/v1/qe",
headers={"Authorization": f"Bearer {os.environ['SOLK_API_KEY']}"},
json={
"customer": "Alize Paketleme San. ve Tic. A.Ş.",
"visit_type": "F2F",
"topic": "Görüşme",
"note": "Aylık 15 ton, 1,85 €/kg ve 60 gün vade konuşuldu. Hat 3'te deneme olumlu. Perşembe numune göndereceğiz.",
"blocks": [
"teklif",
"co:uretim_hatti"
],
"offer_price": "1,85",
"payment_days": "60",
"co_uretim_hatti_id": "1",
"next_action": "Numune gönder",
"action_date": "perşembe"
},
)
print(r.json())Yanıt
{
"advice": null,
"closed": [],
"co": [
{
"id": 1,
"key": "uretim_hatti",
"name": "Hat 3 — şişirme",
"url": "/o/uretim_hatti/1"
}
],
"created": false,
"customer": {
"active": true,
"at_risk": false,
"city": "İstanbul",
"currency": "EUR",
"currency_default": "",
"id": 1,
"initials": "AP",
"last_visit": "2026-10-06",
"main_contact": {
"email": "selin.dogan@alizepaketleme.example",
"name": "Selin Doğan",
"phone": "0 (212) 000 55 24",
"wa": "902120005524"
},
"name": "Alize Paketleme San. ve Tic. A.Ş.",
"next_visit_due": "2027-01-04",
"open_opps": 1,
"owner": {
"full_name": "Deniz Aksoy",
"id": 1,
"role": "admin",
"role_label": "Yönetici",
"username": "admin"
},
"pending_state": "soon",
"period": 90,
"phone": "0 (212) 000 15 65",
"potential_kg": 8000.0,
"rid": "001xiy2LDMX4EY0",
"sector": "Gıda ambalajı",
"status": "AC",
"status_label": "Aktif Müşteri",
"unit": "kg",
"visit_overdue_days": -90,
"visit_state": "ok"
},
"message": "Alize Paketleme San. ve Tic. A.Ş. kaydedildi: ziyaret, proje #31 Mevcut Müşteri — Yenileme · 2026, üretim hattı: Hat 3 — şişirme.",
"next_step": "İhtiyaç, hat ve aylık miktar potansiyelini netleştir (Need)",
"ok": true,
"opp": {
"bant": 1,
"base_currency": "EUR",
"close_date": "2027-02-09",
"cur_sym": "€",
"currency": "EUR",
"customer": "Alize Paketleme San. ve Tic. A.Ş.",
"customer_city": "İstanbul",
"customer_id": 1,
"days_in_stage": 11,
"detail_status": "",
"fc": "Pipeline",
"health": {
"grade": "success",
"label": "sağlıklı",
"score": 92
},
"health_color": "g",
"health_manual": false,
"health_note": "",
"id": 31,
"initials": "AP",
"is_account": false,
"is_open": true,
"last_update": "2026-10-03",
"lifetime_left": 169,
"line": "",
"name": "Mevcut Müşteri — Yenileme · 2026",
"next_step": "İhtiyaç, hat ve aylık miktar potansiyelini netleştir (Need)",
"offer_price": null,
"owner": {
"full_name": "Deniz Aksoy",
"id": 1,
"role": "admin",
"role_label": "Yönetici",
"username": "admin"
},
"payment_days": null,
"potential_kg": 6000.0,
"prob": 0.1,
"probability": null,
"product": "PU-SL 200 Solventsiz Laminasyon Yapıştırıcısı",
"product_id": 1,
"pu": "€/kg",
"rid": "006yvlKAVcMKhPf",
"sla_days": 30,
"sla_left": 19,
"source": "Bayi / distribütör",
"stage": "Qualify",
"stage_label": "Qualify",
"start_date": "2026-09-25",
"trend": "",
"trend_label": "Otomatik",
"type": "Mevcut Müşteri — Yenileme",
"unit": "kg",
"unit_code": "kg",
"value": 302000.0,
"value_base": 302000.0,
"value_short": "302K"
},
"opp_new": false,
"parts": [
"ziyaret",
"proje #31 Mevcut Müşteri — Yenileme · 2026"
],
"task": null,
"undo_id": 1,
"undo_seconds": 600,
"visit": {
"action_date": "2026-10-08",
"action_done": false,
"action_state": "soon",
"contact": "",
"customer": "Alize Paketleme San. ve Tic. A.Ş.",
"customer_id": 1,
"date": "2026-10-06",
"id": 107,
"line": "",
"next_action": "Numune gönder",
"note": "Aylık 15 ton, 1,85 €/kg ve 60 gün vade konuşuldu. Hat 3'te deneme olumlu. Perşembe numune göndereceğiz.",
"opp": "Mevcut Müşteri — Yenileme · 2026",
"opp_id": 31,
"product": "",
"result": "",
"rid": "00URZrmvSihtGjU",
"topic": "Görüşme",
"type": "F2F",
"user": "Deniz Aksoy"
},
"warnings": []
}Örnek yanıt örnek veriyle çalışan bir v43b kurulumundan alındı; listeler en çok iki öğeyle kısaltıldı.