Geliştirici Dokümantasyonu

jekcms API Referansı

jekcms'i uygulamalarınıza entegre edin. İçerik yönetimi, medya yükleme, webhook tetikleyicileri ve istatistik sorgulama için kapsamlı REST API.

REST API v1 API Anahtarı Gerekli JSON
Base URL https://yourdomain.com/api/v1

Kimlik Doğrulama

Tüm API istekleri, her istekle birlikte gönderilmesi gereken bir API anahtarı gerektirir. Anahtarınızı jekcms admin panelinden Ayarlar → API bölümünden oluşturabilirsiniz.

Header ile Kimlik Doğrulama (Önerilen)

# X-API-Key header GET /api/v1/posts X-API-Key: your_api_key_here # Bearer token (alternative) GET /api/v1/posts Authorization: Bearer your_api_key_here

cURL Örneği

Terminal
$ curl -X GET "https://yourdomain.com/api/v1/posts" \ -H "X-API-Key: your_api_key_here" \ -H "Content-Type: application/json" {"status":"ok","data":[...],"total":42,"page":1}

Güvenlik notu: API anahtarınızı istemci tarafı koduna (JavaScript, HTML) gömmeyiniz. Sunucu tarafı entegrasyonlar veya n8n gibi otomasyon araçları için kullanın.

Yazılar (Posts)

GET /api/v1/posts Tüm yazıları listele
GET /api/v1/posts/{id} Tek yazı getir
POST /api/v1/posts Yeni yazı oluştur
PUT /api/v1/posts/{id} Yazıyı güncelle
DELETE /api/v1/posts/{id} Yazıyı sil

Parametreler — GET /posts

# Query parameters page integer — Page number (default: 1) per_page integer — Results per page (default: 20, max: 100) status string — "published" | "draft" | "all" (default: "published") category string — Filter by category slug search string — Full-text search in title and content order string — "desc" | "asc" (default: "desc") order_by string — "date" | "title" | "views" (default: "date")

Yazı Oluşturma — POST /posts

{ "title": "My Post Title", "content": "<p>Full HTML content here</p>", "excerpt": "Short description", "status": "published", // "published" | "draft" "category_id": 3, "featured_image": "images/2026/01/cover.avif", "tags": ["php", "cms", "tutorial"], "seo_title": "My Post Title | jekcms", "seo_description": "SEO meta description (max 160 chars)" }

n8n entegrasyonu: n8n'de jekcms'e yazı göndermek için HTTP Request node'unu kullanın. Method: POST, URL: /api/v1/posts, Headers: X-API-Key. JSON body'yi Set node ile hazırlayın.

Medya (Media)

POST /api/v1/media Görsel yükle
GET /api/v1/media Medya kütüphanesi
DELETE /api/v1/media/{id} Medyayı sil

jekcms, yüklenen görselleri otomatik olarak AVIF ve WebP formatlarına dönüştürür. Orijinal dosya da saklanır. Yanıtta her üç URL döner.

Görsel Yükleme — POST /media

# multipart/form-data POST /api/v1/media X-API-Key: your_api_key_here Content-Type: multipart/form-data # Form fields image file — JPG / PNG / WebP / AVIF (max 10MB) alt string — Alt text (optional) folder string — Target folder e.g. "2026/05" (optional)

Yanıt Örneği

{ "status": "ok", "id": 142, "path": "images/2026/05/photo.avif", "url_avif": "https://yourdomain.com/uploads/images/2026/05/photo.avif", "url_webp": "https://yourdomain.com/uploads/images/2026/05/photo.webp", "url_orig": "https://yourdomain.com/uploads/images/2026/05/photo.jpg", "width": 1200, "height": 630 }

Kategoriler

GET /api/v1/categories Tüm kategorileri listele
GET /api/v1/categories/{slug} Kategori detayı

Kategori Listesi Yanıtı

{ "status": "ok", "data": [ { "id": 1, "name": "Technology", "slug": "technology", "description": "Tech news and reviews", "post_count": 47 } ] }

Webhooks

jekcms, belirli olaylar gerçekleştiğinde bir URL'e HTTP POST isteği gönderir. n8n ile birleştirildiğinde güçlü otomasyon akışları oluşturabilirsiniz.

POST /api/v1/webhook/trigger Webhook tetikle
GET /api/v1/webhook/list Kayıtlı webhooklar

Webhook Payload Yapısı

# jekcms sends this to your webhook URL on post.published { "event": "post.published", "timestamp": "2026-05-01T14:32:00Z", "site": "yourdomain.com", "post": { "id": 256, "title": "My New Article", "slug": "my-new-article", "url": "https://yourdomain.com/my-new-article", "category": "technology", "image": "images/2026/05/cover.avif" } }

Tetikleyici Olaylar

post.published — New post published post.updated — Post content updated post.deleted — Post moved to trash media.uploaded — New image uploaded comment.approved — Comment approved

n8n ile kullanım: n8n'de Webhook node oluşturun, oluşan URL'i jekcms'e webhook adresi olarak kaydedin. post.published tetiklendiğinde n8n workflow otomatik başlar.

İstatistikler

GET /api/v1/stats Site metrikleri
GET /api/v1/stats/posts Yazı istatistikleri
GET /api/v1/stats/traffic Trafik özeti

GET /stats Yanıtı

{ "status": "ok", "total_posts": 342, "published": 318, "draft": 24, "total_views": 158420, "views_today": 1247, "views_this_month": 38614, "total_media": 512, "disk_used_mb": 284.6, "categories": 8, "uptime": "99.97%" }

Hata Kodları

Tüm hata yanıtları aynı yapıyı kullanır: {"status":"error","code":401,"message":"..."}. Aşağıdaki tabloda olası hata kodları ve önerilen çözümler listelenmiştir.

Kod Anlamı Çözüm
400 Geçersiz istek JSON formatını ve zorunlu alanları kontrol edin.
401 Kimlik doğrulanamadı API anahtarınızı X-API-Key header'ında gönderin.
403 Erişim reddedildi API anahtarınızın bu kaynağa erişim izni yok.
404 Kayıt bulunamadı ID veya slug'ı kontrol edin.
422 Doğrulama hatası Yanıttaki errors dizisini inceleyerek hangi alanların hatalı olduğunu görün.
429 Çok fazla istek Rate limit aşıldı. Retry-After header'a bakın ve bekleme süresi kadar bekleyin.
500 Sunucu hatası Sunucu tarafında beklenmedik bir hata oluştu. Sorun devam ederse destek ekibiyle iletişime geçin.

429 için yeniden deneme: Eksponansiyel geri çekilme (exponential backoff) kullanın. İlk deneme 1s, ikinci 2s, üçüncü 4s bekleyerek deneyin. n8n'de bu için Wait node'unu kullanabilirsiniz.

API'yi Kullanmaya Başlayın

jekcms'i satın alın, API anahtarınızı oluşturun ve dakikalar içinde entegrasyon geliştirmeye başlayın.

Fiyatlara Göz At
  • Tam REST API erişimi
  • n8n otomasyon entegrasyonu
  • AVIF/WebP otomatik dönüşüm
  • Webhook desteği
  • API anahtarı yönetimi

Yeniliklerden ilk sen haberdar ol

Yeni özellikler, sürüm notları ve CMS rehberleri — ayda birkaç e-posta, spam yok.