API Dokümantasyonu
SiberMakale'yi kendi uygulamanıza, sitenize veya otomasyonlarınıza (Zapier, Make, n8n) bağlayın: makale üretin, durumunu takip edin, içeriği HTML / Markdown olarak alın.
🚀 Hızlı başlangıç
- Ücretsiz hesap açın veya giriş yapın, sonra bu sayfadan API anahtarı oluşturun.
POST ?r=articlesile konu ve anahtar kelimeleri gönderin.GET ?r=jobs&id=…ile durumu "done" olana kadar sorgulayın.GET ?r=article&id=…ile makalenin tamamını alın.
Temel adres: https://sibermakale.info/api/v1.php · Tüm yanıtlar JSON (UTF-8) · Makale başına 1 makale hakkı kullanılır.
🔑 API anahtarlarınız
API anahtarı oluşturmak için giriş yapın.
Giriş yap Ücretsiz kayıtAnahtarınızı kimseyle paylaşmayın ve tarayıcıda çalışan herkese açık koda koymayın; sunucu tarafında saklayın. Anahtar yalnızca özet olarak saklanır, biz de göremeyiz.
🛡 Kimlik doğrulama
Her istekte anahtarınızı Authorization başlığında gönderin:
Authorization: Bearer sm_ANAHTARINIZ
Alternatif: X-API-Key: sm_ANAHTARINIZ
📡 Uç noktalar
?r=meHesap bilgisi ve bakiyeler (makale hakkı, araç kredisi, sınırsız paket bitişi).
Örnek yanıt
{"ok":true,"user":{"id":12,"name":"Ayşe","email":"ayse@ornek.com","article_credits":18,"tool_credits":5,"unlimited_until":null}}?r=optionsKullanabileceğiniz dil, ton, uzunluk, içerik türü, görsel ve vurgu değerlerinin listesi.
Örnek yanıt
{"ok":true,"options":{"language":["tr","en","de",…],"tone":["profesyonel",…],"length":[500,1000,1500,…],…}}?r=articlesMakale işi başlatır. Her makale 1 makale hakkı kullanır; hata alan makalenin hakkı otomatik iade edilir. Gövde parametreleri için aşağıya bakın.
Örnek yanıt
{"ok":true,"job":{"id":345,"status":"planning","total":1,"done":0,"articles":[{"id":901,"status":"pending","title":""}]}}?r=jobs&id=345İşin durumu. Her sorgu işi bir adım ilerletir; status "done" olana kadar 10–20 saniyede bir sorgulayın (ya da webhook_url kullanın).
Örnek yanıt
{"ok":true,"job":{"id":345,"status":"done","total":1,"done":1,"articles":[{"id":901,"status":"done","title":"Kahve Makinesi Nasıl Seçilir?","word_count":1540,"originality":96.4}]}}?r=articles&limit=20Son tamamlanan makaleleriniz (en fazla 100).
Örnek yanıt
{"ok":true,"articles":[{"id":901,"job_id":345,"title":"…","slug":"kahve-makinesi-nasil-secilir","word_count":1540}]}?r=article&id=901&format=htmlMakalenin tamamı. format: html (varsayılan), markdown veya text.
Örnek yanıt
{"ok":true,"article":{"id":901,"title":"…","seo_title":"…","meta_description":"…","slug":"…","format":"html","content":"<h2>…</h2><p>…</p>"}}🧩 Makale parametreleri (POST ?r=articles)
Gövde JSON (Content-Type: application/json) veya form olarak gönderilebilir.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
topic | metin | Evet* | Makale konusu / başlık fikri (en az 3 karakter). |
topics | dizi / satırlar | Hayır | Toplu yazım: her eleman ayrı makale (en fazla 10). Verilirse topic yerine kullanılır. |
keywords | dizi / virgüllü metin | Evet | Anahtar kelimeler (1–10). |
language | metin | Hayır | Dil kodu, ör. tr, en, de. Varsayılan tr. |
length | sayı | Hayır | Hedef kelime sayısı (options → length). Varsayılan 1000. |
tone | metin | Hayır | Yazım tonu (options → tone). Varsayılan profesyonel. |
content_type | metin | Hayır | İçerik türü: blog, rehber, liste, karşılaştırma… (options → content_type). |
seo | bool | Hayır | SEO optimizasyonu. API'de varsayılan açık. |
highlight | dizi | Hayır | Vurgu şablonları (options → highlight). |
faq / toc / takeaways / aeo / citations | bool | Hayır | S.S.S., içindekiler, öne çıkanlar, yapay zeka aramalarına uygunluk, kaynakça. |
image_strategy | metin | Hayır | none (varsayılan), ai veya web (options → image_strategy). |
images_per_article | sayı | Hayır | 1–5 görsel. |
use_brand | bool | Hayır | Marka Profilinizdeki bilgilerle yaz. |
link_url | metin | Hayır | Makalede link verilecek web siteniz. |
webhook_url | https adresi | Hayır | İş bitince sonuç bu adrese JSON olarak POST edilir. |
* topic veya topics'ten biri gereklidir.
🔄 Tipik akış
Bir makale ayarlara göre genellikle 1–4 dakikada hazır olur. İş durumu: planning, running, done, failed. Makale durumu: pending, running, done, failed.
🪝 Webhook
Sorgulamak yerine webhook_url verirseniz iş bittiğinde şu gövde adresinize POST edilir:
{"event":"job.done","job":{"id":345,"status":"done","total":1,"done":1,"articles":[…]}}
Doğrulama: X-SiberMakale-Signature başlığı, gövdenin HMAC-SHA256 imzasıdır; anahtar olarak işi başlatan API anahtarının SHA-256 özeti kullanılır:
hash_hmac('sha256', $govde, hash('sha256', $apiAnahtari)). İş siz sorgulamasanız da arka planda ilerler ve bitince webhook gönderilir (yalnızca https adresleri).
💻 Kod örnekleri
curl -X POST "https://sibermakale.info/api/v1.php?r=articles" \
-H "Authorization: Bearer sm_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-d '{"topic":"Kahve makinesi nasıl seçilir","keywords":["kahve makinesi","espresso"],"language":"tr","length":1500,"faq":true}'
<?php
$key = 'sm_ANAHTARINIZ';
$api = 'https://sibermakale.info/api/v1.php';
$call = function (string $route, ?array $body = null) use ($key, $api) {
$ch = curl_init($api . '?r=' . $route);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 320,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $key, 'Content-Type: application/json']]);
if ($body) { curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body)); }
return json_decode(curl_exec($ch), true);
};
$job = $call('articles', ['topic' => 'Kahve makinesi nasıl seçilir', 'keywords' => ['kahve makinesi']])['job'];
do { sleep(15); $job = $call('jobs&id=' . $job['id'])['job']; } while (!in_array($job['status'], ['done', 'failed']));
foreach ($job['articles'] as $a) {
$art = $call('article&id=' . $a['id'])['article'];
echo $art['title'], "\n", $art['content'];
}
const KEY = 'sm_ANAHTARINIZ';
const API = 'https://sibermakale.info/api/v1.php';
const call = (route, body) => fetch(`${API}?r=${route}`, {
method: body ? 'POST' : 'GET',
headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
body: body ? JSON.stringify(body) : undefined,
}).then(r => r.json());
let { job } = await call('articles', { topic: 'Kahve makinesi nasıl seçilir', keywords: ['kahve makinesi'] });
while (!['done', 'failed'].includes(job.status)) {
await new Promise(r => setTimeout(r, 15000));
({ job } = await call(`jobs&id=${job.id}`));
}
console.log(job.articles);
import requests, time
KEY = 'sm_ANAHTARINIZ'
API = 'https://sibermakale.info/api/v1.php'
H = {'Authorization': f'Bearer {KEY}'}
job = requests.post(f'{API}?r=articles', headers=H, json={'topic': 'Kahve makinesi nasıl seçilir', 'keywords': ['kahve makinesi']}).json()['job']
while job['status'] not in ('done', 'failed'):
time.sleep(15)
job = requests.get(f"{API}?r=jobs&id={job['id']}", headers=H, timeout=320).json()['job']
for a in job['articles']:
art = requests.get(f"{API}?r=article&id={a['id']}&format=markdown", headers=H).json()['article']
print(art['title'], art['content'][:200])
⚠ Hata kodları
{"ok":false,"error":{"type":"invalid_request","message":"En az bir anahtar kelime girin."}}
| HTTP | type | Anlamı |
|---|---|---|
| 401 | unauthorized | Anahtar eksik veya geçersiz. |
| 402 | insufficient_credits | Yetersiz makale hakkı. |
| 404 | not_found | İş / makale bulunamadı veya uç nokta yok. |
| 422 | invalid_request | Eksik veya hatalı parametre (mesajda ayrıntı yazar). |
| 429 | rate_limited | Dakikada 60 istek sınırı aşıldı (Retry-After başlığına bakın). |
| 500 | server_error | Beklenmeyen hata; tekrar deneyin. |
📏 Limitler ve ücretlendirme
- Dakikada 60 istek (anahtar başına).
- Tek istekte en fazla 10 makale; her makale 1 makale hakkı. Sınırsız paketlerde günlük adil kullanım sınırı geçerlidir.
- API'nin kendisi ücretsizdir; yalnızca ürettiğiniz makaleler hakkınızdan düşer. Paketler için Paketler sayfasına bakın.