Maximize AI API

Claude, GPT, Gemini ve ekonomik açık modellere TEK anahtarla erişim — token bazlı fiyatlandırmalı REST API. OpenAI uyumlu format; akıllı yönlendirme, sağlayıcı düşerse otomatik yedek ve önbellekle maliyet düşürme dahil.

Base URL: https://www.themaximize.ai

Kimlik Doğrulama

Her istekte X-API-Key header'ı ile API key'inizi gönderin. OpenAI uyumlu Authorization: Bearer sk-... başlığı da kabul edilir — OpenAI SDK'ları ve LangChain/AutoGen gibi kütüphaneler bunu kullanır.

curl https://www.themaximize.ai/v1/chat/completions \ -H "X-API-Key: sk-your-api-key" \ -H "Content-Type: application/json" \ -d '{...}' # eşdeğer (OpenAI SDK'larının gönderdiği biçim): curl https://www.themaximize.ai/v1/chat/completions \ -H "Authorization: Bearer sk-your-api-key" \ -H "Content-Type: application/json" \ -d '{...}'
API key'inizi asla paylaşmayın veya client-side kodda kullanmayın.

Modeller & Fiyatlar

Tüm modeller aynı endpoint üzerinden kullanılır. model parametresiyle seçim yapın.

claude-haiku-4-5
Hızlı ve ekonomik — chatbot, sınıflandırma, özet
Input $2 · Output $10
/ 1M token
claude-sonnet-5
Dengeli — kod yazma, analiz, uzun içerik
Input $6 · Output $30
/ 1M token
claude-opus-5
En güçlü — karmaşık görevler, araştırma, akıl yürütme
Input $10 · Output $50
/ 1M token
claude-fable-5
Zirve akıl yürütme — en zor, uzun soluklu görevler
Input $20 · Output $100
/ 1M token

🌐 OpenAI & Google

gpt-5.6-sol
OpenAI amiral gemisi
Input $10 · Output $60
/ 1M token
gpt-5.6-luna
Hızlı & ucuz GPT
Input $2 · Output $12
/ 1M token
gemini-3.6-flash
Google — güçlü, güncel, uzun bağlam
Input $3 · Output $15
/ 1M token

💚 Ekonomi Modelleri

Açık ağırlıklı modeller — bütçe dostu, yüksek hacimli işler için. Claude'dan çok daha ucuz.

deepseek-v3.2
Ultra ucuz & hızlı — basit görevler, yüksek hacim
Input $0.60 · Output $0.90
/ 1M token
deepseek-v4-pro
Kod & akıl yürütme — açık ağırlıklı üst seviye
Input $2.60 · Output $5.20
/ 1M token
kimi-k2.6
Frontier açık model — ajanik görevler, kod, araştırma (256K bağlam)
Input $1.50 · Output $7
/ 1M token

Emekliye ayrılan model id'leri (gpt-4o, gemini-2.5-flash, llama-3.3-70b, claude-sonnet-4-6 vb.) çalışmaya devam eder — istek otomatik olarak halef modele yönlendirilir.

Chat Completions

POST /v1/chat/completions
Claude modelleri ile sohbet tamamlama isteği gönderir.

İstek Parametreleri

ParametreTipAçıklama
messages*arraySohbet mesajları dizisi
model?stringModel ID (varsayılan: claude-haiku-4-5)
models?arrayYedekli model zinciri (1-5 ID, OpenRouter uyumlu): adaylar sırayla denenir, geçici sağlayıcı hatasında bir sonrakine geçilir; varsa model alanını ezer. Fatura cevabı üreten modele kesilir (yanıttaki model alanı).
max_tokens?integerMaksimum çıktı token (varsayılan: 512)
temperature?floatYaratıcılık 0-1 arası (varsayılan: 0.7). Claude 5 ailesi (Sonnet 5 / Opus 5 / Fable 5) bu parametreyi kabul etmez — gönderilirse yok sayılır.
stream?booleanAkış modu (varsayılan: false)
tools?arrayOpenAI function formatında araç tanımları (bkz. Araçlar bölümü)
tool_choice?string | objectauto (varsayılan) · none (araç çağrılmaz) · required · {"type":"function","function":{"name":"..."}}. Başka bir değer 400 döner.
response_format?object{"type":"json_object"} → yalnız geçerli JSON (sunucu doğrular, gerekirse bir kez yeniden dener) · {"type":"json_schema","json_schema":{"name":"...","schema":{...}}} → şemaya uygun JSON, content alanında dize olarak. LangChain with_structured_output / Agents SDK output_type ile çalışır.
stop?string | arrayÜretimi durduran dizi(ler)

