Guides
Generating articles
The request reserves credits and returns 202 right away; the article is written in the background. Follow progress as described in Generations & streaming. Only source is required — everything else has a sensible default.
curl https://reblogger.ai/api/v1/articles \
-H "Authorization: Bearer $REBLOGGER_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"source": { "type": "topic", "topic": "Balcony vegetable gardening for beginners" },
"language": "en",
"length": "medium",
"tone": "friendly"
}'Sources: URL or topic
Rewrite a URL
With {"type": "url", "url": "https://…"} reblogger fetches the page, extracts the main article (WordPress sites are read through their REST API for cleaner content) and writes a new, original article on the same subject. rewrite_strength controls how far it moves away from the source: light keeps structure and key phrasing, moderate restructures, full (default) writes a fresh piece that only shares the facts.
The URL must be publicly reachable over http(s). Private networks, localhost and non-standard ports are rejected with 422 invalid_url. Use POST /extract to preview what we can read from a page (free).
Write about a topic
With {"type": "topic", "topic": "…", "keywords": ["…"]} reblogger plans and writes an article from scratch. Be specific — “how to keep basil alive indoors in winter” produces a sharper article than “basil”. Optional keywords (up to 10) are woven in naturally.
Parameters
Generated from the API schema, so it always matches what the API accepts.
sourceArticleSourcerequiredWhere the article comes from: a URL to rewrite or a topic to write about.
› Child attributes
One of:
type: "url"— Rewrite an existing article into a new, original post.type"url"requiredurlstringrequiredPublic http(s) URL of the article to rewrite.
uri · max length 2,048
type: "topic"— Write a new article from a topic.type"topic"requiredtopicstringrequiredWhat the article should be about.
min length 3 · max length 500
keywordsarray<string>optionalUp to 10 secondary keywords to weave in.
max 10 items
languageenumoptionaldefault"en"Output language (ISO code), one of 26 supported languages.
endeesfritnlptpt-BRruplsvdanoficstrarhijakozhidukroelhumodelstringoptionalText model id from GET /v1/models. Defaults to your account default (Claude Sonnet 5.5).
max length 64
image_modelstring | nulloptionalImage model id from GET /v1/models, or null for no images.
max length 64
lengthenumoptionaldefault"medium"Target length: short ≈ 800 words, medium ≈ 1,500 words, long ≈ 2,500 words, pillar ≈ 4,000 words.
shortmediumlongpillartoneenumoptionaldefault"professional"Writing tone.
professionalfriendlyconversationalauthoritativewittyacademicpersuasiveaudiencestringoptionalWho the article is for, e.g. "small business owners".
max length 200
point_of_viewenumoptionaldefault"second"Narrative point of view: first (I/we), second (you) or third person.
firstsecondthirdfocus_keywordstringoptionalPrimary SEO keyword. Chosen automatically when omitted.
max length 100
include_faqbooleanoptionaldefaulttrueAppend an FAQ section (also returned as structured
faq).include_takeawaysbooleanoptionaldefaulttrueAdd a "Key takeaways" box after the introduction.
image_countintegeroptionaldefault1Number of AI images (cover + inline), capped by your plan.
0–3
brand_voice_idstringoptionalBrand voice id from your dashboard.
max length 40
instructionsstringoptionalExtra instructions for the writer (max 2,000 characters).
max length 2,000
rewrite_strengthenumoptionaldefault"full"URL sources only: how far to move away from the source wording.
lightmoderatefullcallback_urlstringoptionalHTTPS URL that receives an unsigned POST when the generation finishes. Re-fetch the article via the API.
uri · max length 2,048
Send an Idempotency-Key header to make retries safe — see Idempotency.
Lengths
| length | Target words | Sections | Extra credits | Plans |
|---|---|---|---|---|
short | ≈ 800 | 3–4 | — | Free, Starter, Pro, Agency |
medium | ≈ 1,500 | 4–6 | — | Free, Starter, Pro, Agency |
long | ≈ 2,500 | 6–8 | +1 | Starter, Pro, Agency |
pillar | ≈ 4,000 | 8–11 | +2 | Pro, Agency |
Tone & point of view
| tone | Feels like |
|---|---|
professional | Clear, confident, businesslike. |
friendly | Warm and approachable. |
conversational | Relaxed, like talking to a friend. |
authoritative | Expert voice with strong claims and evidence. |
witty | Light humor and personality. |
academic | Precise, formal, well-referenced. |
persuasive | Benefit-driven, builds to a call to action. |
point_of_view is first (“I/we”), second (“you”, default) or third. audience is free text such as “first-time home buyers in Germany”. For a consistent house style across all articles, create a brand voice in the dashboard and pass its id as brand_voice_id (Starter and up).
Languages
Set language to write natively in any of 26 languages — the source can be in a different language.
enEnglishdeGermanesSpanishfrFrenchitItaliannlDutchptPortuguesept-BRBrazilian PortugueseruRussianplPolishsvSwedishdaDanishnoNorwegianfiFinnishcsCzechtrTurkisharArabichiHindijaJapanesekoKoreanzhSimplified ChineseidIndonesianukUkrainianroRomanianelGreekhuHungarianModels & credits
Pick a model with model; the default is claude-sonnet-5.5. Fast and balanced models cost 1 credit per article; premium models cost more. GET /models returns the models that are available to your account right now (respecting EU data residency) and whether your plan includes them.
| model | Vendor | Tier | Credits | EU |
|---|---|---|---|---|
claude-haiku-5.5 | Anthropic | fast | 1 | Yes |
claude-sonnet-5.5 | Anthropic | balanced | 1 | Yes |
claude-opus-5.5 | Anthropic | premium | 3 | Yes |
gpt-6-luna | OpenAI | fast | 1 | — |
gpt-6.1-terra | OpenAI | fast | 1 | — |
gpt-6.1-sol | OpenAI | balanced | 1 | — |
gpt-6-astra | OpenAI | premium | 4 | — |
gemini-3.5-flash-lite | fast | 1 | Yes | |
gemini-3.8-flash | balanced | 1 | Yes | |
gemini-4-argon | premium | 2 | Yes | |
mistral-medium | Mistral | fast | 1 | Yes |
mistral-large | Mistral | balanced | 1 | Yes |
Long articles add 1 credit, pillar articles add 2. Credits are reserved when you create the article and refunded automatically if the generation fails or you cancel it while queued. If your balance is too low you get 402 insufficient_credits.
| Plan | Model tiers | Max length | Images | EU residency |
|---|---|---|---|---|
| Free | fast, balanced | medium | 1 | — |
| Starter | fast, balanced | long | 2 | — |
| Pro | fast, balanced, premium | pillar | 3 | Yes |
| Agency | fast, balanced, premium | pillar | 3 | Yes |
EU data residency
On Pro and Agency you can enable EU data residency in your settings. Generations then run only on EU-hosted endpoints, and GET /models lists only models that support it.
Images
image_count (0–3, capped by your plan) controls AI images: the first is the cover, the rest are placed inside sections. Images are included in the article price. Choose a model with image_model or pass null to skip images entirely. Every image comes with descriptive alt text.
| image_model | Name | Vendor | EU |
|---|---|---|---|
gpt-image-2.5-flare | GPT Image 2.5 Flare | OpenAI | — |
gpt-image-2.5-sunburst | GPT Image 2.5 Sunburst | OpenAI | — |
nano-banana-2 | Nano Banana 2 | Yes | |
nano-banana-pro | Nano Banana Pro | Yes | |
flux-schnell | FLUX Schnell | Replicate | — |
flux-1.1-pro | FLUX 1.1 Pro | Replicate | — |
SEO controls
focus_keyword— the primary keyword. It is used in the title, introduction, a subheading, the slug and the meta description. If omitted, reblogger picks one.include_faq— adds an FAQ section and returns it as structuredfaq(great for FAQPage schema).include_takeaways— a short “Key takeaways” box after the introduction.instructions— anything else: “mention our free trial”, “use metric units”, “no listicles”.
Every finished article includes a meta title, meta description, slug, excerpt, tags, categories and an on-page SEO score with individual checks.
Response
{
"generation": { "id": "cmh1x0gen7f2k0001", "object": "generation", "status": "queued", "progress": 0, "credits_charged": 1, … },
"article_id": "cmh1x0art9q3m0001",
"links": { "self": "…/generations/cmh1x0gen7f2k0001", "events": "…/events", "article": "…/articles/cmh1x0art9q3m0001" }
}Add callback_url (HTTPS) to receive a one-off POST when this generation finishes, or register permanent, signed webhooks.