🎉 Exclusive for new members %50 off! Cart YENI50 Use your code. Sign up free now →
SSiberMakale

API Documentation

Connect SiberMakale to your own app, site, or automations (Zapier, Make, n8n): generate articles, track their status, get content as HTML / Markdown.

🚀 Quick start

  1. Sign up for free or log in, then create an API key on this page.
  2. POST ?r=articles and send the topic and keywords.
  3. GET ?r=jobs&id=… and poll until the status is "done".
  4. GET ?r=article&id=… Get the full article with.

Base URL: https://sibermakale.info/api/v1.php · All responses are JSON (UTF-8) · 1 article credit is used per article.

🔑 Your API keys

Log in to generate an API key.

Log in Free registration

Do not share your key with anyone or include it in client-side code; keep it server-side. The key is stored as a hash and we cannot see it.

🛡 Authentication

Send your key with every request Authorization send in header:

Authorization: Bearer sm_ANAHTARINIZ

Alternative: X-API-Key: sm_ANAHTARINIZ

📡 Endpoints

GET?r=me

Account information and balances (article credits, tool credits, unlimited plan expiration).

Example response
{"ok":true,"user":{"id":12,"name":"Ayşe","email":"ayse@ornek.com","article_credits":18,"tool_credits":5,"unlimited_until":null}}
GET?r=options

List of available languages, tones, lengths, content types, image options, and formatting values.

Example response
{"ok":true,"options":{"language":["tr","en","de",…],"tone":["profesyonel",…],"length":[500,1000,1500,…],…}}
POST?r=articles

Starts an article job. Each article consumes 1 article credit; credits for failed articles are automatically refunded. See below for body parameters. below see.

Example response
{"ok":true,"job":{"id":345,"status":"planning","total":1,"done":0,"articles":[{"id":901,"status":"pending","title":""}]}}
GET?r=jobs&id=345

Job status. Each query advances the job; poll every 10–20 seconds until status is "done" (or use webhook_url).

Example response
{"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}]}}
GET?r=articles&limit=20

Your latest completed articles (up to 100).

Example response
{"ok":true,"articles":[{"id":901,"job_id":345,"title":"…","slug":"kahve-makinesi-nasil-secilir","word_count":1540}]}
GET?r=article&id=901&format=html

Full article text. Format: html (default), markdown, or text.

Example response
{"ok":true,"article":{"id":901,"title":"…","seo_title":"…","meta_description":"…","slug":"…","format":"html","content":"<h2>…</h2><p>…</p>"}}

🧩 Article parameters (POST ?r=articles)

JSON body (Content-Type: application/json) or sent as form data.

FieldTypeRequiredDescription
topicstringYes*Article topic / title idea (min 3 characters).
topicsarray / linesNoBulk writing: each item is a separate article (max 10). If provided, overrides topic.
keywordsarray / comma-separated textYesKeywords (1–10).
languagestringNoLanguage code, e.g., tr, en, de. Default: tr.
lengthnumberNoTarget word count (options → length). Default 1000.
tonestringNoWriting tone (options → tone). Default: professional.
content_typestringNoContent type: blog, guide, list, comparison… (options → content_type).
seoboolNoSEO optimization. Default: enabled in API.
highlightseriesNoHighlight templates (options → highlight).
faq / toc / takeaways / aeo / citationsboolNoF.A.Q., table of contents, highlights, AI search optimization, references.
image_strategystringNonone (default), ai or web (options → image_strategy).
images_per_articlenumberNo1–5 images.
use_brandboolNoWrite using your Brand Profile.
link_urlstringNoYour website to link to in the article.
webhook_urlhttps URLNoWhen the job is finished, the result is sent as a JSON POST request to this URL.

* Either topic or topics is required.

🔄 Typical flow

POST articles→job.status: planning→running→done ✓→GET article

An article is usually ready in 1–4 minutes depending on the settings. Job status: planning, running, done, failed. Article status: pending, running, done, failed.

🪝 Webhook

Instead of polling webhook_url if you provide, a webhook will be sent to your address when the job is complete POST :

{"event":"job.done","job":{"id":345,"status":"done","total":1,"done":1,"articles":[…]}}

Verification: X-SiberMakale-Signature the title, the body's HMAC-SHA256 is the signature; the SHA-256 hash of the API key that initiated the job is used as the key: hash_hmac('sha256', $govde, hash('sha256', $apiAnahtari)). The process runs in the background even if you don't poll, and a webhook is sent when finished (https addresses only).

💻 Code examples

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}'

⚠ Error codes

{"ok":false,"error":{"type":"invalid_request","message":"En az bir anahtar kelime girin."}}
HTTPtypeMeaning
401unauthorizedMissing or invalid key.
402insufficient_creditsNot enough article credits.
404not_foundJob / article not found or no such endpoint.
422invalid_requestMissing or invalid parameter (details in the message).
429rate_limitedRate limit of 60 requests per minute exceeded (see Retry-After header).
500server_errorUnexpected error; please try again.

📏 Limits & pricing

  • 60 requests per minute (per key).
  • Maximum 10 articles per request; each article consumes 1 article credit. Daily fair use limits apply to unlimited plans.
  • The API itself is free; only the articles you generate are deducted from your credits. For plans Plans page.