Jalankan otomatisasi
Tugas
Beri ponsel tujuan dengan kata-kata biasa. Agen Clousd mengerjakan langkah-langkahnya dan memberi jawaban.
Sebuah tugas
POST /v1/runs
{
"task": "Open Settings and tell me the Android version",
"device": "c3f9a41d2"
}
# → 201 {"run": {"id": "r_8f2c", "status": "queued", …}}
GET /v1/runs/r_8f2c
# → {"run": {"status": "completed", "answer": "Android 15", "steps": 4, "seconds": 21}}Tulis tugas seperti Anda memberi tugas ke seseorang: apa yang dibuka, apa yang dikerjakan, apa yang dilaporkan. Agen melihat layar, mengetuk, dan mengetik sampai tujuan tercapai, lalu mengakhiri dengan answer. Satu ponsel mengerjakan satu tugas dalam satu waktu; run lain di ponsel yang sama menunggu di antreannya.
Status: queued, running, paused (agen menanyakan sesuatu), completed, failed, cancelled. Kirim header Idempotency-Key agar pengulangan aman: kunci dan body yang sama mengembalikan run yang sama.
Banyak ponsel
Kirim devices sebagai ganti device (hingga 32): setiap ponsel mendapat tugas yang sama, semuanya sekaligus. Responsnya berupa run induk dengan satu run anak per ponsel; GET /v1/runs?since=… menampilkannya beserta jawaban masing-masing.
Pantau secara langsung
curl -N -H "Authorization: Bearer cl_live_…" https://api.clousd.com/v1/runs/r_8f2c/events
id: 3
event: step
data: {"n": 3, "tool": "tap", "target": "About phone", "result": "ok"}
id: 6
event: end
data: {"status": "completed"}Event: status, plan, step, card, answer, message, end. Lanjutkan setelah koneksi terputus dengan ?since=N. Setiap langkah disimpan: GET /v1/runs/{id}/trajectory menampilkan daftarnya dan /steps/{n}.jpg adalah layar sebelum tiap langkah. Di dasbor, run yang sama menjadi rekaman ulang yang bisa diputar langkah demi langkah.
Pertanyaan dan izin
Dengan "options": {"mode": "ask"}, agen berhenti sebelum langkah berisiko (mengirim, membayar, menghapus) dan saat membutuhkan sesuatu yang hanya Anda ketahui. Statusnya menjadi paused dan membawa card: pertanyaan dengan pilihan, atau permintaan izin untuk satu tindakan.
POST /v1/runs/r_8f2c/answer {"card": "c1", "answer": "the first one"}
POST /v1/runs/r_8f2c/answer {"card": "c2", "allow": true}
POST /v1/runs/r_8f2c/message {"text": "use the work email"}
POST /v1/runs/r_8f2c/cancelLogin tersimpan
Simpan login sekali - di dasbor (baris Login pada tugas) atau dengan POST /v1/credentials {"package", "name", "fields": {"username", "password", "totp"}} - lalu kirimkan ke run berdasarkan paket dan nama. Agen mengetik nilainya di ponsel; nilai itu tidak pernah sampai ke model, ke langkah-langkah tugas, atau ke respons API, dan GET /v1/credentials hanya menunjukkan kolom mana yang sudah diisi.
{
"task": "Sign in to the app and tell me how many orders are on the Orders page",
"device": "c3f9a41d2",
"credentials": [{"package": "com.example.shop", "name": "work"}]
}Output terstruktur
Tambahkan JSON Schema di options.output_schema, dan jawabannya juga dikembalikan sebagai structured_output dengan bentuk itu, siap dipakai kode Anda.
"options": {
"output_schema": {"type": "object", "properties": {"orders": {"type": "integer"}}},
"max_steps": 60,
"timeout": 600
}
# → "structured_output": {"orders": 3}Sesuai jadwal
Jadwal memulai tugas yang sama dengan sendirinya: POST /v1/schedules dengan name, phones, task, at ("HH:MM"), tz (zona waktu seperti Europe/Berlin), days (1 sampai 7, Senin = 1; kosong berarti setiap hari), dan credentials bila perlu. every: "hour" menjalankannya setiap jam pada menit dari at; more: [{"at": "18:00", "days": [6, 7]}] menambah waktu lain untuk tugas yang sama; trigger: "api" hanya menjalankannya saat Anda memanggil POST /v1/schedules/{id}/run, yang juga langsung memulai jadwal apa pun. Jeda dengan /toggle dan hapus dengan /delete. Agar diberi tahu saat tugas selesai, tambahkan webhook.