Uygulanamayan alanlar (n>1, Claude modellerinde seed/user, top_p gibi tanınmayan alanlar) sessizce yutulmaz — yanıttaki maximize.ignored_params listesinde bildirilir. OpenAI SDK'ları bu ek alanı yok sayar.

Örnek İstek

{ "model": "claude-haiku-4-5", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Write a hello world in Python."} ], "max_tokens": 200, "temperature": 0.7 }

Örnek Yanıt

{ "id": "msg_01abc...", "object": "chat.completion", "created": 1756900000, "model": "claude-haiku-4-5", "choices": [{ "index": 0, "message": { "role": "assistant", "content": "print('Hello, World!')" }, "finish_reason": "stop" }], "usage": { "prompt_tokens": 28, "completion_tokens": 12, "total_tokens": 40 } }

Billing

GET /billing/usage
Kullanım istatistiklerinizi ve kalan bakiyenizi görüntüler.
curl https://www.themaximize.ai/billing/usage \ -H "X-API-Key: sk-your-api-key"

Araçlar (Function Calling)

Kendi fonksiyonlarınızı tanımlayın — Claude hangisini ne zaman çağıracağına karar verir, siz kendi sisteminizde çalıştırıp sonucu geri gönderirsiniz. OpenAI tools formatıyla birebir uyumlu.

Akış: 1) Araçlarınızı gönderin → 2) Claude bir aracı çağırır (tool_calls) → 3) Fonksiyonu çalıştırıp sonucu tool rolüyle geri gönderin → 4) Claude nihai cevabı üretir.

Örnek (OpenAI SDK)

from openai import OpenAI import json client = OpenAI(api_key="sk-...", base_url="https://www.themaximize.ai/v1") def get_weather(city): return f"{city}: 22C, sunny" # your own function tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Returns the weather for a given city", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, }, }] messages = [{"role": "user", "content": "What is the weather in Ankara?"}] while True: resp = client.chat.completions.create( model="claude-haiku-4-5", messages=messages, tools=tools) msg = resp.choices[0].message if not msg.tool_calls: print(msg.content) # final answer break messages.append(msg) for tc in msg.tool_calls: args = json.loads(tc.function.arguments) result = get_weather(**args) # run the function messages.append({"role": "tool", "tool_call_id": tc.id, "content": result})
Not: stream: true araçlarla birlikte çalışır; yanıt tamamlanınca tek bir SSE dizisi olarak gelir (token token akmaz — tool_calls bütün hâlde teslim edilir). tool_choice: "none" ile model araç çağırmaz, yalnız metin üretir.

Webhooks

Dashboard'dan webhook URL'nizi kaydedin. Bakiye olaylarında sisteminize imzalı POST isteği göndeririz. Her istek X-Webhook-Signature ve X-Webhook-Timestamp header'larıyla gelir.

Olay Tipleri

OlayAçıklama
balance.lowBakiye $2.00 altına düştü
balance.depletedBakiye sıfırlandı
webhook.testTest bildirimi

Örnek Payload

{ "event": "balance.low", "created": 1719273600, "data": { "name": "Customer Name", "balance_usd": 1.85, "threshold": 2.0 } }

İmza Doğrulama (Python)

import hmac, hashlib def verify(secret, timestamp, body, signature): msg = f"{timestamp}.{body}".encode() expected = hmac.new(secret.encode(), msg, hashlib.sha256).hexdigest() return hmac.compare_digest(expected, signature) # Flask example: # sig = request.headers["X-Webhook-Signature"] # ts = request.headers["X-Webhook-Timestamp"] # verify(MY_SECRET, ts, request.get_data(as_text=True), sig)

Hukuk API — İçtihat Denetimi, Taslak & Hesap Motoru

Atıflı hukuk araştırması, kendi şablonlarınızdan taslak üretimi, künye doğrulama ve deterministik hesap motoru. Platformun ayırt edici kısmı burada: model bir künye üretirse doğrulanır, doğrulanamazsa açıkça işaretlenir — "teyit edilemedi" ile "yok" ayrı statülerdir. Tüm uçlar X-API-Key ister ve YALNIZ kendi arşivinizde çalışır.

