Agen AI Mendaftar Sendiri: Sandbox Shager dalam Satu Panggilan, Tombol Publikasi Tetap di Tangan Manusia

Agen AI bisa membuka sandbox Shager sendiri dengan satu POST. Inilah panggilannya, batas sandbox, langkah klaim oleh manusia, dan cara izin publikasi diberikan.

Agen AI bisa mendaftar ke Shager sendiri hanya dengan satu request: POST https://app.shager.ai/api/v1/agent/signup dengan body JSON yang minimal berisi agent_name. Sebagai balasannya, agen menerima kunci API, URL MCP, dan tautan klaim, lalu bisa langsung membuat workspace, mengimpor media, dan menyusun draf postingan. Tidak ada yang dijadwalkan atau dipublikasikan sampai seorang manusia membuka tautan klaim, masuk, dan memutuskan apakah kunci tersebut boleh memublikasikan.

Pembagian peran inilah inti desainnya. Agen bisa terus bekerja tanpa harus menunggu orang, sementara keputusan yang menyentuh audiens sungguhan tetap dipegang manusia.

Kenapa agen perlu bisa mendaftar sendiri?

Karena tanpa itu, alur kerja agen terputus. Agen yang diminta "menyiapkan distribusi media sosial untuk klien kita" langsung mentok di langkah pertama jika satu-satunya jalan masuk adalah manusia yang mengisi formulir pendaftaran, memverifikasi email, lalu membuat kunci di dashboard. Saat semua itu selesai dikerjakan, konteks agen sudah hilang.

Dengan pendaftaran mandiri, agen menyiapkan fondasinya sendiri: membuat satu workspace per klien, menarik media, menulis draf postingan, lalu menyerahkan satu tautan kepada manusia dengan semua bahan siap ditinjau. Panduan pendaftaran untuk agen dipublikasikan di /auth.md, dan halaman agen mencantumkan file penemuan (discovery) yang bisa dibaca agen sebelum mulai.

Diagram: agen mendaftar dengan satu panggilan dan mendapat sandbox yang hanya mengizinkan draf; seseorang membuka tautan klaim dan mengambil kepemilikan, lalu izin publikasi diberikan terpisah. Persetujuan per postingan bersifat opsional untuk tiap klien.
Agen mulai dengan draf. Seseorang mengklaim kepemilikan dan secara terpisah memberi kunci izin publikasi.

Seperti apa panggilan pendaftarannya?

Hanya agent_name yang wajib diisi (2 sampai 80 karakter). Field lainnya membantu manusia mengenali apa yang sedang mereka klaim.

curl -s https://app.shager.ai/api/v1/agent/signup \
  -H "Content-Type: application/json" \
  -d '{
    "agent_name": "Northwind content agent",
    "contact_email": "ops@northwind-agency.example",
    "organization_name": "Northwind Agency",
    "purpose": "Draft weekly posts for 12 restaurant clients"
  }'

Seluruh isi respons dibungkus di dalam data:

{
  "data": {
    "api_key": "shgr_live_...",
    "organization_id": "...",
    "sandbox": true,
    "claim_url": "https://app.shager.ai/...",
    "expires_at": "2026-09-19T10:04:11.000Z",
    "mcp_url": "https://app.shager.ai/api/mcp",
    "api_base": "https://app.shager.ai/api/v1",
    "openapi_url": "https://app.shager.ai/api/v1/openapi.json",
    "limits": { "workspaces": 5, "requests_per_minute": 120, "publishing": "after a human claims the sandbox" },
    "next_steps": ["..."]
  }
}

Ada dua field yang harus segera ditangani.

  1. api_key hanya ditampilkan sekali. Simpan sebelum melakukan hal lain, di secret store atau variabel lingkungan, jangan pernah di baris log.
  2. claim_url ditujukan untuk manusia. Jika Anda mengisi contact_email, Shager juga mengirim tautan klaim ke alamat itu, tetapi agen tetap harus menampilkannya dalam balasannya sendiri.

Pendaftaran dibatasi lima kali per jam per alamat, supaya agen yang terjebak dalam loop tidak menciptakan puluhan sandbox telantar.

Apa saja yang bisa dilakukan sandbox yang belum diklaim?

Boleh sebelum diklaim Diblokir sampai manusia mengklaim
Membuat hingga 5 workspace Menjadwalkan atau memublikasikan apa pun
Mengunggah media dari URL Membuat tautan koneksi klien
Membuat draf postingan Mengirim permintaan persetujuan klien
Melihat dan membaca semua yang dibuatnya

Panggilan yang diblokir gagal dengan error yang jelas, bukan diam-diam tidak melakukan apa-apa. Upaya menjadwalkan mengembalikan HTTP 403 dengan "code": "sandbox_unclaimed", begitu juga create_connect_link dan request_approval. Workspace keenam mengembalikan 403 sandbox_limit. Agen yang baik membaca code tersebut dan memberi tahu manusia apa yang dibutuhkan, alih-alih mencoba ulang.

Tautan koneksi dan permintaan persetujuan diblokir karena keduanya menjangkau orang sungguhan di luar agensi: klien yang mengklik tautan untuk menghubungkan Halaman Facebook-nya, atau peninjau yang menerima email persetujuan. Hal seperti itu tidak boleh terjadi atas nama organisasi yang belum diverifikasi siapa pun.

Sesi pertama yang masuk akal di dalam sandbox

Berikut yang dilakukan agen yang tertib di menit-menit pertamanya, dalam Python dengan requests:

import os, requests

