Skip to content

Guides

Generating articles

One endpoint creates every article. This page covers each option, what it costs and which plan includes it.
POST/api/v1/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.

  • sourceArticleSourcerequired

    Where 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"required
    • urlstringrequired

      Public http(s) URL of the article to rewrite.

      uri · max length 2,048

    type: "topic" — Write a new article from a topic.

    • type"topic"required
    • topicstringrequired

      What the article should be about.

      min length 3 · max length 500

    • keywordsarray<string>optional

      Up to 10 secondary keywords to weave in.

      max 10 items

  • languageenumoptionaldefault "en"

    Output language (ISO code), one of 26 supported languages.

    endeesfritnlptpt-BRruplsvdanoficstrarhijakozhidukroelhu
  • modelstringoptional

    Text model id from GET /v1/models. Defaults to your account default (Claude Sonnet 5.5).

    max length 64

  • image_modelstring | nulloptional

    Image 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.

    shortmediumlongpillar
  • toneenumoptionaldefault "professional"

    Writing tone.

    professionalfriendlyconversationalauthoritativewittyacademicpersuasive
  • audiencestringoptional

    Who 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.

    firstsecondthird
  • focus_keywordstringoptional

    Primary SEO keyword. Chosen automatically when omitted.

    max length 100

  • include_faqbooleanoptionaldefault true

    Append an FAQ section (also returned as structured faq).

  • include_takeawaysbooleanoptionaldefault true

    Add a "Key takeaways" box after the introduction.

  • image_countintegeroptionaldefault 1

    Number of AI images (cover + inline), capped by your plan.

    0–3

  • brand_voice_idstringoptional

    Brand voice id from your dashboard.

    max length 40

  • instructionsstringoptional

    Extra 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.

    lightmoderatefull
  • callback_urlstringoptional

    HTTPS 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

Article lengths
lengthTarget wordsSectionsExtra creditsPlans
short≈ 8003–4—Free, Starter, Pro, Agency
medium≈ 1,5004–6—Free, Starter, Pro, Agency
long≈ 2,5006–8+1Starter, Pro, Agency
pillar≈ 4,0008–11+2Pro, Agency

Tone & point of view

Tones
toneFeels like
professionalClear, confident, businesslike.
friendlyWarm and approachable.
conversationalRelaxed, like talking to a friend.
authoritativeExpert voice with strong claims and evidence.
wittyLight humor and personality.
academicPrecise, formal, well-referenced.
persuasiveBenefit-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.

enEnglish
deGerman
esSpanish
frFrench
itItalian
nlDutch
ptPortuguese
pt-BRBrazilian Portuguese
ruRussian
plPolish
svSwedish
daDanish
noNorwegian
fiFinnish
csCzech
trTurkish
arArabic
hiHindi
jaJapanese
koKorean
zhSimplified Chinese
idIndonesian
ukUkrainian
roRomanian
elGreek
huHungarian

Models & 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.

Text models
modelVendorTierCreditsEU
claude-haiku-5.5Anthropicfast1Yes
claude-sonnet-5.5Anthropicbalanced1Yes
claude-opus-5.5Anthropicpremium3Yes
gpt-6-lunaOpenAIfast1—
gpt-6.1-terraOpenAIfast1—
gpt-6.1-solOpenAIbalanced1—
gpt-6-astraOpenAIpremium4—
gemini-3.5-flash-liteGooglefast1Yes
gemini-3.8-flashGooglebalanced1Yes
gemini-4-argonGooglepremium2Yes
mistral-mediumMistralfast1Yes
mistral-largeMistralbalanced1Yes

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.

Plans
PlanModel tiersMax lengthImagesEU residency
Freefast, balancedmedium1—
Starterfast, balancedlong2—
Profast, balanced, premiumpillar3Yes
Agencyfast, balanced, premiumpillar3Yes

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 models
image_modelNameVendorEU
gpt-image-2.5-flareGPT Image 2.5 FlareOpenAI—
gpt-image-2.5-sunburstGPT Image 2.5 SunburstOpenAI—
nano-banana-2Nano Banana 2GoogleYes
nano-banana-proNano Banana ProGoogleYes
flux-schnellFLUX SchnellReplicate—
flux-1.1-proFLUX 1.1 ProReplicate—

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 structured faq (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

202 Accepted
{
  "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.