POST /kb/upload  ·  GET /kb/docs  ·  DELETE /kb/docs/{doc_id}
Şablon hafızası: kendi dilekçe/sözleşme örneklerinizi yükleyin, taslak üretimi onların üslubunu kullansın. Gövde: {"doc_name":"kira-sozlesmesi.docx", "text":"..."} → {"doc_id", "doc_name", "chunks"}. Belge yapı-farkındalıklı parçalanır (MADDE/başlık sınırları korunur).

Ücret: bu üç uç ücretsizdir — sorgu hakkından düşmez, token faturası çıkarmaz.

Sınırlar: text en çok 400.000 karakter (üstü 422; daha uzun belgeyi /kb/upload-file ile yükleyin) · arşivde plan başına belge parçası sınırı vardır (aşımda 402 KOBİ planı ya da kurumsal teklif çözümse, 413 en üst sınırdaysanız — mesaj mevcut/eklenecek parça sayısını söyler) · istek gövdesi 15 MB.

Hatalar: 400 boş belge · 402/413 arşiv sınırı · 409 aynı belge arşivde zaten var (metin birebir aynıysa ad farklı olsa da) · 422 metin sınırı · 502 embedding servisi yanıt vermedi.
POST /kb/draft
Şablon-farkındalıklı belge/dilekçe taslağı. Gövde: {"query":"Kira tespit davası dilekçesi hazırla...", "model":"claude-sonnet-5"}. Kendi arşivinizden en ilgili 6 parça bağlam olarak kullanılır.

Otomatik atıf denetimi: taslak üretilir üretilmez künyeleri denetlenir ve sonuç audit alanında döner — uydurma künye denetimsiz Word'e gitmez. Yanıt: {"draft", "used_templates", "audit"}.

Künye kuralı: sistem promptu tam künye (Yargıtay 9. HD, E.2024/1234, K.2024/5678, T.10.05.2024) zorunlu kılar; künyesini bilmediği kararı ATFETMEZ.

KVKK: kayda yalnız talep metni yazılır — yüklediğiniz dosya bağlamı saklanmaz.
POST /kb/audit
Atıf Denetimi — dışarıdan gelen bir metindeki (ChatGPT çıktısı, karşı taraf dilekçesi, kendi taslağınız) künyeleri doğrular. Gövde: {"text":"...", "model":"claude-sonnet-5"}.

Yanıt: citations[] — her biri {type, ref, context, daire, status, note, source} (type: karar | aym | madde); counts{verified, unverified, notfound}; summary; from_ledger (defterden gelen, ücretsiz); from_official (resmî karar arama ucundan doğrulanan); web_calls; skipped_refs[] — tek seferde en çok 25 künye denetlenir, kalanlar bu listede adıyla döner ve özet uyarır (sessizce atlanmaz).

Statüler: verified = kaynak URL ile doğrulandı · unverified = teyit edilemedi (kararın var olmadığı anlamına GELMEZ — yayımlanmamış kararlar kamuya açık kaynaklarda bulunmaz) · notfound = bulunamadı ya da deterministik tutarsızlık (ör. esas yılı karar yılından büyük, kapatılmış daireye kapanış sonrası tarihli karar).

Maliyet kademeli: önce defter önbelleği (ücretsiz) → deterministik imkânsızlık denetimi (ücretsiz) → resmî karar arama ucu (web hakkından DÜŞMEZ) → yalnız gerekirse web aramalı model. Web kullanılırsa KOBİ/Kurumsal planlarında aylık web hakkından düşer.
POST /kb/clause-compare
Önünüze gelen sözleşmeyi kendi arşivinizle madde madde kıyaslar: sizin standart hükmünüzden sapan yerleri gösterir. Gövde: {"text":"...", "model":"claude-sonnet-5"} → {"comparison", "clauses", "archive_chunks", "rows", "kolonlar", "alinti_kolonu", "counts", "ozet_satiri"}. En çok 12 madde işlenir; sonda en riskli 3 madde özetlenir.

Her satır kaynağa bağlı: model yapılandırılmış satır bildirir (madde, inceleme_alintisi, arsiv_alintisi, karsilastirma, risk); inceleme alıntısı gönderdiğiniz metinde, arşiv alıntısı getirilen arşiv parçalarında birebir aranır (büyük-küçük harf ve boşluk farkı katlanır). Bulunamayan satır silinmez, kaynakta:false (⚠️) ile döner. comparison bu satırlardan üretilen metindir.