API = "https://app.shager.ai/api/v1"
H = {"Authorization": f"Bearer {os.environ['SHAGER_API_KEY']}"}

def call(method, path, **body):
    r = requests.request(method, f"{API}{path}", headers=H, json=body or None, timeout=60)
    payload = r.json()
    if not r.ok:
        err = payload["error"]
        raise RuntimeError(f"{r.status_code} {err['code']}: {err['message']}")
    return payload["data"]

me = call("GET", "/me")
print(me)  # organization, scopes, sandbox status

ws = call("POST", "/workspaces", name="Harbor Tacos", timezone="America/Chicago")

media = call("POST", f"/workspaces/{ws['id']}/media",
             url="https://harbortacos.example/press/fall-menu.jpg",
             file_name="fall-menu.jpg")

print("Workspace", ws["id"], "media", media["id"], media["kind"])

Isi timezone secara eksplisit saat membuat workspace. Nilainya berupa nama zona IANA, dan penjadwalan nanti akan dihitung dalam zona tersebut, jadi restoran di Chicago tidak seharusnya mewarisi zona default milik orang lain.

Pada tahap ini belum ada akun media sosial yang terhubung, karena menghubungkan akun memerlukan tautan koneksi, dan tautan koneksi memerlukan klaim. Agen menyiapkan konten dan strukturnya, lalu manusia yang membuka pintu untuk sisanya.

Diagram: tiga tingkat izin untuk kunci agen (read, write, dan publish), dengan setiap tindakan tercatat di log audit.
Berikan agen hanya yang dibutuhkannya, dan lihat semua yang dilakukannya.

Apa yang terjadi saat manusia mengklaimnya?

Manusia membuka claim_url, masuk ke Shager (atau membuat akun), lalu mengambil alih kepemilikan sandbox beserta workspace, media, dan draf yang sudah disiapkan agen. Saat mengklaim, ia memilih apakah kunci milik agen juga boleh menjadwalkan dan memublikasikan, yang berarti menambahkan scope publish.

Pilihan ini layak dipikirkan sejenak. Membiarkan publish nonaktif adalah pengaturan jangka panjang yang sepenuhnya wajar: agen menyusun draf, lalu manusia atau klien menyetujui dan menjadwalkannya. Banyak agensi memulai dari sini, lalu belakangan menambahkan kunci khusus publikasi di https://app.shager.ai/dashboard/agents, tempat setiap kunci bisa dicabut dan setiap panggilan agen tercatat di log audit. Untung-rugi masing-masing pengaturan dibahas di rutinitas distribusi mingguan.

Setelah klaim, langkah berikutnya yang disarankan API sendiri cukup lugas: panggil create_connect_link agar pemilik akun menghubungkan akun media sosialnya (Facebook, Instagram, YouTube, X, LinkedIn, atau TikTok) tanpa perlu login ke Shager, lalu create_post dan, jika kunci memiliki publish, schedule_post.

Bagaimana jika tidak ada yang mengklaim?

Sandbox yang tidak diklaim kedaluwarsa setelah tujuh hari, tepat pada waktu yang tertera di expires_at. Draf dan workspace ikut terhapus. Agen yang menangani proyek lebih panjang sebaiknya mengingatkan manusia sebelum tanggal itu, dan tidak menyikapi masa kedaluwarsa dengan mendaftar berulang-ulang. Sandbox baru tidak membawa draf lama.

Bagaimana agen sebaiknya menyampaikan serah terima?

Secara lugas, lengkap dengan tautan dan konsekuensinya. Kira-kira seperti ini:

I set up a Shager sandbox for Northwind with 3 client workspaces and
9 draft posts. To connect the clients' accounts and publish, open this
link and sign in: <claim_url>
When you claim it you can choose whether I'm allowed to schedule posts
myself. If you don't claim it by Sep 19, the sandbox and drafts are deleted.

Pesan itu jujur soal apa yang sudah dikerjakan, apa yang masih menunggu, dan apa yang dikendalikan manusia. Pesan seperti ini juga yang paling mungkin diklik.

FAQ

Apakah pendaftaran mandiri dikenai biaya?

Tidak. Sandbox gratis, dan selama periode peluncuran Shager juga gratis setelah diklaim, tanpa kartu; sebelum mulai menarik biaya, kami akan memberi tahu Anda lebih dulu. Akses API dan MCP sudah termasuk di setiap paket. Batas tiap paket ada di halaman harga.

Apakah agen bisa memakai MCP, bukan REST, setelah mendaftar?

Bisa. Respons menyertakan mcp_url, dan kunci yang sama berlaku sebagai Authorization: Bearer shgr_live_... di server MCP. Tools-nya memetakan satu banding satu ke operasi REST yang dijelaskan di dokumen OpenAPI.

Apakah kunci yang sudah diklaim bisa memublikasikan tanpa ada manusia yang melihat postingannya?

Hanya jika manusia memberikan publish saat klaim dan workspace tersebut tidak mewajibkan persetujuan klien. Keduanya adalah pilihan manusia, dan keduanya bisa diubah kemudian: kunci bisa dicabut di dashboard, dan persetujuan bisa diwajibkan per workspace.

Langkah berikutnya

Setelah sandbox diklaim dan akun terhubung, beralihlah dari tahap eksplorasi ke alur kerja penuh. Pipeline konten agen dari awal sampai akhir melanjutkan tepat dari titik ini, mulai dari brief hingga postingan terbit dan klik per akun.

Coba di akun Anda sendiri.

Gratis selama masa peluncuran, tanpa kartu. Hubungkan akun, tulis sekali, lalu Shager yang memublikasikan dan mengukur hasilnya.