Di halaman ini

Pengembang

API ZeeDo

Terakhir diperbarui 2026-11-07.OpenAPI 3.1224 operasiUnduh dokumen OpenAPI 3.1

Semua yang bisa dilakukan orang di ZeeDo juga bisa dilakukan program lewat API, mulai paket Pro; kunci paket Starter hanya membaca, dan paket Free tidak punya kunci. Menghapus ruang kerja dan tindakan yang meminta seseorang membuktikan identitasnya tetap di browser.

Buat klien dari dokumennya: dokumen yang sama dengan yang dipakai untuk membangun dan menguji produk.

Mulai cepat

Kunci, konvensi, dan batas

Buat kunci di Pengaturan → API & webhook (pemilik mengonfirmasi identitasnya lebih dulu), lalu panggil API dengan kunci itu sebagai bearer token. URL dasarnya https://api.zeedo.cloud/v1.

curl https://api.zeedo.cloud/v1/me \
  -H "Authorization: Bearer <kunci API Anda>"
  • Kunci milik organisasi, memiliki cakupan — read, write, atau admin — dan bisa dibatasi ke satu ruang kerja.
  • Body JSON, kolom snake_case, waktu dalam ISO 8601 UTC.
  • Error berupa dokumen masalah RFC 9457: type, title, status, detail dan, untuk kolom yang ditolak, errors[] dengan JSON pointer.
  • Daftar dibagi per halaman dengan limit (paling banyak 200) dan next_cursor.
  • Kirim header Idempotency-Key di setiap POST: pengulangan dalam 24 jam mendapat jawaban yang sama dengan yang pertama.
  • 600 permintaan per menit dan 10 stream terbuka per kunci, dengan header RateLimit-*.

Webhook

Pengiriman bertanda tangan untuk event yang Anda pilih

Organisasi mendaftarkan satu endpoint (Pengaturan → API & webhook, atau POST /webhooks) dan memilih event-nya. Setiap event berupa POST JSON berisi id, jenis, dan stempel waktu — tidak pernah nama, email, atau alamat IP seseorang, yang Anda baca kembali lewat API dengan kunci.

{
  "id": "evt_eu_01J9ZQ3M7X5V2K8R4T6Y1N0PBA",
  "type": "run.completed",
  "version": 1,
  "occurred_at": "2026-09-27T10:02:31.000Z",
  "org_id": "org_eu_01J9ZQ1C4H8D6F2W5S7K3M9QXE",
  "data": {
    "run_id": "run_eu_01J9ZQ2V8N4B6C1X3Z5Q7W9ERT",
    "bot_id": "bot_eu_01J9ZQ2A3S5D7F9G1H3J5K7L9M"
  }
}

Setiap pengiriman ditandatangani: ZeeDo-Signature: t=<detik unix>,v1=<tanda tangan>, dengan tanda tangan berupa HMAC-SHA256 heksadesimal dari <t>.<body mentah> yang dikunci dengan secret endpoint Anda. Setelah Anda merotasi secret, secret sebelumnya ikut menandatangani selama 24 jam, sebagai v1 kedua. Tolak tanda tangan yang berumur lebih dari 5 menit.

import { createHmac, timingSafeEqual } from 'node:crypto';