Hatalar: 400 metin boş · 400 arşiv boş (önce /kb/upload ile kendi belgelerinizi yükleyin) · 503 karşılaştırma servisi kullanılamıyor.
POST /kb/tablo
Belge Tablosu — arşivinizden seçtiğiniz belgeler × sorular: her hücre belgedeki cümlesine bağlı. Gövde: {"doc_ids":["…"], "sorular":["Sözleşmenin süresi nedir?", "Cezai şart var mı?"], "model":"claude-sonnet-5"} (en çok 20 belge, 10 soru; doc_ids GET /kb/docs'tan). Yanıt: grid (belge başına hucreler[]: cevap, alinti, madde, durum = kaynakta ✅ / bulunamadi ⚠️ / yok ∅ / hata, kaynakta), rows (uzun biçim: bir satır = bir hücre; /export/docx'a kolonlar ve alinti_kolonu ile verilir), counts (puan_yuzde yalnız ✅ hücreleri sayar), csv, output (markdown), cagri.

Maliyet: belge başına bir model çağrısı (45.000 karakterden uzun belgede paket başına bir); kullanım belge başına kb:tablo kaynağıyla yazılır; çağrısı düşen belgenin hücreleri hata olur, ücret alınmaz. Belge metinleri saklanmaz.

Hatalar: 400 belge/soru yok ya da tavan aşıldı · 403 salt-okur üye (belge başına ekip bütçesi harcar) · 404 belge arşivinizde yok.
POST /kb/review
Sözleşme / belge incelemesi (/hukuk sayfasının arkasındaki uç): özet, önemli maddeler, riskler, eksik olabilecek maddeler. Metne dayanır; metinde olmayan madde ya da karar atfı uydurmaz. Gövde: {"text":"...", "model":"claude-sonnet-5", "auto_audit":false} → {"review", "model", "sources", "source_count", "audit"}.

Firma arşivinizde ilgili belge varsa inceleme ona atıf yapar (sources); büro üslubunuz (/team/style) uygulanır; künyesi eksik atıf yanıtın sonunda kalite uyarısıyla işaretlenir. auto_audit:true atıfları web'de doğrulayıp audit alanına yazar (web hakkından düşer); varsayılan kapalı — ayrıca /kb/audit ile çağırabilirsiniz.

Hatalar: 400 metin boş · 402 bakiye/sorgu hakkı yok · 502 inceleme yapılamadı. Belge metni sunucuda saklanmaz.
GET /kb/ledger/stats  ·  GET /kb/ledger/tutanak
Atıf Defteri — doğrulanan her künyenin append-only, hash-zincirli kaydı (prev_hash → entry_hash), yani sonradan sessizce değiştirilemez.

/stats → {total_checks, unique_refs, by_status, since}. /tutanak?refs=E.2021/1 K.2021/2,TBK m.299 → {office, items[], count, chain, generated_at, disclaimer}; refs boşsa hesabın tüm kayıtları döner. chain.ok=false ise zincirin kırıldığı satır broken_at ile bildirilir.

POST /kb/ledger/teyit (multipart: ref, file ya da metin, isteğe bağlı kaynak, not) → "karar elimde" itirazı: künye yüklenen karar metninde esas/karar numarasıyla birebir bulunursa aynı zincire avukat teyidi satırı (status=verified, kaynak = metnin sha256 özeti) eklenir; bulunmazsa 400. Bu satır yalnız sizin hesabınızda geçerlidir, başka hesaplara aktarılmaz; tutanakta avukat_teyidi alanıyla ayrı görünür. Model yok, ücretsiz.

Ücret: ikisi de ücretsiz. Defter TTL'i: doğrulanmış/bulunamamış 180 gün, teyit edilemeyen 30 gün — bayat kayıt yeniden doğrulanır.

Kapsam: tutanak mahkeme kanıtı değildir; ne zaman, hangi kaynağa karşı denetlendiğini gösteren bir iz kaydıdır (yanıttaki disclaimer alanı bunu taşır).
POST /kb/draft/used  ·  GET /kb/style-stats
Üslup öğrenme döngüsü: ürettiğiniz taslağı düzenleyip kullandıysanız nihai metni geri gönderin — sistem sizin üslubunuzu öğrenir. Gövde: {"prompt", "generated", "final", "doc_kind"} → {"stored", "edit_ratio", "learned_chunks"}. edit_ratio 0 = hiç değiştirmediniz.

