Task API

Buka di CMS

Task API memungkinkan sistem Anda sendiri menjalankan agent sebagai pelaksana satu tugas. Server Anda mengirim satu input lewat REST dengan API key, agent mengerjakan tugasnya, dan hasil lengkapnya kembali di response HTTP. Tidak ada streaming, tidak ada percakapan, dan tidak ada tindak lanjut: setiap panggilan adalah tugas baru yang berdiri sendiri.

Gunakan API ini jika sebuah sistem membutuhkan penilaian, knowledge, dan tool agent Anda untuk satu pekerjaan dalam satu waktu, misalnya:

  • Mengklasifikasikan tiket atau email. Helpdesk Anda mengirim setiap tiket baru dan menerima kategori, prioritas, dan ringkasan dalam bentuk JSON yang bisa langsung disimpan.
  • Mengambil data dari dokumen. Back office Anda mengirim invoice atau laporan sebagai lampiran dan menerima field yang dibutuhkan.
  • Menulis draf. CRM Anda mengirim data pelanggan dan menerima email tindak lanjut dalam Markdown, ditulis dengan pengetahuan agent tentang produk Anda.

Agent bekerja dengan instruksi utama, knowledge, dan tool miliknya, jadi apa yang Anda atur untuk chat juga dipakai di sini. Selain itu, Task API punya pengaturannya sendiri: instruksi tugas yang ditambahkan ke setiap panggilan, dan format hasil yang harus dipenuhi (Markdown, teks biasa, JSON, atau JSON yang sesuai dengan schema Anda).

Dalam contoh Mengajari Agent Anda, Atlas menyimpan SOP Kirana Group. Tim fasilitas Kirana mencatat tiket perawatan di sistemnya sendiri. Setiap tiket baru dikirim ke Task API milik Atlas, yang mengembalikan kategori, prioritas, dan ringkasan satu kalimat berdasarkan SOP perawatan Kirana, sehingga tiket langsung sampai ke tim yang tepat.


Sebelum memulai

  • Hanya untuk service agent. Task API tersedia untuk service agent. Personal agent tidak bisa menyalakannya. Lihat Personal Agent vs Service Agent jika Anda belum yakin jenis agent Anda.
  • Siapa yang bisa menyalakannya. Contributor agent serta Owner dan Admin organisasi.
  • Mati secara default. Setiap agent dimulai dengan API ini dalam keadaan mati. Tidak ada yang bisa memanggilnya sampai seseorang menyalakannya dan membuat key.
  • Panggil dari server. Key memberi akses penuh untuk menjalankan tugas di agent. Simpan di back-end Anda dan jangan pernah memanggil API dari halaman browser atau aplikasi mobile.

Cara agent bekerja dalam sebuah tugas

Dalam sebuah tugas, agent bekerja dalam mode tugas:

  • Agent mengerjakan tugas dalam satu kali jalan dan hanya mengembalikan hasilnya.
  • Agent tidak menyapa, tidak mengajukan pertanyaan lanjutan, dan tidak menawarkan bantuan lain.
  • Agent tidak menampilkan widget interaktif atau canvas.
  • Jika informasi yang dibutuhkan kurang, agent menyebutkan di hasilnya apa yang kurang, alih-alih menanyakannya.

Instruksi utama, knowledge, dan tool agent dipakai sesuai konfigurasinya, kecuali Anda mematikannya di pengaturan. Setiap tugas adalah percakapannya sendiri: agent tidak mengingat tugas sebelumnya.


Menyalakan API dan membuat key

Di CMS, buka Channels โ†’ Task API di sidebar agent Anda. Halaman ini punya tiga tab: Access, Settings, dan Test.

  1. Di tab Access, nyalakan API. Halaman ini menampilkan endpoint untuk agent ini beserta contoh kode.
  2. Agent punya dua slot key, Primary dan Secondary. Di salah satunya, buat key dan pilih Expiry: 7, 14, 30, 90, 180, atau 365 hari, atau tidak pernah. Setelah tanggal itu key berhenti bekerja.
  3. Buat key lalu segera salin. Key lengkap (diawali qta_) hanya ditampilkan satu kali. Setelah itu halaman hanya menampilkan karakter terakhirnya dan tanggal kedaluwarsanya.
  4. Simpan key di tempat penyimpanan rahasia server Anda (misalnya vault atau environment variable di server yang memanggil API).

