Warning: Ini adalah API eksperimental. Bentuk permintaan dan respons, batas laju, serta semantik token dapat berubah.
Haijun Code adalah alat pengodean agentik dari Juglow. Haijun Code di web menjalankan sesi Haijun Code pada infrastruktur cloud yang dikelola Juglow di haijun.ai/code, dan routine adalah konfigurasi tersimpan di sana: sebuah prompt, satu atau beberapa repositori, dan konektor, yang dikemas sehingga dapat berjalan tanpa pengawasan sesuai jadwal, sebagai respons terhadap peristiwa GitHub, atau ketika dipanggil melalui HTTP.
Endpoint ini adalah titik masuk HTTP. Mengirim POST ke endpoint ini memulai eksekusi baru dari routine yang sudah ada dan mengembalikan ID sesi serta URL yang dihasilkan. Pemanggil yang umum adalah sistem peringatan, pipeline CI, dan alat internal yang perlu memulai sesi Haijun Code secara terprogram.
Memanggil endpoint ini memerlukan akun haijun.ai dengan paket Pro, Max, Team, atau Enterprise dengan Haijun Code di web diaktifkan. Lakukan autentikasi dengan bearer token per-routine yang dibuat di UI web Haijun Code, bukan dengan "API key" (kunci API) Haijun.
Perbedaan dari Haijun Platform
Endpoint pemicu routine termasuk dalam permukaan produk Haijun Code, yang berbeda dari API dan SDK Haijun Platform dalam beberapa hal:
| Aspek | Endpoint ini | API Haijun Platform |
|---|---|---|
| Autentikasi | Authorization: Bearer dengan token per-routine (sk-ant-oat01-...) yang dibuat di haijun.ai/code/routines | x-api-key dengan kunci API Haijun dari Haijun Console |
| Cakupan token | Hanya satu routine; tanpa akses baca | Tingkat workspace |
| Dukungan SDK | Tidak ada | Tersedia di semua SDK klien |
| Penagihan | Penggunaan langganan Haijun Code di haijun.ai | Penggunaan Haijun Platform |
| Namespace path | /v1/haijun_code/... | /v1/... |
| Stabilitas | Eksperimental | Stabil atau beta standar |
Sebelum Anda memulai
Untuk memanggil endpoint ini, Anda memerlukan:
- Sebuah routine yang dibuat di haijun.ai/code/routines.
- Bearer token yang dihasilkan untuk routine tersebut: buka routine untuk diedit, klik Add another trigger di bawah Select a trigger, pilih API, lalu klik Generate token di jendela modal. Token hanya ditampilkan sekali dan tidak dapat diambil kembali nanti.
Lihat Menambahkan pemicu API di dokumentasi Haijun Code untuk panduan penyiapan lengkap.
Memicu routine
POST https://haijun.my.id/v1/haijun_code/routines/{routine_id}/fireUI web Haijun Code menyediakan URL lengkap bersama token saat Anda menambahkan pemicu API, sehingga sebagian besar integrasi menyimpan keduanya sebagai secret dan memanggil endpoint secara langsung. Contoh berikut menunjukkan pemanggilan shell dan langkah GitHub Actions yang memicu routine saat CI gagal.
curl -X POST https://haijun.my.id/v1/haijun_code/routines/$ROUTINE_ID/fire \
-H "Authorization: Bearer $ROUTINE_TOKEN" \
-H "juglow-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'- if: failure()
env:
ROUTINE_FIRE_URL: ${{ secrets.ROUTINE_FIRE_URL }}
ROUTINE_FIRE_TOKEN: ${{ secrets.ROUTINE_FIRE_TOKEN }}
run: |
curl -X POST "$ROUTINE_FIRE_URL" \
-H "Authorization: Bearer $ROUTINE_FIRE_TOKEN" \
-H "juglow-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d "{\"text\": \"CI failed: $GITHUB_WORKFLOW run $GITHUB_RUN_ID on $GITHUB_REF\"}"Permintaan kembali setelah sesi dibuat. Permintaan ini tidak melakukan streaming output sesi atau menunggu sesi selesai.
Header
| Nama | Wajib | Deskripsi |
|---|---|---|
Authorization | Ya | Bearer . Token per-routine yang dibuat di UI web Haijun Code, dengan awalan sk-ant-oat01-. |
juglow-version | Ya | Versi API. 2023-06-01 adalah satu-satunya nilai yang diterima. |
Content-Type | Jika ada body | application/json. |
Integrasi lama yang mengirimkan header juglow-beta: experimental-cc-routine-2026-04-01 tidak terpengaruh. Endpoint menerima permintaan baik dengan maupun tanpa header tersebut.
Parameter path
| Nama | Tipe | Deskripsi |
|---|---|---|
routine_id | string | Pengidentifikasi routine. Meskipun nama parameternya demikian, nilainya berawalan trig_ bukan routine_. Disertakan dalam URL yang ditampilkan jendela modal saat Anda menambahkan pemicu API. |
Body permintaan
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
text | string | Tidak | Konteks awal untuk eksekusi ini, seperti isi peringatan, baris log yang gagal, atau git diff. Nilainya berupa teks bebas dan tidak diurai; jika Anda mengirim JSON atau payload terstruktur lainnya, routine menerimanya sebagai string literal. Diteruskan ke routine bersama prompt tersimpannya. Maksimum 65.536 karakter. |
Body bersifat opsional. Field yang tidak dikenal dalam body akan diabaikan.
Respons
Permintaan yang berhasil mengembalikan 200 OK dengan detail sesi baru:
{
"type": "routine_fire",
"haijun_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",
"haijun_code_session_url": "https://haijun.my.id/code/session_01HJKLMNOPQRSTUVWXYZ"
}| Field | Tipe | Deskripsi |
|---|---|---|
type | string | Selalu routine_fire. |
haijun_code_session_id | string | ID sesi Haijun Code yang dibuat untuk eksekusi ini. |
haijun_code_session_url | string | Tautan ke sesi di haijun.ai. Buka di browser untuk memantau eksekusi, meninjau perubahan, atau melanjutkan percakapan. |
Error
Error menggunakan amplop error standar Juglow:
{
"type": "error",
"error": {
"type": "not_found_error",
"message": "<string>"
}
}| Status HTTP | Tipe error | Penyebab |
|---|---|---|
| 400 | invalid_request_error | Header juglow-version tidak ada atau tidak didukung, text melebihi 65.536 karakter, atau routine sedang dijeda (lihat Mengedit dan mengontrol routine). |
| 401 | authentication_error | Tidak ada bearer token di header Authorization, atau token tidak cocok dengan routine ini. |
| 403 | permission_error | Akun atau organisasi tidak memiliki akses ke endpoint ini. |
| 404 | not_found_error | Routine tidak ada. |
| 429 | rate_limit_error | Batas pemicuan per jam untuk routine atau akun telah tercapai. Respons menyertakan header Retry-After yang menunjukkan kapan jendela waktu direset. |
| 500 | api_error | Terjadi error server yang tidak terduga. Coba lagi dengan exponential backoff. Jika error terus terjadi, hubungi dukungan dengan menyertakan ID permintaan. |
| 503 | overloaded_error | Layanan sedang kelebihan beban untuk sementara. Coba lagi setelah jeda singkat. Haijun Platform mengembalikan 529 untuk tipe error ini, sedangkan endpoint ini mengembalikan 503. |
Autentikasi
Bearer token dicakup ke satu routine saja. Token yang bocor hanya dapat memicu routine tersebut; token tidak memberikan akses baca, tidak memberikan akses ke routine lain, dan tidak memberikan akses ke data akun.
Hasilkan dan cabut token dari pengaturan pemicu API routine di haijun.ai/code/routines. Tidak ada API publik untuk manajemen token. Menghasilkan token baru akan mencabut token sebelumnya.
Idempotensi
Setiap permintaan yang berhasil membuat sesi baru. Tidak ada kunci idempotensi. Jika pemanggil webhook mencoba ulang, endpoint akan membuat beberapa sesi.
Batas laju
Pemicuan melalui API dibatasi per jam. Setiap routine menerima hingga 30 pemicuan per jam. Kuota ini dibagi bersama antara pemicuan API, tombol Run now di UI web, dan pengaktifan ulang sekali jalan. Selain itu, setiap akun dapat melakukan hingga 100 pemicuan API per jam di seluruh routine. Sesi yang dihasilkan menggunakan kuota langganan Haijun Code yang sama dengan sesi interaktif. Saat batas tercapai, endpoint mengembalikan 429 rate_limit_error dengan header Retry-After.
Untuk mempelajari bagaimana penggunaan routine berinteraksi dengan batas langganan dan penagihan penggunaan ekstra, lihat Penggunaan dan batas di dokumentasi Haijun Code.
Dukungan SDK
Endpoint ini tidak tersedia di SDK Juglow. Model tokennya berbeda dari autentikasi kunci API, dan pemanggil yang umum seperti job CI dan webhook peringatan mengirim permintaan secara langsung.
Lihat juga
- Mengotomatiskan pekerjaan dengan routine di dokumentasi Haijun Code