Dokumentasi REST API EventMedia
Selamat datang di portal dokumentasi REST API EventMedia. API ini menyediakan akses terprogram ke seluruh katalog event Indonesia, direktori kota, kategori, tagar pencarian, artikel berita, pengajuan event publik, serta integrasi unggah file/poster langsung ke CDN.
Panduan Standar Pagination JSON
Semua endpoint koleksi data (seperti /api/events, /api/news, /api/categories, /api/cities, /api/tags) mengimplementasikan format pagination standar untuk memudahkan navigasi halaman pada aplikasi client:
{
"success": true,
"data": [ /* Array item data */ ],
"pagination": {
"page": 1, // Nomor halaman aktif (integer)
"limit": 12, // Jumlah item per halaman (integer)
"total": 48, // Total keseluruhan item yang sesuai (integer)
"total_pages": 4, // Total kalkulasi halaman (ceil(total / limit))
"has_next": true, // true jika ada halaman setelah ini
"has_prev": false, // true jika ada halaman sebelum ini
"next_page": 2, // Angka halaman berikutnya atau null
"prev_page": null // Angka halaman sebelumnya atau null
}
}
page: integer, default =1.limit: integer, batas item (default 12 untuk event, 9 untuk artikel, 20 untuk kota/kategori, maksimum 100).
Format Respons & Kode Status HTTP
Seluruh respons mengembalikan format JSON yang konsisten. Jika terjadi kesalahan, status HTTP non-200 disertai pesan penjelasan di properti error.
{
"success": true,
"data": [ ... ],
"pagination": { ... }
}
{
"success": false,
"error": "Pesan deskripsi kesalahan..."
}
Integrasi Upload Poster ke CDN (cfcdn.aksisoft.my.id)
Aplikasi menggunakan arsitektur AJAX upload langsung ke endpoint CDN https://cfcdn.aksisoft.my.id/index.php (atau via proxy lokal /api/upload). API mengembalikan objek dengan properti data.url yang dapat langsung disematkan sebagai poster_url event.
/api/check-file?url=...) sebelum memperbarui pratinjau gambar.
const formData = new FormData();
formData.append('file', fileInput.files[0]);
// 1. Upload file dengan tracking progress (0 - 100%)
const uploadedData = await new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://cfcdn.aksisoft.my.id/index.php'); // atau proxy /api/upload
xhr.upload.onprogress = (e) => {
if (e.lengthComputable) {
const percent = Math.round((e.loaded / e.total) * 100);
console.log('Progress: ' + percent + '% (' + e.loaded + '/' + e.total + ' bytes)');
// Update UI progress bar
}
};
xhr.onload = () => xhr.status >= 200 && xhr.status < 300
? resolve(JSON.parse(xhr.responseText))
: reject(new Error('Upload gagal HTTP ' + xhr.status));
xhr.onerror = () => reject(new Error('Koneksi terputus'));
xhr.send(formData);
});
const uploadedImageUrl = uploadedData.data?.url || uploadedData.url;
// 2. Tunggu 5 - 10 detik masa resolusi CDN sebelum menampilkan preview
for (let s = 5; s >= 1; s--) {
console.log('Menunggu resolusi CDN: ' + s + ' detik tersisa...');
await new Promise(r => setTimeout(r, 1000));
}
// 3. Cek ketersediaan file di CDN
const checkRes = await fetch('/api/check-file?url=' + encodeURIComponent(uploadedImageUrl));
const checkData = await checkRes.json();
if (checkData.exists) {
console.log('File siap digunakan:', uploadedImageUrl);
}
Katalog Lengkap Endpoint API
25 endpoints terdaftarDaftar Event (dengan Pagination & Filter)
Mengambil daftar event aktif dan terverifikasi dengan dukungan pagination, pencarian teks lengkap, filter kategori, kota, tags, format (offline/online), harga (gratis/berbayar), dan pengurutan.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| cursor | query | string | Tidak | String Base64 cursor untuk Keyset Pagination O(1) seek (direkomendasikan untuk infinite scroll & zero-offset Cloudflare D1 quota optimization). |
| page | query | integer | Tidak | Nomor halaman (mulai dari 1, digunakan jika cursor tidak disertakan). |
| limit | query | integer | Tidak | Jumlah event per halaman (max: 100). |
| q | query | string | Tidak | Kata kunci pencarian judul, deskripsi, atau organizer. |
| kategori | query | string | Tidak | Slug kategori event (contoh: "musik", "teknologi"). |
| kota | query | string | Tidak | Slug kota pelaksanaan event (contoh: "jakarta", "surabaya"). |
| tag | query | string | Tidak | Slug tag spesifik (contoh: "workshop", "festival"). |
| format | query | string | Tidak | Format pelaksanaan event. |
| gratis | query | integer | Tidak | Filter event gratis (1 = gratis, 0 = berbayar). |
| sort | query | string | Tidak | Urutan hasil. |
curl -X GET "https://eventmedia.my.id/api/events?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": [
{
"id": "evt-a1b2c3d4",
"title": "Tech In Motion Summit 2026",
"slug": "tech-in-motion-summit-2026",
"short_description": "Konferensi teknologi tahunan terbesar.",
"poster_url": "https://young-unit-7407.wakeawakewik.workers.dev/example.png",
"start_date": "2026-11-20",
"end_date": "2026-11-21",
"start_time": "09:00",
"event_type": "offline",
"venue_name": "Grand City Hall",
"city_name": "Surabaya",
"city_slug": "surabaya",
"category_name": "Teknologi",
"category_slug": "teknologi",
"ticket_price_min": 75000,
"ticket_price_max": 250000,
"is_free": 0,
"organizer_name": "DevHub Indonesia"
}
],
"next_cursor": "eyJpZCI6ImV2dC1hMWIyYzNkNCIsImNyZWF0ZWRfYXQiOiIyMDI2LTExLTIwIn0",
"has_more": true,
"pagination": {
"page": 1,
"limit": 12,
"total": 42,
"total_pages": 4,
"has_next": true,
"has_prev": false,
"next_page": 2,
"prev_page": null,
"next_cursor": "eyJpZCI6ImV2dC1hMWIyYzNkNCIsImNyZWF0ZWRfYXQiOiIyMDI2LTExLTIwIn0",
"has_more": true,
"mode": "hybrid"
}
}
Detail Event Spesifik
Mengambil data lengkap sebuah event berdasarkan slug unik atau ID event, termasuk deskripsi kaya, jadwal, tiket, organizer, koordinat peta, dan relasi tags.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| slug | path | string | Ya | Slug unik atau ID event. |
curl -X GET "https://eventmedia.my.id/api/events/tech-in-motion-2026?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"event": {
"id": "evt-a1b2c3d4",
"title": "Tech In Motion Summit 2026",
"slug": "tech-in-motion-summit-2026",
"description": "<p>Detail lengkap mengenai sesi dan pembicara...</p>",
"poster_url": "https://young-unit-7407.wakeawakewik.workers.dev/example.png",
"gallery": [],
"start_date": "2026-11-20",
"end_date": "2026-11-21",
"start_time": "09:00",
"end_time": "17:00",
"event_type": "offline",
"venue_name": "Grand City Hall",
"venue_address": "Jl. Pemuda No. 1",
"city_name": "Surabaya",
"category_name": "Teknologi",
"organizer_name": "DevHub Indonesia",
"contact_phone": "081234567890",
"ticket_url": "https://tiket.example.com",
"is_free": 0,
"ticket_price_min": 75000,
"tags": [
{
"id": "tag-1",
"name": "AI",
"slug": "ai"
}
]
}
}
Kirim Event Publik (Submission Form)
Memungkinkan komunitas dan organizer mengajukan event baru untuk dikurasi dan disetujui oleh tim EventMedia sebelum tayang secara publik.
{
"title": "string (wajib, judul event)",
"category_id": "string (wajib, ID kategori)",
"city_id": "string (opsional, ID kota)",
"start_date": "string YYYY-MM-DD (wajib, tanggal mulai)",
"end_date": "string YYYY-MM-DD (opsional, tanggal selesai)",
"start_time": "string HH:mm (opsional, jam mulai)",
"event_type": "offline | online | hybrid (default: offline)",
"venue_name": "string (opsional, nama lokasi venue)",
"venue_address": "string (opsional, alamat lengkap)",
"organizer_name": "string (wajib, nama penyelenggara)",
"contact_name": "string (opsional, nama PIC)",
"contact_phone": "string (wajib jika email kosong)",
"contact_email": "string (wajib jika nomor telepon kosong)",
"ticket_price_min": "number (opsional, nominal harga tiket termurah)",
"is_free": "boolean / 0 / 1 (apakah event gratis)",
"ticket_url": "string (opsional, tautan pembelian tiket atau registrasi)",
"poster_url": "string (opsional, URL gambar poster hasil upload CDN)",
"tags": "string (opsional, koma terpisah, contoh: \"workshop, tech\")"
}
curl -X POST "https://eventmedia.my.id/api/events/submit" \
-H "Accept: application/json"
{
"success": true,
"message": "Event Anda berhasil diajukan! Tim kurator EventMedia akan memeriksa dan mengonfirmasi event Anda sebelum dipublikasikan.",
"event": {
"id": "evt-x9y8z7",
"title": "Workshop Flutter Modern",
"slug": "workshop-flutter-modern"
}
}
Daftar Kategori Event (dengan Pagination & Search)
Mengambil daftar kategori event aktif dengan informasi jumlah event dan metadata pagination.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| page | query | integer | Tidak | Nomor halaman. |
| limit | query | integer | Tidak | Jumlah kategori per halaman. |
| q | query | string | Tidak | Filter pencarian nama atau slug kategori. |
| active_only | query | integer | Tidak | Hanya tampilkan kategori aktif (1/0). |
curl -X GET "https://eventmedia.my.id/api/categories?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": [
{
"id": "cat-musik",
"name": "Musik & Konser",
"slug": "musik",
"description": "Konser musik, festival, dan gig lokal.",
"icon": "Music",
"image_url": "https://young-unit-7407.wakeawakewik.workers.dev/music.jpg",
"is_active": 1,
"sort_order": 1
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 10,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
Detail Kategori Spesifik
Mengambil informasi kategori berdasarkan slug uniknya.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| slug | path | string | Ya | Slug unik kategori (contoh: "musik"). |
curl -X GET "https://eventmedia.my.id/api/categories/tech-in-motion-2026?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"category": {
"id": "cat-musik",
"name": "Musik & Konser",
"slug": "musik",
"description": "Konser musik, festival, dan gig lokal.",
"icon": "Music",
"is_active": 1
}
}
Daftar Kota Pelaksanaan (dengan Pagination & Search)
Mengambil daftar kota tempat penyelenggaraan event lengkap dengan provinsi dan thumbnail.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| page | query | integer | Tidak | Nomor halaman. |
| limit | query | integer | Tidak | Jumlah kota per halaman. |
| q | query | string | Tidak | Pencarian nama kota atau provinsi. |
curl -X GET "https://eventmedia.my.id/api/cities?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": [
{
"id": "city-jkt",
"name": "Jakarta",
"slug": "jakarta",
"province": "DKI Jakarta",
"image_url": "https://young-unit-7407.wakeawakewik.workers.dev/jkt.jpg"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 8,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
Detail Kota Spesifik
Mengambil informasi kota berdasarkan slug unik.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| slug | path | string | Ya | Slug unik kota (contoh: "surabaya"). |
curl -X GET "https://eventmedia.my.id/api/cities/tech-in-motion-2026?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"city": {
"id": "city-sby",
"name": "Surabaya",
"slug": "surabaya",
"province": "Jawa Timur",
"country": "Indonesia"
}
}
Daftar Artikel & Berita (dengan Pagination)
Mengambil artikel berita, tips event, liputan dan ulasan dari kurator EventMedia dengan pagination.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| page | query | integer | Tidak | Nomor halaman aktif. |
| limit | query | integer | Tidak | Batas jumlah artikel per halaman (max: 50). |
| q | query | string | Tidak | Pencarian teks judul atau isi berita. |
| kategori | query | string | Tidak | Kategori artikel (contoh: "Tips Event", "Liputan"). |
| featured | query | integer | Tidak | Hanya artikel pilihan editor. |
curl -X GET "https://eventmedia.my.id/api/news?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": [
{
"id": "news-01",
"title": "Panduan Lengkap Mengatur Budget Festival Musik",
"slug": "panduan-lengkap-budget-festival-musik",
"excerpt": "Kiat hemat dan nyaman menikmati rangkaian festival musik di Indonesia...",
"cover_url": "https://young-unit-7407.wakeawakewik.workers.dev/news1.jpg",
"category": "Tips Event",
"author_name": "Redaksi EventMedia",
"published_at": "2026-08-10T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 9,
"total": 18,
"total_pages": 2,
"has_next": true,
"has_prev": false,
"next_page": 2,
"prev_page": null
}
}
Detail Artikel Berita
Mengambil konten lengkap artikel, format teks HTML, info penulis, dan tanggal publikasi.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| slug | path | string | Ya | Slug unik artikel berita. |
curl -X GET "https://eventmedia.my.id/api/news/tech-in-motion-2026?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"article": {
"id": "news-01",
"title": "Panduan Lengkap Mengatur Budget Festival Musik",
"slug": "panduan-lengkap-budget-festival-musik",
"content": "<p>Isi lengkap konten artikel di sini...</p>",
"cover_url": "https://young-unit-7407.wakeawakewik.workers.dev/news1.jpg",
"author_name": "Redaksi EventMedia",
"published_at": "2026-08-10T10:00:00Z"
}
}
Daftar Direktori Tempat & Vendor (dengan Filter & Pagination)
Mengambil katalog direktori vendor acara, wedding organizer, venue ballroom/hotel, sewa sound system, katering, dan tempat event dengan filter pencarian teks, kategori, kota, dan status unggulan.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| page | query | integer | Tidak | Nomor halaman (mulai dari 1). |
| limit | query | integer | Tidak | Jumlah data per halaman (max: 100). |
| q | query | string | Tidak | Kata kunci pencarian nama, deskripsi, atau alamat vendor/venue. |
| kategori | query | string | Tidak | Slug atau ID kategori direktori (contoh: "hotel-penginapan", "organizer-eo-wo", "sewa-alat-sound"). |
| kota | query | string | Tidak | Slug atau ID kota lokasi (contoh: "jakarta", "bali", "bandung"). |
| featured | query | integer | Tidak | Filter item rekomendasi/unggulan (1 = unggulan, 0 = reguler). |
curl -X GET "https://eventmedia.my.id/api/directories?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": [
{
"id": "dir-01",
"name": "Grand Ballroom & Convention Center Senayan",
"slug": "grand-ballroom-convention-center-senayan",
"category_id": "dcat-venue",
"category_title": "Venue & Gedung",
"category_slug": "venue-gedung",
"city_id": "city-jkt",
"city_title": "Jakarta",
"city_slug": "jakarta",
"address": "Jl. Asia Afrika No.8, Gelora, Tanah Abang, Jakarta Pusat",
"rating": 4.9,
"phone": "(021) 57901234",
"whatsapp": "6281119888234",
"email": "venue@senayanballroom.com",
"website_url": "https://senayanballroom.com",
"instagram_url": "https://instagram.com/senayanballroom",
"price_range": "Mulai Rp 45.000.000 / hari",
"short_description": "Ballroom megah berkapasitas hingga 3.500 tamu di pusat Jakarta.",
"image_url": "https://images.unsplash.com/photo-1519167758481-83f550bb49b3?auto=format&fit=crop&w=1200&q=80",
"is_featured": 1,
"is_verified": 1,
"facilities_json": "[\"Kapasitas 3.500 Tamu\", \"Panggung Rigging & Lighting\", \"Sound System Line Array 20.000W\", \"Ruang Rias VIP Eksklusif\", \"Parkir 500 Mobil\", \"Akses Loading Dock Kontainer\"]"
}
],
"pagination": {
"page": 1,
"limit": 12,
"total": 6,
"total_pages": 1,
"has_next": false,
"has_prev": false,
"next_page": null,
"prev_page": null
}
}
Detail Profil Direktori & Vendor
Mengambil profil komprehensif sebuah tempat acara atau vendor menurut slug unik atau ID, termasuk daftar fasilitas lengkap, rating, galeri foto, alamat, koordinat peta, kontak WhatsApp, email, dan jam operasional.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| slug | path | string | Ya | Slug unik direktori (contoh: "grand-ballroom-convention-center-senayan") atau ID unik (contoh: "dir-01"). |
curl -X GET "https://eventmedia.my.id/api/directories/tech-in-motion-2026?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": {
"id": "dir-01",
"name": "Grand Ballroom & Convention Center Senayan",
"slug": "grand-ballroom-convention-center-senayan",
"category_title": "Venue & Gedung",
"city_title": "Jakarta",
"address": "Jl. Asia Afrika No.8, Gelora, Tanah Abang, Jakarta Pusat",
"map_url": "https://maps.google.com/?q=Jakarta",
"phone": "(021) 57901234",
"whatsapp": "6281119888234",
"email": "venue@senayanballroom.com",
"website_url": "https://senayanballroom.com",
"instagram_url": "https://instagram.com/senayanballroom",
"price_range": "Mulai Rp 45.000.000 / hari",
"rating": 4.9,
"opening_hours": "Senin - Minggu, 08:00 - 22:00 WIB",
"short_description": "Ballroom megah berkapasitas hingga 3.500 tamu di pusat Jakarta.",
"description": "<p>Grand Ballroom Senayan adalah pilihan utama untuk konser indoor megah, pernikahan berskala akbar, dan pameran bertaraf internasional.</p>",
"image_url": "https://images.unsplash.com/photo-1519167758481-83f550bb49b3?auto=format&fit=crop&w=1200&q=80",
"is_featured": 1,
"is_verified": 1,
"facilities_json": "[\"Kapasitas 3.500 Tamu\", \"Panggung Rigging & Lighting\", \"Sound System Line Array 20.000W\", \"Ruang Rias VIP Eksklusif\", \"Parkir 500 Mobil\", \"Akses Loading Dock Kontainer\"]",
"gallery_json": "[\"https://images.unsplash.com/photo-1511795409834-ef04bbd61622?auto=format&fit=crop&w=800&q=80\"]"
}
}
Daftar Kategori Direktori Tempat & Vendor
Mengambil seluruh kategori spesialisasi direktori (Venue & Gedung, Hotel & Penginapan, Restoran & Cafe, Sewa Alat & Sound, Event & Wedding Organizer, Catering & F&B).
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| active_only | query | integer | Tidak | Hanya tampilkan kategori aktif (1/0). |
curl -X GET "https://eventmedia.my.id/api/directory-categories?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"data": [
{
"id": "dcat-venue",
"name": "Venue & Gedung",
"slug": "venue-gedung",
"icon": "BuildingLibraryIcon",
"is_active": 1,
"sort_order": 1
},
{
"id": "dcat-hotel",
"name": "Hotel & Penginapan",
"slug": "hotel-penginapan",
"icon": "BuildingOfficeIcon",
"is_active": 1,
"sort_order": 2
},
{
"id": "dcat-rental",
"name": "Sewa Alat & Sound",
"slug": "sewa-alat-sound",
"icon": "SpeakerWaveIcon",
"is_active": 1,
"sort_order": 3
},
{
"id": "dcat-resto",
"name": "Restoran & Cafe",
"slug": "restoran-cafe",
"icon": "CakeIcon",
"is_active": 1,
"sort_order": 4
},
{
"id": "dcat-eo",
"name": "Event & Wedding Organizer",
"slug": "organizer-eo-wo",
"icon": "UserGroupIcon",
"is_active": 1,
"sort_order": 5
},
{
"id": "dcat-catering",
"name": "Catering & F&B Service",
"slug": "catering-fb-service",
"icon": "SparklesIcon",
"is_active": 1,
"sort_order": 6
}
]
}
Pendaftaran Profil Usaha / Vendor Baru (Submission Form)
Memungkinkan pemilik venue, vendor EO, sound system, hotel, atau katering mengajukan profil bisnis mereka untuk dikurasi dan dipublikasikan di direktori EventMedia.
{
"name": "string (wajib, nama vendor atau tempat)",
"category_id": "string (wajib, ID kategori direktori, contoh: \"dcat-venue\")",
"city_id": "string (opsional, ID kota)",
"address": "string (opsional, alamat lokasi fisik)",
"map_url": "string (opsional, tautan Google Maps)",
"phone": "string (opsional, nomor telepon kantor)",
"whatsapp": "string (opsional, nomor WhatsApp resmi layanan/reservasi)",
"email": "string (opsional, alamat email)",
"website_url": "string (opsional, situs web resmi)",
"instagram_url": "string (opsional, tautan Instagram bisnis)",
"price_range": "string (opsional, kisaran tarif/harga layanan)",
"short_description": "string (opsional, ringkasan profil 1-2 kalimat)",
"description": "string (opsional, deskripsi lengkap format teks atau HTML)",
"image_url": "string (opsional, foto sampul/profil utama)",
"facilities": "array string (opsional, daftar fasilitas yang disediakan)"
}
curl -X POST "https://eventmedia.my.id/api/directories/submit" \
-H "Accept: application/json"
{
"success": true,
"message": "Profil direktori / vendor berhasil diajukan! Tim kurator EventMedia akan memeriksa sebelum dipublikasikan.",
"data": {
"id": "dir-n1o2p3",
"name": "Studio Akustik Prima",
"slug": "studio-akustik-prima"
}
}
Upload Gambar / Poster ke Cloudflare CDN
Endpoint upload file multipart/form-data. File diunggah langsung atau diproksikan ke layanan CDN aksisoft (cfcdn.aksisoft.my.id) dan mengembalikan URL publik langsung (data.url). Batas ukuran file 24 MB.
{
"file": "binary / file (wajib, file gambar format PNG, JPG, JPEG, WEBP, maks 24 MB)"
}
curl -X POST "https://eventmedia.my.id/api/upload" \
-H "Accept: application/json"
{
"success": true,
"url": "https://young-unit-7407.wakeawakewik.workers.dev/1402bb895e-poster.png",
"data": {
"url": "https://young-unit-7407.wakeawakewik.workers.dev/1402bb895e-poster.png"
}
}
Verifikasi Ketersediaan File di CDN (Pengecekan Resolusi)
Mengecek ketersediaan dan status resolusi HTTP (HEAD/GET) dari URL file CDN. Direkomendasikan dipanggil setelah upload berhasil dan menunggu 5-10 detik masa propagasi CDN.
curl -X GET "https://eventmedia.my.id/api/check-file" \
-H "Accept: application/json"
{
"url": "https://cfcdn.aksisoft.my.id/uploads/sample-poster.jpg",
"exists": true,
"status": 200,
"timestamp": "2026-09-16T16:50:00.000Z"
}
Statistik Publik Platform
Mengambil metrik ringkasan jumlah event aktif terverifikasi, jumlah tempat & vendor direktori, kota, kategori, dan artikel berita di EventMedia.
curl -X GET "https://eventmedia.my.id/api/stats" \
-H "Accept: application/json"
{
"success": true,
"stats": {
"total_events": 58,
"published_events": 52,
"total_directories": 6,
"total_categories": 12,
"total_cities": 10,
"total_news": 15
}
}
Pengaturan Publik Situs
Mengambil konfigurasi publik situs seperti judul, meta description, kontak, logo URL, dan tautan sosial media.
curl -X GET "https://eventmedia.my.id/api/settings" \
-H "Accept: application/json"
{
"success": true,
"settings": {
"site_title": "EventMedia.id",
"site_tagline": "Katalog & Portal Event Terlengkap Indonesia",
"site_logo": "/logo.svg",
"instagram_url": "https://instagram.com/eventmedia"
}
}
Autentikasi Admin (Login)
Melakukan login admin menggunakan username dan password. Jika berhasil, server akan menetapkan HttpOnly session cookie.
{
"username": "string (wajib)",
"password": "string (wajib)"
}
curl -X POST "https://eventmedia.my.id/api/admin/login" \
-H "Accept: application/json"
{
"success": true,
"user": {
"id": "usr-admin",
"username": "admin",
"name": "Administrator",
"role": "superadmin"
}
}
Daftar Event Admin (Semua Status & Pending Moderasi)
Membutuhkan cookie sesi admin terautentikasi. Mengambil seluruh event termasuk draft, pending, rejected, dan published.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| page | query | integer | Tidak | |
| limit | query | integer | Tidak | |
| status | query | string | Tidak | |
| q | query | string | Tidak |
curl -X GET "https://eventmedia.my.id/api/admin/events?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"events": [],
"total": 58,
"page": 1,
"limit": 50
}
Konfirmasi / Publikasikan Event Submission
Menyetujui event kiriman publik menjadi status published.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| id | path | string | Ya |
curl -X POST "https://eventmedia.my.id/api/admin/events/evt-sample/approve" \
-H "Accept: application/json"
{
"success": true,
"message": "Event berhasil dikonfirmasi dan diterbitkan."
}
Kelola Seluruh Direktori (Admin)
Memerlukan sesi admin. Mengambil semua data vendor dan tempat acara terdaftar termasuk status draft dan unpublished.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| page | query | integer | Tidak | |
| limit | query | integer | Tidak | |
| q | query | string | Tidak | Pencarian nama vendor/venue |
| category_id | query | string | Tidak | |
| city_id | query | string | Tidak |
curl -X GET "https://eventmedia.my.id/api/admin/directories?page=1&limit=12" \
-H "Accept: application/json"
{
"success": true,
"directories": [],
"total": 6,
"page": 1,
"limit": 50
}
Tambah Direktori Vendor / Tempat Baru (Admin)
Menambahkan entri profil direktori baru langsung dengan status published/terverifikasi oleh admin.
curl -X POST "https://eventmedia.my.id/api/admin/directories" \
-H "Accept: application/json"
{
"success": true,
"directory": {
"id": "dir-07",
"name": "Vendor Audio Pro"
}
}
Perbarui Data Direktori (Admin)
Memperbarui profil, fasilitas, kontak, status publikasi, dan status unggulan direktori vendor/venue.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| id | path | string | Ya |
curl -X PUT "https://eventmedia.my.id/api/admin/directories/evt-sample" \
-H "Accept: application/json"
{
"success": true,
"directory": {
"id": "dir-01",
"name": "Grand Ballroom"
}
}
Hapus Direktori (Admin)
Menghapus direktori dari sistem.
| Parameter | Lokasi | Tipe | Wajib | Deskripsi |
|---|---|---|---|---|
| id | path | string | Ya |
curl -X DELETE "https://eventmedia.my.id/api/admin/directories/evt-sample" \
-H "Accept: application/json"
{
"success": true
}