se-hari.com se-hari.com

DELETE /meetings/{id}

Batalkan meeting. DELETE /meetings/{id} — butuh scope meetings:write.

3 menit baca Diperbarui 15 Agustus 2026 Lihat sebagai Markdown

Membatalkan meeting yang belum berlangsung dan mengembalikan kreditnya sesuai aturan refund yang berlaku. Meeting yang sedang berjalan atau sudah selesai tidak bisa dibatalkan dan akan menjawab 409. Pembatalan bersifat permanen: tautan gabung langsung tidak berlaku dan tidak ada cara mengaktifkannya kembali — buat meeting baru kalau jadwalnya hanya bergeser.

#Endpoint

bash
DELETE https://se-hari.com/api/v1/meetings/{id}

Butuh scope meetings:write. Scope ditetapkan saat key dibuat dan tidak bisa ditambahkan belakangan — kalau key Anda kurang izin, buat key baru lalu cabut yang lama. Kekakuan ini disengaja: scope yang bisa dinaikkan diam-diam berarti key yang bocor hari ini bisa menjadi lebih berbahaya besok. Beri setiap integrasi key sendiri dengan scope sesempit mungkin, supaya mencabut satu integrasi tidak pernah berarti mematikan yang lain. Kirim header Idempotency-Key berisi nilai unik milik Anda sendiri; UUID sudah cukup. Kalau request diulang dengan key yang sama — karena timeout jaringan, retry otomatis n8n, atau tombol yang terklik dua kali — kami mengembalikan hasil yang pertama alih-alih mengerjakannya lagi. Key yang sama dengan body berbeda ditolak idempotency_key_reused, karena itu hampir selalu berarti bug di sisi pemanggil, bukan permintaan yang sah. Operasi ini tidak memotong kredit saat dipanggil. Kalau ia mengantre pekerjaan notulen, penagihan terjadi setelah pemrosesan selesai dan dihitung dari durasi asli rekaman — bukan dari durasi yang Anda perkirakan. Perbedaan ini penting saat membaca saldo di langkah berikutnya sebuah workflow.

#Parameter path

ParameterTipeWajibKeterangan
idstringyamin 1 karakter

#Contoh

bash
curl -X DELETE "https://se-hari.com/api/v1/meetings/c0ffee00-1111-2222-3333-444455556666" \
  -H "Authorization: Bearer $SEHARI_API_KEY"
javascript
const res = await fetch('https://se-hari.com/api/v1/meetings/c0ffee00-1111-2222-3333-444455556666', {
	method: 'DELETE',
	headers: {
			'Authorization': `Bearer ${process.env.SEHARI_API_KEY}`,
		}
});

if (!res.ok) {
	const { error } = await res.json();
	// error.code stabil dan bisa dicabang; error.message untuk manusia.
	throw new Error(`${error.code}: ${error.message}`);
}

const data = await res.json();
python
import os, requests

res = requests.delete(
    "https://se-hari.com/api/v1/meetings/c0ffee00-1111-2222-3333-444455556666",
    headers={"Authorization": f"Bearer {os.environ['SEHARI_API_KEY']}"},
    timeout=30,
)

if not res.ok:
    err = res.json()["error"]
    raise RuntimeError(f"{err['code']}: {err['message']}")

data = res.json()

#Field respons

FieldTipeKeterangan
idstring
statusstring
credits_refundedinteger

#Kalau gagal

Setiap kegagalan memakai amplop yang sama, dan code di dalamnya stabil — cabangkan logika Anda ke sana, jangan ke message yang teksnya bisa diperbaiki sewaktu-waktu.

json
{
  "error": {
    "code": "invalid_api_key",
    "message": "Penjelasan untuk manusia.",
    "docs_url": "https://se-hari.com/docs/error/invalid-api-key",
    "request_id": "req_a1b2c3d4e5f6",
    "details": {}
  }
}
StatusKodeArtinya di endpoint ini
401invalid_api_keyKey salah, sudah dicabut, atau kedaluwarsa.
403insufficient_scopeKey valid, tapi tidak punya scope yang dibutuhkan endpoint ini.
404not_foundData tidak ada, atau ada tapi milik akun lain — keduanya dijawab sama.
409conflictBentrok dengan kondisi data sekarang.
429rate_limitedTerlalu banyak request. Hormati header Retry-After.
500internal_errorKesalahan di sisi kami. Sertakan request_id saat melapor.
502upstream_errorLayanan pihak ketiga (Zoom, penyedia AI) menolak permintaan.
Simpan request_id dari setiap respons gagal. Itu satu-satunya cara kami menemukan kembali request Anda di log ketika Anda melapor, dan ia juga ada di header X-Request-Id pada respons yang berhasil.

#Alur khas

Meeting dibuat dari sebuah paket harga, bukan dari durasi dan kapasitas lepas. Paket menentukan berapa peserta yang muat, berapa lama meeting boleh berjalan, dan berapa kredit yang dipotong — jadi langkah pertama selalu melihat katalognya.

  1. GET /pricing-tiers — lihat paket yang tersedia beserta biayanya
  2. POST /credits/estimate dengan type: "meeting" — pastikan saldo cukup sebelum memotong apa pun
  3. POST /meetings — buat meetingnya; kredit terpotong saat ini juga
  4. Bagikan join_url dari respons ke peserta

Membatalkan meeting yang belum dimulai mengembalikan kreditnya. Yang sudah berjalan tidak — waktu host Zoom sudah terpakai dan tidak bisa ditarik kembali. Karena itu DELETE /meetings/{id} menjawab berbeda tergantung status, dan bukan karena kesalahan Anda.

#Yang sering keliru

  • Key disalin sebagian. API key Se-Hari panjangnya tetap: sh_live_ diikuti 43 karakter. Kalau panjangnya berbeda, yang salah adalah proses penyalinannya, bukan key-nya — dan pesan 401 tidak akan mengatakan itu.
  • Scope kurang, bukan key salah. 403 di sini berarti key-nya dikenali. Periksa scope-nya lewat GET /me, lalu buat key baru kalau memang kurang; scope tidak bisa ditambahkan ke key yang sudah jadi.
  • 404 tidak selalu berarti data tidak ada. Data milik akun lain juga dijawab 404, bukan 403 — kami tidak mengonfirmasi keberadaan id milik orang lain. Kalau Anda yakin id-nya benar, periksa apakah key yang dipakai milik akun yang sama.
  • 409 biasanya berarti pekerjaannya sudah ada. Cek details pada respons: di sana ada id data yang sudah lebih dulu menempati posisi itu, dan biasanya itulah yang sebenarnya Anda cari.

#Selanjutnya

Siap mencoba?

Buat API key gratis di dashboard — tidak ada biaya berlangganan, kredit terpakai hanya saat Anda benar-benar memproses rekaman atau membuat meeting.

Buat API Key