// header: nilai ZeeDo-Signature; body: body permintaan mentah, sebelum parsing JSON apa pun
export function verified(header, body, secret) {
  const parts = header.split(',');
  const t = parts.find((p) => p.startsWith('t='))?.slice(2);
  if (!t || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const expected = createHmac('sha256', secret).update(`${t}.${body}`).digest('hex');
  return parts.filter((p) => p.startsWith('v1=')).some((p) =>
    p.length === expected.length + 3 && timingSafeEqual(Buffer.from(p.slice(3)), Buffer.from(expected)));
}
  • Jawab dengan 2xx apa pun dalam 10 detik. Selain itu — error, redirect, atau tidak ada jawaban — dicoba ulang dengan jeda yang makin lama selama 24 jam; setelah itu pengiriman menjadi dead letter, disimpan 7 hari dan bisa dikirim ulang dari Pengaturan.
  • Pengiriman terjadi minimal sekali dan tanpa urutan tertentu: lewati id yang sudah Anda tangani.
  • Permintaan juga membawa ZeeDo-Event-Id, ZeeDo-Event-Type, dan ZeeDo-Delivery-Id. Endpoint memakai https di port 443 pada nama host publik.
  • Event: alert.fired, approval.decided, approval.requested, billing.service_state_changed, bot.state_changed, budget.threshold, connection.created, connection.error, consent.recorded, memory.note_created, policy.updated, run.cancelled, run.completed, run.failed, run.parked, task.completed, dan task.created.
  • Untuk memeriksa endpoint Anda, tekan Kirim uji coba di Pengaturan → API & webhook: satu pengiriman bertipe webhook.test dengan data kosong, ditandatangani seperti yang lain dan dikirim apa pun event yang Anda pilih. Paling banyak sekali per menit.

Operasi

224 operasi. Dokumen OpenAPI memuat parameter, body, cakupan, dan error dari setiap operasi.

Alat

  • GET/toolsList tools
  • PATCH/tools/{id}Adjust an imported tool's classification

Anggota

  • GET/membersList members
  • POST/membersAdd a member
  • GET/members/{id}Get a member
  • PATCH/members/{id}Update a member - their role and their grants
  • DELETE/members/{id}Remove a member
  • POST/members/{id}/transfer-ownershipTransfer ownership of the organisation

Aturan peringatan

  • GET/alert-rulesList alert rules
  • POST/alert-rulesCreate an alert rule
  • GET/alert-rules/{id}Get an alert rule
  • PATCH/alert-rules/{id}Change an alert rule's channels or settings
  • DELETE/alert-rules/{id}Remove an alert rule

Aturan tetap

  • GET/standing-approvalsList standing approvals
  • POST/standing-approvalsCreate a standing approval
  • DELETE/standing-approvals/{id}Revoke a standing approval

Biaya

  • GET/costsCost breakdown, grouped by bot, model, tool, member or day

Bot

  • GET/botsList bots
  • POST/botsCreate a bot
  • GET/bots/exportExport a workspace's bots and their budgets
  • GET/bots/{id}Get a bot, with its schedule and budget
  • PATCH/bots/{id}Change a bot - who it is, its model, schedule, budget and manager
  • DELETE/bots/{id}Delete a bot
  • POST/bots/{id}/pausePause a bot
  • PUT/bots/{id}/pinPin a bot for the caller
  • DELETE/bots/{id}/pinUnpin a bot for the caller
  • PUT/bots/{id}/look-outTurn a bot's look-out on or off
  • POST/bots/{id}/packages/emptyEmpty a bot's installed packages
  • PUT/bots/{id}/rules/{rule}/shapeSet what a person's rule checks
  • POST/bots/{id}/rules/{rule}/keysAdd an exact address to a person's rule
  • POST/bots/{id}/rule-questions/{q}/answerAnswer a question about a person's rule
  • POST/bots/{id}/rules/{rule}/undoUndo a rule kept from a person's message
  • POST/bots/{id}/rules/{rule}/put-backPut back a rule just undone
  • POST/bots/{id}/rules/{rule}/restoreBring back a stopped rule
  • POST/bots/{id}/rule-exceptions/{e}/voidTake back a step allowed once
  • POST/bots/{id}/messages/{m}/keep-as-ruleKeep a person's message as a rule
  • POST/bots/{id}/rules/{rule}/retireStop using a person's rule
  • POST/bots/{id}/rulesAdd a person's rule for a bot
  • PATCH/bots/{id}/rules/{rule}Change the words of a person's rule
  • POST/bots/{id}/kept-lines/{line}/keep-as-ruleKeep a line kept from the chat as a rule
  • POST/bots/{id}/resumeResume a paused bot
  • POST/bots/{id}/stopStop a bot (its open run ends, cancelled on blocker stopped; the bot returns to its schedule)
  • POST/bots/{id}/archiveArchive (fire) a bot
  • GET/bots/{id}/filesList a bot's files as its Files tab shows them
  • GET/bots/{id}/conversationRead a bot's chat record
  • GET/bots/{id}/conversation/searchSearch a bot's chat record
  • GET/bots/{id}/messagesRead a bot's conversation
  • POST/bots/{id}/messagesSend a message to a bot
  • POST/bots/{id}/runStart a run now
  • GET/bots/{id}/instructionsRead the instruction stack a bot runs on
  • POST/bots/{id}/brief-proposalsPropose a change of a bot's brief
  • PATCH/bots/{id}/approvals/{class}Change whether a bot needs approval for an action class

Brankas

  • GET/vault/entriesList the credential vault's entries
  • GET/vault/entries/{id}Get a vault entry
  • POST/vault/entries/{id}/revealReveal a credential to the person asking

Dasbor

  • GET/dashboards/spendThe organisation's spend, by workspace, team, model or member
  • GET/dashboards/runsHow the organisation's jobs went, per bot and per trigger, with approval waits
  • GET/dashboards/toolsTool calls, errors and latency per connector and tool, and per hour

File

  • GET/artifactsList artifacts
  • DELETE/artifacts/{id}Delete an artefact
  • GET/artifacts/{id}/contentDownload an artefact's file
  • GET/artifacts/{id}/previewPreview the first lines, rows or blocks of an artefact's file

Hak paket

  • GET/entitlementsGet the entitlements of the organisation

Kartu interaksi

  • GET/cardsList interaction cards
  • GET/cards/{id}Get an interaction card
  • POST/cards/{id}/answerAnswer an interaction card (answer, approve, deny or skip)

Keputusan

  • GET/decisionsList decisions

Koneksi

  • GET/connectionsList connections
  • POST/connectionsCreate a connection
  • GET/connections/{id}Get a connection
  • PATCH/connections/{id}Change who may use a connection
  • DELETE/connections/{id}Remove a connection
  • PUT/connections/{id}/keyReplace a connection's key

Konektor

  • GET/connectorsList connectors

Kunci API

  • GET/api-keysList API keys
  • POST/api-keysCreate an API key
  • DELETE/api-keys/{id}Revoke an API key
  • POST/api-keys/{id}/rotateRotate an API key

Log audit

  • GET/auditList audit events
  • GET/audit/exportExport audit events

Masuk tunggal (SSO)

  • GET/sso/connectionsList SSO connections
  • POST/sso/connections/syncRefresh the SSO connection mirror from WorkOS
  • POST/sso/portal-linkCreate a WorkOS admin portal link
  • PATCH/ssoChange the organisation's SSO settings

Memori

  • GET/memory/searchSearch memory
  • GET/memory/factsList facts
  • POST/memory/notesCreate a note
  • DELETE/memory/notes/{id}Delete a note
  • GET/memory/procedures/{path}Get a procedure
  • PUT/memory/procedures/{path}Create or replace a procedure
  • GET/memory/episodes/{id}Get an episode
  • POST/memory/{kind}/{id}/pinPin a memory item
  • POST/memory/{kind}/{id}/retractRetract a memory item
  • POST/memory/erasuresErase memory
  • GET/memory/erasures/{id}Get a memory erasure
  • POST/memory/{kind}/{id}/confirmConfirm a note or a relation
  • GET/memory/capturesList the steps people showed or took over, waiting to be saved as flows
  • POST/memory/captures/{id}/saveSave captured steps as a flow
  • DELETE/memory/captures/{id}Discard captured steps

Mesin

  • GET/machinesThe workspace's machine and the machine pill's figures

Model

  • GET/modelsList the model catalog

Organisasi

  • GET/orgGet the organisation
  • PATCH/orgUpdate the organisation
  • GET/org/eu-checksWhere the organisation's model checks are made
  • PUT/org/eu-checksKeep every model check in the EU, or stop keeping them there

Pantauan

  • GET/watchesList standing watches
  • GET/watches/{id}Get a standing watch
  • PATCH/watches/{id}Pause, resume or cancel a standing watch

Pemanggil

  • GET/meDescribe the calling principal

Penangguhan

  • POST/suspensions/{id}/appealAppeal a suspension

Penyedia

  • GET/providersList providers
  • POST/providersRegister a provider
  • GET/providers/{id}Get a provider
  • PATCH/providers/{id}Rename, disable or re-enable a provider, or price a custom endpoint's models
  • DELETE/providers/{id}Remove a provider
  • POST/providers/{id}/keysAdd or rotate a provider key
  • DELETE/providers/{id}/keys/{key_id}Revoke a provider key
  • POST/providers/{id}/probeValidate a provider's key, and probe a custom endpoint
  • GET/providers/key-recipientGet the public key a provider key is sealed to
  • GET/providers/defaultsGet the workspace's default models
  • PUT/providers/defaultsSet the workspace's default model for a purpose
  • DELETE/providers/defaults/{purpose}Clear a purpose's own model
  • GET/providers/chainsGet the fallback chains
  • PUT/providers/chainsReplace the fallback chains

Peringatan

  • GET/alertsList fired alerts

Permukaan

  • GET/surfaces/{id}/hold/stepsThe steps so far of your own recording on a bot's screen
  • POST/surfaces/{id}/hold/capturePause or resume your own recording on a bot's screen
  • POST/surfaces/{id}/streamWatch a bot's live screen, or take it over

Persetujuan

  • GET/approvalsList approvals
  • POST/approvals/{id}/decideDecide an approval (approved or denied, optionally granting a standing approval)

Privasi

  • GET/privacy/erasureList erasure requests
  • POST/privacy/erasureRequest erasure of personal data
  • GET/privacy/erasure/{id}Get an erasure request
  • POST/privacy/exportRequest an export of the organisation
  • GET/privacy/exportsList exports
  • GET/privacy/exports/{id}Get an export
  • GET/privacy/exports/{id}/downloadDownload an export

Proses

  • GET/runsList runs
  • GET/runs/{id}Get a run
  • GET/runs/{id}/stepsList the steps of a run
  • POST/runs/{id}/forkFork a run from a step, with a changed instruction
  • POST/runs/{id}/cancelCancel a run (stops its bot, or that job alone when it stands aside; it ends cancelled on blocker stopped)
  • POST/runs/{id}/recheckAsk a run parked because the AI service did not answer to check again now
  • GET/runs/{id}/artifacts/archiveDownload a run's files as one archive

Ringkasan harian

  • GET/alert-digestGet a workspace's scheduled digest
  • PUT/alert-digestSet or turn off a workspace's scheduled digest

Ruang kerja

  • GET/workspacesList workspaces
  • POST/workspacesCreate a workspace
  • GET/workspaces/{id}Get a workspace
  • PATCH/workspaces/{id}Update a workspace
  • POST/workspaces/{id}/uploadsStore a file to hand to a bot
  • DELETE/workspaces/{id}/uploads/{upload_id}Remove a file before it is sent
  • GET/workspaces/{id}/budgetGet the workspace budget a person set
  • PUT/workspaces/{id}/budgetSet, change or remove the workspace budget
  • GET/workspaces/{id}/report-recipientsGet who gets a copy of the workspace's monthly report
  • PUT/workspaces/{id}/report-recipientsSet who gets a copy of the workspace's monthly report
  • GET/workspaces/{id}/usageGet the share of the AI usage the plan includes and its dates
  • GET/workspaces/{id}/activityRead the workspace's activity feed
  • GET/workspaces/{id}/egressThe workspace's egress allowlist and host deny list
  • PUT/workspaces/{id}/egressReplace the workspace's egress allowlist and host deny list
  • GET/workspaces/{id}/policyGet the workspace policy
  • PATCH/workspaces/{id}/policyChange the workspace policy
  • GET/workspaces/{id}/policy-documentGet the workspace policy document
  • PUT/workspaces/{id}/policy-documentReplace the workspace policy document
  • GET/workspaces/{id}/standingThe workspace's standing - its suspension in force and its fair-use flag

Rutinitas

  • GET/automationsList a bot's automations
  • POST/automationsSchedule an automation
  • GET/automations/{id}Get an automation
  • PATCH/automations/{id}Pause, resume, cancel or change an automation
  • DELETE/automations/{id}Cancel an automation
  • POST/automations/{id}/adoptKeep a bot's tainted automation as the caller's own

Server MCP

  • GET/mcp-serversList MCP servers
  • POST/mcp-serversRegister an MCP server
  • POST/mcp-servers/previewCheck an MCP server before registering it
  • DELETE/mcp-servers/{id}Remove an MCP server that has no tools
  • GET/mcp-servers/{id}/accessRead each bot's access to an MCP server
  • PUT/mcp-servers/{id}/accessSet bots' access to an MCP server
  • POST/mcp-servers/{id}/reopenOpen a rejected MCP server for another review
  • POST/mcp-servers/{id}/pausePause an MCP server
  • POST/mcp-servers/{id}/resumeResume a paused MCP server
  • POST/mcp-servers/{id}/turn-onTurn a rejected MCP server back on
  • POST/mcp-servers/{id}/approveApprove an MCP server
  • POST/mcp-servers/{id}/rejectReject an MCP server
  • POST/mcp-servers/{id}/discoverImport an MCP server's tools

Sesi

  • GET/sessionsList sessions
  • DELETE/sessions/{id}Revoke a session

Sesi browser

  • GET/browser-sessionsList browser sessions
  • GET/browser-sessions/{id}Get a browser session

Stream langsung

  • GET/streamServer-sent event stream

Tagihan

  • GET/billingThe organisation's billing overview
  • GET/billing/invoicesList the organisation's invoices
  • PUT/billing/detailsSave the organisation's billing details
  • POST/billing/checkout-sessionsOpen a Stripe Checkout for the first purchase or a reactivation
  • POST/billing/previewsPreview what a billing change costs now and at renewal
  • POST/billing/changesChange a plan, an add-on, managed keys or the interval
  • GET/billing/changes/{id}Get a billing change
  • DELETE/billing/changes/{id}Undo a scheduled change, or void a pending payment
  • PATCH/billing/workspaces/{workspace_id}Set a workspace's managed-key opt-in or recording days
  • POST/billing/cancellationCancel the subscription at the end of the paid period
  • DELETE/billing/cancellationRevoke a scheduled cancellation
  • POST/billing/portal-sessionsOpen Stripe's Customer Portal
  • POST/billing/payment-retryRetry the owed invoices now

Temuan

  • POST/findings/{id}/helpAsk the bot to help with a finding
  • POST/findings/{id}/dismissDismiss a finding
  • POST/findings/{id}/muteStop the bot telling this kind of finding

Tugas

  • GET/tasksList tasks
  • POST/tasksGive a bot a task
  • PATCH/tasks/{id}Move or change a task

Undangan

  • GET/invitesList invitations
  • POST/invitesInvite a member
  • DELETE/invites/{id}Revoke an invitation
  • POST/invites/{id}/resendSend an invitation again

Usulan arahan

  • GET/brief-proposalsList the proposed changes of bots' briefs
  • GET/brief-proposals/{id}Get a proposed change of a bot's brief
  • POST/brief-proposals/{id}/answerAnswer a proposed change of a brief, or a rule card

Webhook

  • GET/webhooksList the organisation's webhook endpoint
  • POST/webhooksRegister the organisation's webhook endpoint
  • GET/webhooks/{id}Read the webhook endpoint
  • PATCH/webhooks/{id}Change the webhook endpoint
  • DELETE/webhooks/{id}Remove the webhook endpoint
  • POST/webhooks/{id}/rotate-secretRotate the webhook signing secret
  • GET/webhooks/{id}/deliveriesList the webhook deliveries and dead letters
  • POST/webhooks/{id}/deliveries/{delivery_id}/replaySend a dead letter again
  • POST/webhooks/{id}/testSend a test delivery

Path, ringkasan, dan contoh kode adalah kata-kata dokumen OpenAPI itu sendiri dan tetap dalam bahasa Inggris, agar klien yang dibuat darinya mengatakan hal yang sama.