Rıza kapısı: içerik saklama rızanız kapalıysa hiçbir şey yazılmaz (stored:false) — açmak için /privacy/content-consent.

/kb/style-stats öğrenme eğrisini verir: {count, median_edit_ratio, first_half, last_half, trend}. Düzeltme oranı zamanla düşüyorsa trend "iyileşiyor" döner.
POST /legal/calc
Deterministik hesap motoru — LLM YOK. Aynı girdi her zaman aynı sonucu verir; model aritmetiği devrede değildir.

Ücretsizdir: sorgu hakkından düşmez, token faturası çıkarmaz. Sohbet hattında rakam hesaplatmak yerine bu ucu çağırın — hukuk preset'i de kullanıcıyı buraya yönlendirir.

Gövde: {"type":"kidem", "params":{...}}. type değerleri: kidem, ihbar, faiz, zamanasimi, brutten_net, fazla_mesai, yillik_izin, ise_iade.

params: kidem / ihbar: ise_giris, cikis, aylik_brut · faiz: anapara, baslangic, bitis, faiz_tipi (yasal|avans|ozel) · zamanasimi: olay_tarihi, alacak_turu (iscilik_tazminat|ucret|genel_alacak|donemsel|haksiz_fiil|kira_alacagi) · brutten_net: aylik_brut, ay, kumulatif_matrah · fazla_mesai: aylik_brut_ciplak, haftalik_fiili, hafta_sayisi · yillik_izin: ise_giris, cikis, kullanilan_gun · ise_iade: aylik_brut_giydirilmis, guvence_ay (4-8).

DİKKAT — iki farklı yanıt şekli var. kidem/ihbar/faiz/zamanasimi düz alanlar döner ve tür anahtarı tur'dur (ör. {tur:"kidem", brut, damga, net, tavan_uygulandi}). brutten_net/fazla_mesai/yillik_izin/ise_iade ise {tip, sonuc, kalemler{...}} döner. Alan adını ona göre okuyun.

Her yanıtta ortak: hesap_dokumu[] (adım adım), dayanak (yasal madde künyesi), uyarilar[], ve uç tarafından eklenen tablo_guncelleme + disclaimer. Oran/tavan tabloları kapsam dışı bir tarihe denk gelirse motor uydurmaz: son bilinen değeri kullanır ve uyarilar içinde açıkça söyler.
GET /privacy/content-consent  ·  POST /privacy/content-consent  ·  DELETE /privacy/stored-content
KVKK kontrolleri. POST gövdesi: {"enabled":true, "improve":false, "purge":false} — enabled içerik saklama talimatı, improve ürün geliştirme için ayrı ve açık rıza (hizmet şartı değildir), purge talimat kapatılırken eski kayıtların da silinmesi. DELETE /privacy/stored-content (KVKK m.11/e) saklanan düzeltme kayıtlarını siler → {"removed": n}. Her değişiklik zaman damgası ve IP ile denetim kaydına yazılır.
GET /privacy/kvkk-shield  ·  POST /privacy/kvkk-shield
KVKK Kalkanı (anahtar bazlı, varsayılan kapalı): açıkken TC kimlik no, telefon, e-posta, IBAN ve kart numaraları yapay zekâ sağlayıcısına gitmeden [TC-1] gibi yer tutucularla maskelenir, yanıt size dönerken geri açılır. Sohbet ve /v1/chat/completions yanıtlarına kvkk_shield: {"maskeli": {"TC":1, "TEL":2}} alanı eklenir (yalnız adet — içerik asla).

Dürüst kapsam: ad-soyad ve adres yakalanmaz (desen tabanlı tespit); emlak/ticaret modlarında ve araçlı (tools) isteklerde uygulanmaz — atlandığında yanıtta {"atlandi": ...} ile açıkça söylenir. Kalkanlı stream:true istekler yanıtı tamamlanınca tek seferde SSE ile alır (geri açma kayıpsız olsun diye). "Verim yurt dışına hiç çıkmasın" isteyen anahtar için ayrı mekanizma: kvkk_yurtici_zorunlu bayrağı (istek maskeli bile gönderilmez, fail-closed reddedilir).

