CLOUSD
Buka akun
PelajariBenchmarkSkor agent di ponsel ClousdBlogSegeraPanduan, ulasan mendalam, dan catatan lapanganBandingkanSegeraClousd dibandingkan alternatifnya
BangunIntegrasiSegeraMCP, Claude Code, Codex, Cursor, n8nGitHubSDK, server MCP, dan contoh
Baca dokumentasi

Jalankan otomatisasi

Tugas

Beri ponsel tujuan dengan kata-kata biasa. Agen Clousd mengerjakan langkah-langkahnya dan memberi jawaban.

Sebuah tugas

Mulai run
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

Server-Sent Events
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.

Jawab
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/cancel

Login 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.

Tugas dengan login
{
  "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.

Opsi
"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.