Mengganti atau mencabut key

  • Key hilang? Key tidak bisa dilihat lagi. Buat key baru di slot yang sama; key lama berhenti bekerja.
  • Revoke (cabut) key untuk menghentikannya, misalnya jika key mungkin bocor atau sebuah sistem sudah tidak dipakai. Key yang sudah dicabut tidak bisa dinyalakan lagi.
  • Matikan API untuk menghentikan semua key agent sekaligus.

Mencabut key atau mematikan API berlaku dalam hitungan detik.

Merotasi key tanpa downtime

Dua slot ini ada supaya Anda bisa mengganti key tanpa mengganggu sistem Anda:

  1. Sistem Anda memakai key Primary.
  2. Buat key di slot Secondary.
  3. Pindahkan sistem Anda ke key Secondary, lalu pastikan tugasnya berhasil.
  4. Revoke key Primary.

Rotasi berikutnya, lakukan hal yang sama ke arah sebaliknya.


Pengaturan tugas

Tab Settings mengatur cara agent menangani tugas. Pengaturan ini berlaku untuk setiap panggilan dengan key agent ini.

PengaturanFungsinya
Additional promptInstruksi tugas yang ditambahkan ke setiap panggilan, maksimal 20.000 karakter. Jika bertentangan dengan instruksi agent lainnya, additional prompt yang diikuti. Tulis di sini apa tugasnya (misalnya "Klasifikasikan tiket perawatan berikut"); input di request adalah data yang dikerjakan.
Response formatBentuk hasil: Markdown (default), Plain text, JSON, atau JSON schema. Lihat Format response.
Include personalityMenambahkan kepribadian agent ke instruksinya. Mati secara default, karena tugas biasanya butuh hasil yang lugas.
Include interaction styleMenambahkan gaya interaksi agent. Mati secara default.
Include missionMenambahkan misi agent. Menyala secara default.
Use knowledgeMengizinkan agent mencari di knowledge-nya selama tugas. Menyala secara default.
Use toolsMengizinkan agent memakai tool-nya: plugin, MCP server, custom API, web search, dan skill. Menyala secara default.
Keep tasks forBerapa lama percakapan tugas disimpan: 7, 30 (default), atau 90 hari. Setelah itu percakapan dihapus.

Pengaturan ini berlaku untuk task baru beberapa detik setelah disimpan, tanpa perlu publish. Lain halnya dengan agent itu sendiri (behavior, knowledge, dan tools): panggilan ke Task API memakai agent yang sudah di-publish, jadi perubahan pada agent baru berlaku setelah Anda klik Publish (lihat Preview dan Publish Perubahan).

Format response

FormatYang Anda terima
MarkdownTeks dengan format Markdown di output.
Plain textTeks tanpa Markdown di output.
JSONSatu objek JSON. output berisi objek itu sebagai teks dan result berisi hasil parse-nya.
JSON schemaSatu objek JSON yang harus sesuai dengan schema yang Anda isi. Jawaban divalidasi; jika tidak sesuai, Qlar meminta agent memperbaikinya satu kali. Jika masih tidak sesuai, panggilan gagal dengan 422 output_invalid. output berisi objek itu sebagai teks dan result berisi hasil parse-nya.

Schema harus punya "type": "object" di root dan maksimal 20.000 karakter. Keyword yang didukung:

  • type: string, number, integer, boolean, object, array, null, atau daftar dari tipe-tipe ini
  • properties, required, additionalProperties (true atau false), items
  • enum
  • minimum dan maximum, minLength dan maxLength, minItems dan maxItems
  • title dan description (pakai untuk menjelaskan field kepada agent)

Tips: untuk hasil paling ketat, cantumkan setiap property di required dan atur "additionalProperties": false. Belum yakin cara menulis schema? Pakai Generate from example di CMS untuk membuatnya dari contoh JSON yang Anda inginkan.

