solehudin-ai

Dokumentasi API untuk ATS checker, AI chat, dan integrasi Telegram.

Halaman ini merangkum kontrak endpoint yang aktif di project ini, dengan fokus utama pada /api/check-ats yang sekarang menerima resume dalam bentuk teks maupun file tanpa endpoint parsing terpisah.

Endpoint aktif

3

ATS Input

Text + File

Theme

Light

Quick Start

Jalankan project secara lokal

localhost:3000
npm install
npm run dev

Environment

Konfigurasi utama

OPENAI_API_KEY

API key provider AI yang kompatibel dengan OpenAI SDK.

OPENAI_BASE_URL

Base URL provider AI, misalnya endpoint DeepSeek atau gateway lain.

OPENAI_MODEL

Model default yang dipakai route AI jika request tidak mengirim model sendiri.

TELEGRAM_BOT_TOKEN

Token bot Telegram untuk sendMessage dan editMessageText.

TELEGRAM_WEBHOOK_SECRET

Secret verifikasi header webhook Telegram.

Main Endpoint

Kontrak /api/check-ats

Field wajib: `resume` dan `jobDescription`.

`resume` boleh berupa string biasa dalam JSON atau multipart form.

`resume` juga boleh berupa file PDF atau DOCX dalam multipart form.

Jika `resume` berupa file, server akan parsing dulu lalu lanjut ke analisis ATS.

Response sukses tetap berupa plain text stream, bukan JSON.

Error Cases

Respons error penting

400 Invalid input

Muncul jika `resume` atau `jobDescription` kosong / tidak valid.

400 Unsupported file format

Muncul jika file resume bukan PDF atau DOCX.

500 Error processing request

Muncul jika parsing atau proses AI gagal di server.

Endpoints

Referensi route yang tersedia

Endpoint ATS ditempatkan sebagai pusat dokumentasi, sementara route lain dijelaskan sebagai pelengkap untuk chat AI dan integrasi Telegram.

POST/api/check-atsATS Core

Menganalisis kecocokan resume dengan job description. Field resume mendukung string biasa atau file PDF/DOCX.

JSON Request Example

{
  "resume": "Frontend engineer dengan 5 tahun pengalaman React dan TypeScript",
  "jobDescription": "Mencari frontend engineer yang kuat di React, TypeScript, dan testing"
}

Multipart Request Example

curl -N -X POST http://localhost:3000/api/check-ats \
  -F "resume=@/path/to/resume.pdf" \
  -F "jobDescription=Mencari frontend engineer yang kuat di React, TypeScript, dan testing"

Response Example

⏳ Memulai analisis...

Skor kecocokan: 86%
- Kekuatan utama: ...
- Gap yang perlu ditingkatkan: ...
- Saran perbaikan: ...
POST/api/telegram-aiSSE Chat

Endpoint AI generik untuk chat biasa atau streaming SSE. Cocok untuk bot, dashboard admin, atau integrasi custom.

JSON Request Example

{
  "message": "Buatkan balasan singkat untuk customer",
  "systemPrompt": "Jawab singkat dan jelas.",
  "model": "deepseek-chat",
  "temperature": 0.7,
  "stream": true
}

Response Example

event: start
data: {"model":"deepseek-chat"}

event: delta
data: {"content":"Halo, tentu "}

event: end
data: {"content":"Halo, tentu saya bantu."}
POST/api/telegram/webhookTelegram

Webhook resmi Telegram yang menerima update chat, memanggil AI internal, lalu membalas user dengan editMessageText bertahap.

JSON Request Example

{
  "update_id": 10001,
  "message": {
    "message_id": 12,
    "text": "Bantu jawab customer ini",
    "chat": { "id": 123456789 }
  }
}

Response Example

{
  "ok": true
}

Telegram Integration

Cara integrasi dengan bot Telegram

Route /api/telegram/webhook dipakai sebagai webhook resmi Telegram. Endpoint ini akan memanggil logic AI internal dan membalas user secara bertahap.

1. Siapkan environment

OPENAI_API_KEY=your_key_here
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_WEBHOOK_SECRET=secret_yang_acak_dan_panjang

2. Pastikan endpoint publik

https://domain-anda.com/api/telegram/webhook

3. Set webhook ke Telegram

curl -X POST "https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://domain-anda.com/api/telegram/webhook",
    "secret_token": "secret_yang_acak_dan_panjang"
  }'

4. Verifikasi status webhook

curl "https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/getWebhookInfo"

Request Flow

Alur webhook Telegram

User mengirim pesan ke bot Telegram.

Telegram mengirim update ke `POST /api/telegram/webhook`.

Server memverifikasi header `x-telegram-bot-api-secret-token` jika secret diaktifkan.

Aplikasi mengirim placeholder `Sedang memproses...` ke chat.

Logic AI membaca stream dan memperbarui pesan Telegram secara bertahap.

Catatan penting

Jika TELEGRAM_WEBHOOK_SECRET diisi, Telegram harus mengirim header x-telegram-bot-api-secret-token yang sama dengan nilai secret saat set webhook. Jika tidak cocok, request akan ditolak dengan status 401.