Skip to content

Guides

Articles

A finished article is everything you need to publish: the body in three formats plus all the SEO metadata.

The article object

An article exists from the moment you create it, with status: "generating". When the generation succeeds it becomes ready; if it fails, failed. You can archive articles you no longer need in lists.

  • idstringrequired
  • object"article"required
  • statusenumrequired
    generatingreadyfailedarchived
  • titlestringrequired
  • slugstringrequired
  • languagestringrequired
  • excerptstring | nullrequired
  • word_countintegerrequired
  • cover_imageobject | nullrequired
  • sourceobjectrequired
    › Child attributes
    • typeenumrequired
      urltopic
    • urlstring | nullrequired
    • titlestring | nullrequired
    • topicstring | nullrequired
  • modelstring | nullrequired
  • created_atstringrequired

    date-time

  • updated_atstringrequired

    date-time

  • meta_titlestring | nullrequired
  • meta_descriptionstring | nullrequired
  • focus_keywordstring | nullrequired
  • keywordsarray<string>required
  • tagsarray<string>required
  • categoriesarray<string>required
  • faqarray<object>required
    › Child attributes
    • questionstringrequired
    • answerstringrequired
  • imagesarray<object>required
    › Child attributes
    • urlstringrequired
    • altstringrequired
    • widthintegeroptional
    • heightintegeroptional
    • sectioninteger | nullrequired

      Section index the image belongs to; null = cover image.

  • reading_minutesintegerrequired
  • seoobject | nullrequired
  • settingsobject (map) | nullrequired

    The generation options used (snake_case).

  • content_htmlstringrequired

    Sanitized HTML body (no <h1>; use title).

  • content_markdownstringrequired
  • content_blocksstringoptional

    Gutenberg block markup. Only present with ?include=blocks.

content_html is sanitized and has no <h1> — use title as your page heading. Links to external sites get rel="noopener noreferrer". The FAQ is part of the body and is also returned as structured faq for FAQPage schema.

Retrieve

GET/api/v1/articles/{id}
curl "https://reblogger.ai/api/v1/articles/$ARTICLE_ID" \
  -H "Authorization: Bearer $REBLOGGER_API_KEY"

Gutenberg blocks

Add ?include=blocks to get content_blocks: the body serialized as WordPress block markup (headings, paragraphs, lists, quotes, code, tables, images, separators). Paste it into post_content and the block editor opens it as native blocks — no “Classic” block conversion.

content_blocks (excerpt)
<!-- wp:heading -->
<h2 class="wp-block-heading">Choose the right containers</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pick pots with drainage holes and at least 20 litres of soil for tomatoes.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.reblogger.ai/…/pots.webp" alt="Terracotta pots on a balcony"/></figure>
<!-- /wp:image -->

Image URLs point to our CDN. To host them in your media library, download and re-upload them and replace the URLs — the WordPress plugin does this automatically.

List & paginate

GET/api/v1/articles?limit=20&status=ready

Articles are returned newest first as summaries (no body). Filter by status and language; page with limit (1–100, default 20) and starting_after:

let cursor = null;
do {
  const url = new URL('https://reblogger.ai/api/v1/articles');
  url.searchParams.set('limit', '100');
  if (cursor) url.searchParams.set('starting_after', cursor);
  const page = await fetch(url, { headers: { Authorization: `Bearer ${key}` } }).then((r) => r.json());
  for (const article of page.data) console.log(article.id, article.title);
  cursor = page.has_more ? page.next_cursor : null;
} while (cursor);

Update

PATCH/api/v1/articles/{id}

Change any of title, slug, excerpt, meta_title, meta_description, focus_keyword, keywords, tags, categories, status (ready or archived) or the whole body via content_markdown. When the body changes we re-render content_html, recount words and recompute the SEO score.

Shell
curl -X PATCH https://reblogger.ai/api/v1/articles/$ARTICLE_ID \
  -H "Authorization: Bearer $REBLOGGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Balcony Vegetable Gardening: The Complete Guide", "tags": ["gardening", "balcony"] }'

Articles that are still generating return 409 conflict.

Delete

DELETE/api/v1/articles/{id}

Deletes the article permanently. If its generation is still queued, it's canceled and refunded first; while a generation is running you get 409 — try again when it finishes.

200 OK
{ "id": "cmh1x0art9q3m0001", "object": "article", "deleted": true }