Schema untuk contoh tiket Kirana:

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": ["maintenance", "cleaning", "security", "it", "other"],
      "description": "The team that should handle the ticket."
    },
    "priority": {
      "type": "string",
      "enum": ["low", "medium", "high"],
      "description": "high = safety risk or work stopped; low = cosmetic."
    },
    "summary": {
      "type": "string",
      "maxLength": 200,
      "description": "One sentence describing the problem."
    }
  },
  "required": ["category", "priority", "summary"],
  "additionalProperties": false
}

Menguji tugas di CMS

Tab Test menjalankan tugas dari CMS tanpa key. Tab ini memakai pengaturan sebagaimana adanya di form, bahkan sebelum Anda menyimpannya, pada draf agent. Isi input lalu jalankan untuk melihat:

  • output dan, untuk format JSON, hasil parse-nya,
  • apakah hasilnya lolos validasi,
  • tool yang dipanggil agent,
  • apakah perbaikan dibutuhkan.

Pakai tab ini untuk menyempurnakan additional prompt dan schema sebelum menghubungkan sistem Anda.


Request

POST https://api.qlar.ai/dialog/api/task-api/v1/agents/{agentId}/tasks
X-Api-Key: qta_...
Content-Type: application/json

Endpoint dengan agent ID Anda sudah terisi ditampilkan siap disalin di tab Access.

Body:

{
  "input": "Ticket: the AC in room 3 has been leaking since yesterday.",
  "permissions": ["MANAGER"],
  "timezone": "Asia/Jakarta"
}
FieldWajibKeterangan
inputYaData yang dikerjakan tugas, maksimal 100.000 karakter.
permissionsTidakKode permission orang yang menjadi tujuan tugas, berupa array string. Maksimal 50 kode, masing-masing maksimal 100 karakter. Lihat Permission.
attachmentsTidakMaksimal 5 file untuk dibaca agent. Lihat Lampiran.
timezoneTidakNama zona waktu IANA, misalnya Asia/Jakarta. Dipakai untuk tanggal dan waktu dalam tugas. Default: UTC.

Seluruh body request maksimal 1 MB.

Lampiran

Setiap lampiran adalah objek dengan type dan url:

{
  "input": "Extract the invoice number, the date, and the total amount.",
  "attachments": [
    { "type": "image", "url": "https://example.com/photo.jpg" },
    { "type": "document", "url": "https://example.com/report.pdf", "fileName": "report.pdf" }
  ]
}
FieldWajibKeterangan
typeYaimage atau document.
urlYaAlamat https tempat Qlar bisa mengunduh file. Harus bisa diakses publik: alamat privat atau internal dan redirect ditolak.
fileNameTidakNama file, ditampilkan kepada agent.
  • Maksimal 5 lampiran per tugas.
  • Gambar maksimal 10 MB, dokumen maksimal 20 MB.
  • Jenis file sama dengan unggahan di chat, misalnya gambar JPG, PNG, dan WebP, serta dokumen PDF, DOCX, XLSX, TXT, dan MD.

Jika file tidak bisa diunduh atau dipakai, panggilan gagal dengan 400 attachment_invalid.


Response

{
  "taskId": "6f1c...",
  "status": "completed",
  "format": "json_schema",
  "output": "{\"category\":\"maintenance\",\"priority\":\"high\"}",
  "result": { "category": "maintenance", "priority": "high" },
  "durationMs": 6120
}
FieldKeterangan
taskIdID tugas. Setiap tugas disimpan sebagai percakapan, jadi Anda bisa menemukannya di riwayat percakapan agent untuk audit, sampai dihapus setelah periode Keep tasks for.
statuscompleted.
formatFormat response yang dipakai tugas, misalnya json_schema.
outputHasil dalam bentuk teks.
resultHasil yang sudah di-parse sebagai objek JSON. Hanya untuk format JSON dan JSON schema.
durationMsLama pengerjaan tugas, dalam milidetik.

Timeout

Sebuah tugas bisa memakan waktu, terutama jika agent mencari di knowledge, memanggil tool, atau membaca lampiran. Qlar menunggu sampai 180 detik agar tugas selesai; setelah itu panggilan gagal dengan 504 run_timeout. Atur timeout HTTP client Anda minimal 200 detik, supaya client tidak menyerah sebelum Qlar menjawab.


