deepseek.stenly.co · API docs & testing
API ini memutar ulang chat.deepseek.com lewat browser sungguhan. Kamu mengirim prompt, lalu mengambil hasilnya dengan pola submit → poll status. Semua respons berupa JSON.
POST /api/v1/chat mengembalikan job_id. Model default DeepThink (reasoner) aktif.
GET /api/v1/jobs/{job_id} setiap ±2 detik hingga status = done atau error.
Percakapan lengkap (user + assistant, thinking trace jika DeepThink) tersedia di field result.
# 1. Kirim prompt curl -X POST https://deepseek.stenly.co/api/v1/chat \ -H "Content-Type: application/json" \ -d '{"prompt":"Jelaskan cara kerja transformer","deep_think":true}' # → {"job_id":"ab12cd34ef56","status":"queued"} # 2. Poll sampai selesai curl https://deepseek.stenly.co/api/v1/jobs/ab12cd34ef56
Autentikasi bersifat opsional. Jika server dikonfigurasi dengan token, endpoint /api/v1/* (kecuali /health) wajib menyertakan header:
Authorization: Bearer TOKEN_KAMU
Tanpa token yang dikonfigurasi, semua endpoint bisa dipanggil bebas. Token diatur lewat env API_TOKEN atau server.api_token di config.json.
/api/v1/chatSubmit prompt sebagai job asinkron. Langsung balas job_id; ambil hasilnya lewat GET /api/v1/jobs/{id}.
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
prompt | string | wajib | Instruksi / pertanyaan. |
deep_think | boolean | opsional | Aktifkan DeepThink (reasoner). Default true. |
web_search | boolean | opsional | Aktifkan pencarian web. Default false. |
# submit curl -X POST https://deepseek.stenly.co/api/v1/chat \ -H "Content-Type: application/json" \ -d '{"prompt":"Jelaskan cara kerja transformer","deep_think":true}' # → {"job_id":"ab12cd34ef56","status":"queued"}
done.// hasil akan muncul di sini
/api/v1/chat/streamRealtime (SSE). Body respons dari POST ini langsung adalah stream event — sekali request, token mengalir. Cocok untuk EventSource standar, library SSE, atau fetch stream.
| Event | Isi | Kapan |
|---|---|---|
{"type":"job"} | text = stream_id | Mulai streaming. |
{"type":"thinking"} | text = seluruh proses berpikir (akumulasi) | Saat DeepThink aktif, text selalu berisi thinking lengkap sejauh ini. |
{"type":"delta"} | text = seluruh jawaban (akumulasi) | Satu variabel yang tumbuh kata demi kata — langsung timpa variabel kamu. |
{"type":"done"} | result = percakapan lengkap | Stream selesai. |
{"type":"error"} | text = pesan error | Gagal — tutup koneksi. |
# satu request, langsung stream — pakai -N agar tidak nunggu buffer
curl -N -X POST https://deepseek.stenly.co/api/v1/chat/stream \
-H "Content-Type: application/json" \
-d '{"prompt":"Jelaskan cara kerja transformer","deep_think":true}'
import requests, json with requests.post("https://deepseek.stenly.co/api/v1/chat/stream", json={"prompt": "2+2?", "deep_think": True}, stream=True) as resp: buffer = "" for chunk in resp.iter_content(chunk_size=None): buffer += chunk.decode() while "\n\n" in buffer: data, buffer = buffer.split("\n\n", 1) line = data.strip() if not line.startswith("data:"): continue ev = json.loads(line[5:]) if ev["type"] == "thinking": think = ev["text"] # satu variabel, tumbuh terus elif ev["type"] == "delta": answer = ev["text"] # satu variabel, kata demi kata elif ev["type"] == "error": print("[ERROR]", ev["text"]) # setelah selesai: answer berisi jawaban lengkap, think berisi proses berpikir
data: = satu event. delta.text selalu berisi seluruh jawaban yang tumbuh — tinggal timpa ke satu variabel.// hasil akan muncul di sini
/api/v1/jobs/{job_id}Poll status job yang telah disubmit. Poll setiap ±2 detik sampai status = done atau error.
| Status | Artinya |
|---|---|
queued | Menunggu slot browser kosong. |
running | Sedang diproses browser. |
done | Selesai — field result berisi percakapan. |
error | Gagal — field error berisi pesan. |
job_id dari hasil POST chat.// hasil akan muncul di sini
/api/v1/modelsDaftar preset model dan toggle yang didukung server.
// hasil akan muncul di sini
/api/v1/healthStatus server: liveness, keberadaan session login, job aktif, dan kondisi pool browser. Tidak butuh token.
// hasil akan muncul di sini
| Nama | Default | Keterangan |
|---|---|---|
prompt | — | Teks pertanyaan / instruksi. Wajib diisi. |
deep_think | true | Mode DeepThink (reasoner) — memikirkan dulu sebelum menjawab, 15–60 detik. |
web_search | false | Biarkan DeepSeek mencari info terbaru dari web. |
"deep_think": false.Saat job done, field result berisi:
| Field | Keterangan |
|---|---|
id | ID percakapan unik. |
title | Judul percakapan (mis. Jelaskan 2+2 - DeepSeek). |
model | deepseek-chat atau deepseek-reasoner. |
scraped_at | Timestamp epoch detik. |
message_count | Jumlah pesan (biasanya 2). |
messages[] | Daftar pesan dengan role, content, thinking (tanpa HTML). |
| Kode | Artinya |
|---|---|
200 | OK. |
400 | Body tidak valid / prompt kosong. |
401 | Token salah / tidak ada — hanya jika autentikasi diaktifkan. |
404 | Job / stream tidak ditemukan. |
500 | Gagal internal (mis. browser error). |
503 | Browser tidak tersedia / semua slot sibuk. |
server.concurrency (default 3) — lebih dari itu antre.GET /api/v1/health untuk memantau kesehatan pool sebelum mengirim banyak request.