POST gövdesi: {"enabled": true}. Değişiklik zaman damgası ve IP ile denetim kaydına yazılır.
POST /audit/v1/chat/completions
Dış denetim adaptörü — OpenAI şeklinde yanıt döner, yani mevcut istemcinizi base_url=https://www.themaximize.ai/audit/v1 ile bağlayabilirsiniz. Gövde: {"messages":[...], "model":"auto", "preset":"legal"}; preset ?preset= ile de verilebilir. Yanıt, standart choices[0].message.content alanına ek olarak maximize{preset, model_used, web_calls, route, web_throttled} taşır.

Güvenlik: dış sistem promptu enjekte edilemez — gövdedeki role:"system" mesajları sunucuda filtrelenir.

Emlak API — İlan Havuzu & Co-Brokerage

Kendi yüklediğiniz ilanlardan oluşan havuz + doğal dil arama + ofisler-arası ortak havuz. Sahibinden kazınmaz; veri sizin envanteriniz, iletişim bilgileri sahiplerinin bilgisi dahilinde eklenir. Tüm uçlar X-API-Key ister ve YALNIZ kendi havuzunuzda çalışır.

POST /listings  ·  GET /listings  ·  POST /listings/bulk
İlan ekle / listele / CSV-Excel toplu yükle. Alanlar: title, kind (kiralik|satilik), city, district, rooms, price, area_m2, features (virgüllü), description, contact, eids_no, property_type (konut|dukkan|ofis|depo|arsa|villa), zoning, izin_notu. Şablon: GET /listings/template.csv
POST /listings/search
Doğal dil arama (puanlı eşleştirme + güven rozeti + fiyat bağlamı). Gövde: {"query":"Kadıköy'de 3+1 kiralık", "mode":"", "scope":"kendi"}.

scope: "kendi" (varsayılan — yalnız kendi havuz) | "ortak" (co-brokerage: paylaşılan cross-office ilanlar da aranır). Ortak havuzu görebilmek için en az bir AKTİF ilanınızı paylaşmış olmanız gerekir (karşılıklılık). Yanıttaki scope_applied alanı hangi kapsamın gerçekten uygulandığını söyler.