Contoh kode

Setiap contoh mengirim satu tugas, menunggu sampai 200 detik, lalu mencetak hasilnya. Ganti YOUR_AGENT_ID dengan ID agent Anda, dan ambil key dari tempat penyimpanan rahasia Anda sebagai pengganti qta_your_key.

// Node.js 18 or later (built-in fetch)
const url = "https://api.qlar.ai/dialog/api/task-api/v1/agents/YOUR_AGENT_ID/tasks";
const apiKey = process.env.QLAR_TASK_KEY ?? "qta_your_key";

const response = await fetch(url, {
  method: "POST",
  headers: {
    "X-Api-Key": apiKey,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    input: "Ticket: the AC in room 3 has been leaking since yesterday.",
    permissions: ["MANAGER"],
  }),
  signal: AbortSignal.timeout(200_000), // at least 200 seconds
});

const data = await response.json();

if (!response.ok) {
  console.error(`Task failed (${response.status}): ${data.code} - ${data.message}`);
  process.exit(1);
}

console.log("Output:", data.output);
if (data.result) {
  console.log("Category:", data.result.category);
}

Dengan format JSON schema dan schema di atas, tiket Kirana menghasilkan:

{
  "taskId": "6f1c...",
  "status": "completed",
  "format": "json_schema",
  "output": "{\"category\":\"maintenance\",\"priority\":\"high\",\"summary\":\"The AC in room 3 has been leaking since yesterday.\"}",
  "result": {
    "category": "maintenance",
    "priority": "high",
    "summary": "The AC in room 3 has been leaking since yesterday."
  },
  "durationMs": 6120
}

Permission

Kode permission bekerja sama seperti di percakapan agent: knowledge tanpa kode bisa dipakai di setiap tugas, dan knowledge dengan kode hanya dipakai jika tugas membawa salah satu kode tersebut. Kode ini juga diteruskan ke tool custom API milik agent, sehingga API Anda sendiri bisa memeriksanya. Lihat Permission Knowledge.

Pemanggil bertanggung jawab atas kode yang dikirimnya. Qlar tidak tahu siapa orang di balik sebuah tugas: Qlar memercayai kode yang dikirim pemegang key. Siapa pun yang memegang key bisa mengirim kode apa saja, termasuk kode untuk knowledge rahasia. Server Anda yang harus menentukan kode yang dibawa setiap tugas, misalnya dengan memetakan role atau grup di sistem Anda ke kode permission. Jangan pernah meneruskan kode dari browser pengguna apa adanya.


Biaya

Task API dikenai biaya seperti chat:

  • Pemakaian AI (token) setiap tugas dibebankan ke kredit organisasi Anda, sama seperti jawaban chat dari agent yang sama. Tool seperti web search dikenai biaya seperti biasa.
  • Jika agent berjalan dengan model AI milik organisasi Anda, pemakaian itu tidak memakai kredit Qlar, sama seperti chat. Lihat AI Models.
  • Proses perbaikan untuk format JSON schema juga memakai token.
  • Tugas yang dijalankan dari tab Test dikenai biaya seperti chat di Preview.

Jika kredit organisasi habis, panggilan gagal dengan 402 credit_exhausted. Lihat Cara Kerja Kredit.


Batas request

Task API belum punya batas request. Batas ini akan segera hadir; sampai saat itu, jaga agar jumlah tugas yang Anda kirim bersamaan tetap wajar.


Error

Error memakai kode status HTTP dan body JSON berisi code yang bisa dibaca mesin dan message yang bisa dibaca manusia. Jika tugas sudah sempat dimulai, body juga berisi taskId.

{
  "code": "invalid_request",
  "message": "input is required."
}

Bangun logika Anda berdasarkan code. Isi message bisa berubah dan ditujukan untuk manusia.

Status HTTPcodeArti
400invalid_requestBody tidak valid, misalnya input tidak ada atau terlalu panjang, atau kode permission atau lampiran terlalu banyak.
400attachment_invalidSebuah lampiran tidak bisa diunduh atau dipakai: bukan https, tidak bisa diakses publik, terlalu besar, atau jenis filenya tidak didukung.
401unauthorizedKey tidak dikirim, salah, kedaluwarsa, atau sudah dicabut, API dimatikan, atau agent bukan service agent. Semua kasus ini sengaja mendapat jawaban yang sama.
402credit_exhaustedKredit organisasi habis. Isi ulang, lalu coba lagi.
403agent_limit_reachedAgent sudah menghabiskan batas pemakaian bulanan yang ditetapkan admin organisasi untuknya.
403own_model_requiredOrganisasi hanya mengizinkan model AI miliknya sendiri, dan agent belum punya model sendiri. Lihat Hanya Memakai Model Sendiri.
413Body request lebih besar dari 1 MB.
422output_invalidJawaban tidak sesuai dengan format JSON, bahkan setelah satu kali perbaikan otomatis. Body juga berisi output (jawaban mentah) dan errors (bagian yang tidak sesuai).
504run_timeoutTugas tidak selesai dalam 180 detik. Body berisi taskId.

Praktik keamanan terbaik

  • Simpan key di server. Panggil API hanya dari kode back-end. Jangan pernah menaruh key di halaman browser, aplikasi mobile, aplikasi desktop yang Anda distribusikan, atau repository publik: siapa pun yang bisa membaca kodenya bisa memakai key tersebut.
  • Tentukan permission di server Anda. Kirim hanya kode yang menjadi hak orang yang menjadi tujuan tugas.
  • Simpan key sebagai rahasia. Pakai vault atau secret variable di platform Anda, bukan file konfigurasi yang masuk ke source control. Jangan mencetak key di log.
  • Pasang expiry dan rotasi key memakai dua slot, seperti dijelaskan di Merotasi key tanpa downtime.
  • Segera cabut jika bocor. Jika sebuah key mungkin terekspos, cabut di tab Access dan buat key baru.
  • Perlakukan input dan lampiran sebagai data. Apa pun yang Anda taruh di input atau lampiran akan dibaca agent. Taruh instruksi di Additional prompt, bukan di teks yang berasal dari luar organisasi Anda.
  • Matikan API jika tidak dipakai lagi.

Troubleshooting

GejalaYang perlu diperiksa
Setiap panggilan mengembalikan 401 unauthorizedPastikan API menyala, key adalah nilai lengkap yang diawali qta_, dikirim di header X-Api-Key, belum kedaluwarsa atau dicabut (atau digantikan key baru di slot yang sama), dan agent ID di URL sesuai dengan agent pemilik key. Agent juga harus tetap berupa service agent.
Perubahan tidak berpengaruhPengaturan Task API berlaku beberapa detik setelah disimpan. Perubahan pada agent itu sendiri (behavior, knowledge, tools) baru berlaku setelah Anda klik Publish. Tab Test menjalankan agent draf dengan form apa adanya, jadi hasilnya bisa berbeda dari panggilan live sampai Anda menyimpan dan publish.
422 output_invalidSchema mungkin sulit dipenuhi, atau additional prompt meminta sesuatu yang tidak diizinkan schema. Baca errors di response, coba input yang sama di tab Test, lalu sederhanakan schema atau perjelas instruksinya.
504 run_timeoutTugas berjalan lebih dari 180 detik. Perpendek input, kurangi lampiran, atau matikan tool yang tidak dibutuhkan tugas.
Client menyerah sebelum jawaban datangNaikkan timeout HTTP client Anda menjadi minimal 200 detik.
400 attachment_invalidPastikan URL memakai https, bisa dibuka dari internet publik tanpa login atau redirect, serta file berada dalam batas ukuran dan jenisnya didukung.
Hasil berisi pertanyaan atau menyebut informasi kurangDalam mode tugas, agent tidak bisa bertanya balik. Masukkan detail yang kurang ke input, atau jelaskan di Additional prompt apa yang harus dilakukan jika ada yang kurang.
Agent tidak memakai knowledge rahasiaTugas tidak membawa kode permission knowledge tersebut. Kirim kodenya di permissions.

Halaman Terkait