KVKK: cross-office sonuçlarda contact maskeli, açıklamadaki gömülü telefon/e-posta temizlenmiş, eids_no gizli döner; owner_office ilan sahibinin ofis adıdır (atıf).
POST /listings/{id}/share  ·  POST /listings/{id}/unshare
İlanı ortak (co-brokerage) havuza kat / geri çek. Yalnız KENDİ ilanınız; rıza anında geri alınabilir.
POST /listings/{id}/verify
EİDS beyanını web ile teyit eder → güven rozeti "beyan"dan "teyitli"ye yükselir. Önce deterministik format denetimi (geçersiz EİDS web'e gitmeden reddedilir — ücretsiz). Web araması KOBİ/Kurumsal planlarında aylık web hakkından düşer; token modelinde küçük ek ücret uygulanır.
POST /listings/{id}/lead
İlana ilgilenen müşteri kaydet. Kendi ilanınızda: müşteri iletişimi kendi havuzunuzda saklanır. Ortak (paylaşılan) başka ofisin ilanında — broker-aracılı: lead ilan sahibine source="cobroke" + sizin ofis atfınızla gider; müşteri numarası ASLA karşı tarafa aktarılmaz (sizin havuzunuzda cobroke_out kaydında kalır). Sahip ofis kabul/ret eder: POST /listings/leads/{lead_id}/cobroke {"action":"accept"|"reject"} — atıf ancak kabulle geçerli sayılır.
GET /listings/leads  ·  /listings/today  ·  /listings/demand-counts
Lead/talep listesi (co-broke durumlarıyla) · günlük "Bugün" paneli (sıcak lead + bayat ilan + fiyat sapması) · ilan başına uyan talep sayıları. Diğer: /listings/{id}/status (aktif|satildi|pasif), /listings/{id}/refresh (tazelik teyidi), /listings/parse (serbest metinden ilan çıkarımı).

Ticaret API — Tedarikçi/Alıcı Havuzu

Kendi yüklediğiniz tedarikçi/alıcı kayıtları + web-destekli araştırma. Havuz-dışı iletişim uydurulmaz; cevaptaki havuzla uyuşmayan telefon/e-posta/domain sunucu tarafında yakalanıp uyarıyla işaretlenir.

POST /suppliers  ·  GET /suppliers  ·  POST /suppliers/bulk
Firma ekle / listele / toplu yükle (birlik-üye şablonu: GET /suppliers/template-birlik.csv). Alanlar: name, role (satici|alici), product, country, city, contact, website, description.
POST /suppliers/search
Doğal dil arama: önce havuz, gerekirse web araştırması. Gövde: {"query":"Bursa'da örme kumaş üreticisi"}. Web araması KOBİ/Kurumsal planlarında aylık web hakkından düşer.
POST /suppliers/{id}/verify
Firmayı web'de araştırıp doğrular (DOGRULANDI | SUPHELI | BULUNAMADI) → verified rozeti. Emin değilse doğrulanmış GÖSTERMEZ (uydurmaz). /suppliers/parse: serbest metinden firma alanı çıkarımı.

Muhasebe API — Ön-Defter

Fatura/fiş metninden gider-gelir kaydı çıkarımı ve deterministik KDV/stopaj hesabı. İş bölümü nettir: yapay zeka yalnız METİNDEN ALAN ÇIKARIR, rakamı MOTOR hesaplar. Model aritmetiği hiçbir zaman otorite değildir — çıkardığı tutarlar ayrıca aritmetik olarak denetlenir. Ön-muhasebe defteridir; beyanname aracı değildir.

POST /expenses/parse
Fatura/fiş metnini yapılandırılmış kayda çevirir. Gövde: {"text":"...", "model":"claude-sonnet-5"}.

KAYDETMEZ — öneri döner, kullanıcı onaylayıp POST /expenses ile kaydeder. Yanıt: çıkarılan alanlar + warnings[].

İki güvence: (1) modelin doldurmadığı tutarlar motorla türetilir — yalnız KDV dahil toplam varsa matrah ayrıştırılır, yalnız matrah varsa KDV eklenir; (2) tutarlar tutarlılık denetiminden geçer — net × oran ≈ KDV ve net + KDV ≈ toplam uymuyorsa beklenen değeri içeren uyarı döner ve onay ekranında görünür.
POST /expenses  ·  GET /expenses  ·  DELETE /expenses/{id}
Kayıt ekle / listele / sil. Alanlar: kind (gider|gelir), date (YYYY-MM-DD), vendor, category, description, net (KDV hariç matrah), kdv_rate (0|1|10|20), kdv, total (KDV dahil), stopaj.

category değerleri: kira, yemek, ulasim, ofis, demirbas, hizmet, pazarlama, personel, vergi_resmi, diger.

GET /expenses?month=YYYY-MM ile aya göre filtrelenir. Eksik tutarlar burada da motorla tamamlanır ve tutarlılık uyarıları warnings alanında döner.
GET /expenses/summary?month=YYYY-MM
Aylık özet — tamamen deterministik, LLM yok. Yanıt: {month, count, gelir_net, gider_net, kar_net, kdv_hesaplanan, kdv_indirilecek, kdv_odenecek, kdv_devreden, stopaj_toplam, kategori_dagilimi{}}.

Hesaplanan ve indirilecek KDV farkı pozitifse kdv_odenecek, negatifse kdv_devreden dolar — ikisi aynı anda dolmaz. month zorunludur ve YYYY-MM biçiminde olmalıdır (aksi hâlde 400).

Yanıt, her yüzeyde olduğu gibi SMMM yönlendirmesi taşıyan bir not alanı içerir.
GET /alacak  ·  GET /alacak/{id}/hatirlatma
Alacak takibi — tamamen deterministik, LLM yok. GET /alacak açık gelir faturalarını (vadesi girilmiş, kapanmamış) yaşlandırma kovalarıyla döner: {satirlar[], yaslandirma[], ozet{acik_toplam, gecikmis_toplam, en_eski_gun}}.

GET /alacak/{id}/hatirlatma?kademe=1|2|3 hatırlatma metnini şablondan üretir; tutar kayıttan, temerrüt faizi hukuk motorundan gelir (TCMB avans — TTK m.1530). Motorun uyarıları uyarilar alanında olduğu gibi döner. Kademe verilmezse gecikme gününe göre önerilen kademe kullanılır (45+ gün → 3, 15+ → 2, altı → 1) ve kademe geriye gitmez.
POST /alacak/{id}/hatirlatildi  ·  POST /alacak/{id}/tahsil  ·  POST /alacak/{id}/vade
hatirlatildi: hatırlatma sayacını artırır ve Süre Bekçisi'ne takip görevi açar ({kademe, takip_gun}). Gönderimi platform yapmaz — metni siz gönderir, burada işaretlersiniz.

tahsil: {tutar} verilirse kısmi tahsilat eklenir, verilmezse fatura tamamen kapanır; bakiye sıfırlanınca kayıt kendiliğinden kapanır. vade: {due_date} (YYYY-MM-DD) ile mevcut gelir kaydına vade ekler.

Hata Kodları

KodAçıklama
401Geçersiz veya eksik API key
402Yetersiz bakiye ya da plan tavanı doldu (sorgu/web hakkı) — bakiye yükleyin, KOBİ planına geçin ya da kurumsal teklif alın
403Yetkisiz erişim (ör. geçersiz admin secret)
404Kayıt bulunamadı — dikey uçlarda yalnız KENDİ havuzunuz görünür; başka ofisin kaydına erişim de 404 döner
429Rate limit aşıldı — bekleyin ve tekrar deneyin
500Sunucu hatası

/v1 altındaki hatalar OpenAI şemasında döner — SDK'lar error.message okuyabilir; detail alanı da korunur:

{ "error": {"message": "Invalid or inactive API key", "type": "authentication_error", "param": null, "code": "invalid_api_key"}, "detail": "Invalid or inactive API key" }

OpenAI Kütüphanesiyle Kullanım

Mevcut OpenAI kodunuzu değiştirmeden kullanabilirsiniz — sadece base_url ve api_key değiştirin. Tüm OpenAI SDK'ları (Python, Node.js, LangChain, vb.) çalışır.

base_url: https://www.themaximize.ai/v1
from openai import OpenAI client = OpenAI( api_key="sk-your-api-key", base_url="https://www.themaximize.ai/v1" ) response = client.chat.completions.create( model="claude-haiku-4-5", messages=[{"role": "user", "content": "Hello!"}] ) print(response.choices[0].message.content)

Node.js için:

import OpenAI from "openai"; const client = new OpenAI({ apiKey: "sk-your-api-key", baseURL: "https://www.themaximize.ai/v1" }); const response = await client.chat.completions.create({ model: "claude-haiku-4-5", messages: [{ role: "user", content: "Hello!" }] }); console.log(response.choices[0].message.content);

Hermes Agent ile Kullanım

Nous Research'ün açık kaynak otonom ajanı Hermes Agent, Maximize'ı model sağlayıcısı olarak kullanabilir. Kurulumdan sonra hermes model komutunda Custom endpoint seçin veya ~/.hermes/config.yaml dosyasına şunu yazın:

model: claude-sonnet-5 provider: custom base_url: https://www.themaximize.ai/v1 api_key: sk-your-api-key

Araç çağrıları (function calling), streaming ve /v1/models üzerinden otomatik model keşfi desteklenir. Türkiye'de işlenen veriyle çalışması gereken ajanlar için model listesini ?kvkk_yurtici=true ile filtreleyebilirsiniz.

Python Örneği (requests)

import requests API_KEY = "sk-your-api-key" BASE_URL = "https://www.themaximize.ai" response = requests.post( f"{BASE_URL}/v1/chat/completions", headers={"X-API-Key": API_KEY, "Content-Type": "application/json"}, json={ "model": "claude-haiku-4-5", "messages": [{"role": "user", "content": "Hello!"}], "max_tokens": 100 } ) print(response.json()["choices"][0]["message"]["content"])

Node.js Örneği

const response = await fetch( "https://www.themaximize.ai/v1/chat/completions", { method: "POST", headers: { "X-API-Key": "sk-your-api-key", "Content-Type": "application/json" }, body: JSON.stringify({ model: "claude-haiku-4-5", messages: [{ role: "user", content: "Hello!" }], max_tokens: 100 }) } ); const data = await response.json(); console.log(data.choices[0].message.content);

cURL Örneği

curl https://www.themaximize.ai/v1/chat/completions \ -H "X-API-Key: sk-your-api-key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-haiku-4-5", "messages": [{"role": "user", "content": "Hello!"}], "max_tokens": 100 }'