Reference
API reference
Basics
Base URL
https://reblogger.ai/api/v1
Authentication
Authorization: Bearer rb_live_…
JSON in, JSON out, snake_case everywhere. Errors are application/problem+json (error codes), and every response carries rate-limit headers. Generate a typed client from the spec with any OpenAPI generator:
npx openapi-typescript https://reblogger.ai/api/v1/openapi.json -o reblogger.d.tsEndpoints
Articles
Create, list, read, edit and delete articles.
Create an article
Starts an asynchronous generation from a URL or a topic. Credits are reserved immediately and refunded if the generation fails. Poll GET /generations/{id}, stream GET /generations/{id}/events, or register a webhook to know when the article is ready. Send an Idempotency-Key header to safely retry: a repeated key returns the original generation with status 200.
Parameters
Idempotency-Keystringin headerUnique key (≤ 100 chars) to make retries safe. Replays return the original generation.
Request body · application/json
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
{
"source": {
"type": "topic",
"topic": "Balcony vegetable gardening for beginners",
"keywords": [
"container gardening"
]
},
"language": "en",
"length": "medium",
"tone": "friendly",
"include_faq": true,
"image_count": 1
}Responses
› Response attributes
generationGenerationrequired› Child attributes
idstringrequiredobject"generation"requiredstatusenumrequiredqueuedrunningsucceededfailedcanceledstagestringrequiredCurrent pipeline stage, e.g. queued, extracting, outlining, writing, images, seo, finishing, done.
progressintegerrequired0–100
article_idstring | nullrequiredmodelstringrequiredcredits_chargedintegerrequiredsourceenumrequireddashboardapiwordpressmcptrialerrorobject | nullrequiredcreated_atstringrequireddate-time
started_atstring | nullrequireddate-time
finished_atstring | nullrequireddate-time
article_idstringrequiredlinksobjectrequired› Child attributes
selfstringrequireduri
eventsstringrequireduri
articlestringrequireduri
{
"generation": {
"id": "cmh1x0gen7f2k0001",
"object": "generation",
"status": "queued",
"stage": "queued",
"progress": 0,
"article_id": "cmh1x0art9q3m0001",
"model": "claude-sonnet-5.5",
"credits_charged": 1,
"source": "api",
"error": null,
"created_at": "2026-10-31T09:24:11.000Z",
"started_at": null,
"finished_at": null
},
"article_id": "cmh1x0art9q3m0001",
"links": {
"self": "https://reblogger.ai/api/v1/generations/cmh1x0gen7f2k0001",
"events": "https://reblogger.ai/api/v1/generations/cmh1x0gen7f2k0001/events",
"article": "https://reblogger.ai/api/v1/articles/cmh1x0art9q3m0001"
}
}› Response attributes
generationGenerationrequired› Child attributes
idstringrequiredobject"generation"requiredstatusenumrequiredqueuedrunningsucceededfailedcanceledstagestringrequiredCurrent pipeline stage, e.g. queued, extracting, outlining, writing, images, seo, finishing, done.
progressintegerrequired0–100
article_idstring | nullrequiredmodelstringrequiredcredits_chargedintegerrequiredsourceenumrequireddashboardapiwordpressmcptrialerrorobject | nullrequiredcreated_atstringrequireddate-time
started_atstring | nullrequireddate-time
finished_atstring | nullrequireddate-time
article_idstringrequiredlinksobjectrequired› Child attributes
selfstringrequireduri
eventsstringrequireduri
articlestringrequireduri
- 401Missing, invalid or revoked API key.invalid_api_key
- 402Not enough credits.insufficient_credits
- 403The key lacks a scope or the plan lacks a feature.plan_required
- 422The request is invalid.validation_error
- 429Too many requests. Honor `Retry-After`.rate_limited
List articles
Newest first. Paginate with starting_after=<next_cursor> while has_more is true.
Parameters
limitintegerin querydefault20Page size (1–100).
starting_afterstringin queryCursor: the
idof the last article from the previous page.statusenumin queryFilter by status.
generating · ready · failed · archived
languagestringin queryFilter by language code.
Responses
› Response attributes
object"list"requireddataarray<ArticleSummary>required› Child attributes
idstringrequiredobject"article"requiredstatusenumrequiredgeneratingreadyfailedarchivedtitlestringrequiredslugstringrequiredlanguagestringrequiredexcerptstring | nullrequiredword_countintegerrequiredcover_imageobject | nullrequiredsourceobjectrequired› Child attributes
typeenumrequiredurltopicurlstring | nullrequiredtitlestring | nullrequiredtopicstring | nullrequired
modelstring | nullrequiredcreated_atstringrequireddate-time
updated_atstringrequireddate-time
has_morebooleanrequirednext_cursorstring | nullrequired
{
"object": "list",
"data": [
{
"id": "cmh1x0art9q3m0001",
"object": "article",
"status": "ready",
"title": "How to Start a Vegetable Garden on a Balcony",
"slug": "balcony-vegetable-garden",
"language": "en",
"excerpt": "No yard? No problem. Here is how to grow tomatoes, herbs and greens in containers on even the smallest balcony.",
"word_count": 1532,
"cover_image": {
"url": "https://cdn.reblogger.ai/u/abc/cover.webp",
"alt": "Tomato plants in pots on a sunny balcony"
},
"source": {
"type": "topic",
"url": null,
"title": null,
"topic": "Balcony vegetable gardening for beginners"
},
"model": "claude-sonnet-5.5",
"created_at": "2026-10-31T09:24:11.000Z",
"updated_at": "2026-10-31T09:24:11.000Z"
}
],
"has_more": false,
"next_cursor": null
}- 401Missing, invalid or revoked API key.invalid_api_key
- 429Too many requests. Honor `Retry-After`.rate_limited
Retrieve an article
Returns the full article including HTML, Markdown, SEO metadata and images. Add ?include=blocks for Gutenberg block markup.
Parameters
idstringin pathrequiredThe article id.
includeenumin queryComma-separated extras.
blocksaddscontent_blocks(Gutenberg markup).blocks
Responses
› Response attributes
idstringrequiredobject"article"requiredstatusenumrequiredgeneratingreadyfailedarchivedtitlestringrequiredslugstringrequiredlanguagestringrequiredexcerptstring | nullrequiredword_countintegerrequiredcover_imageobject | nullrequiredsourceobjectrequired› Child attributes
typeenumrequiredurltopicurlstring | nullrequiredtitlestring | nullrequiredtopicstring | nullrequired
modelstring | nullrequiredcreated_atstringrequireddate-time
updated_atstringrequireddate-time
meta_titlestring | nullrequiredmeta_descriptionstring | nullrequiredfocus_keywordstring | nullrequiredkeywordsarray<string>requiredtagsarray<string>requiredcategoriesarray<string>requiredfaqarray<object>required› Child attributes
questionstringrequiredanswerstringrequired
imagesarray<object>required› Child attributes
urlstringrequiredaltstringrequiredwidthintegeroptionalheightintegeroptionalsectioninteger | nullrequiredSection index the image belongs to; null = cover image.
reading_minutesintegerrequiredseoobject | nullrequiredsettingsobject (map) | nullrequiredThe generation options used (snake_case).
content_htmlstringrequiredSanitized HTML body (no <h1>; use
title).content_markdownstringrequiredcontent_blocksstringoptionalGutenberg block markup. Only present with
?include=blocks.
{
"id": "cmh1x0art9q3m0001",
"object": "article",
"status": "ready",
"title": "How to Start a Vegetable Garden on a Balcony",
"slug": "balcony-vegetable-garden",
"language": "en",
"excerpt": "No yard? No problem. Here is how to grow tomatoes, herbs and greens in containers on even the smallest balcony.",
"word_count": 1532,
"cover_image": {
"url": "https://cdn.reblogger.ai/u/abc/cover.webp",
"alt": "Tomato plants in pots on a sunny balcony"
},
"source": {
"type": "topic",
"url": null,
"title": null,
"topic": "Balcony vegetable gardening for beginners"
},
"model": "claude-sonnet-5.5",
"created_at": "2026-10-31T09:24:11.000Z",
"updated_at": "2026-10-31T09:24:11.000Z",
"meta_title": "Balcony Vegetable Garden: A Beginner’s Guide (2026)",
"meta_description": "Grow fresh vegetables on a balcony: the best containers, soil, sun requirements and 12 easy crops for small spaces.",
"focus_keyword": "balcony vegetable garden",
"keywords": [
"container gardening",
"small space gardening"
],
"tags": [
"gardening",
"urban living"
],
"categories": [
"Home & Garden"
],
"faq": [
{
"question": "How much sun does a balcony garden need?",
"answer": "Most vegetables need 6–8 hours of direct sun…"
}
],
"images": [
{
"url": "https://cdn.reblogger.ai/u/abc/cover.webp",
"alt": "Tomato plants in pots on a sunny balcony",
"width": 1536,
"height": 1024,
"section": null
}
],
"reading_minutes": 7,
"seo": {
"score": 92,
"checks": [
{
"id": "kw_title",
"ok": true,
"weight": 12,
"label": "Focus keyword in title"
}
]
},
"settings": {
"language": "en",
"length": "medium",
"tone": "friendly",
"image_count": 1
},
"content_html": "<p>Fresh tomatoes from your own balcony…</p><h2>Choose the right containers</h2><p>…</p>",
"content_markdown": "Fresh tomatoes from your own balcony…\n\n## Choose the right containers\n\n…"
}- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 429Too many requests. Honor `Retry-After`.rate_limited
Update an article
Edit metadata or replace the Markdown body; content_html, word_count and the SEO score are recomputed. Articles that are still generating cannot be edited.
Parameters
idstringin pathrequiredThe article id.
Request body · application/json
titlestringoptionalmin length 1 · max length 300
slugstringoptionalmax length 120
excerptstring | nulloptionalmax length 1,000
meta_titlestring | nulloptionalmax length 120
meta_descriptionstring | nulloptionalmax length 320
focus_keywordstring | nulloptionalmax length 100
keywordsarray<string>optionalmax 30 items
tagsarray<string>optionalmax 30 items
categoriesarray<string>optionalmax 10 items
content_markdownstringoptionalNew Markdown body.
content_html, word count and SEO score are recomputed.max length 200,000
statusenumoptionalArchive or un-archive a finished article.
readyarchived
{
"title": "Balcony Vegetable Gardening: The Complete Guide",
"tags": [
"gardening",
"balcony"
]
}Responses
› Response attributes
idstringrequiredobject"article"requiredstatusenumrequiredgeneratingreadyfailedarchivedtitlestringrequiredslugstringrequiredlanguagestringrequiredexcerptstring | nullrequiredword_countintegerrequiredcover_imageobject | nullrequiredsourceobjectrequired› Child attributes
typeenumrequiredurltopicurlstring | nullrequiredtitlestring | nullrequiredtopicstring | nullrequired
modelstring | nullrequiredcreated_atstringrequireddate-time
updated_atstringrequireddate-time
meta_titlestring | nullrequiredmeta_descriptionstring | nullrequiredfocus_keywordstring | nullrequiredkeywordsarray<string>requiredtagsarray<string>requiredcategoriesarray<string>requiredfaqarray<object>required› Child attributes
questionstringrequiredanswerstringrequired
imagesarray<object>required› Child attributes
urlstringrequiredaltstringrequiredwidthintegeroptionalheightintegeroptionalsectioninteger | nullrequiredSection index the image belongs to; null = cover image.
reading_minutesintegerrequiredseoobject | nullrequiredsettingsobject (map) | nullrequiredThe generation options used (snake_case).
content_htmlstringrequiredSanitized HTML body (no <h1>; use
title).content_markdownstringrequiredcontent_blocksstringoptionalGutenberg block markup. Only present with
?include=blocks.
- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 409The resource is in a state that does not allow this operation.conflict
- 422The request is invalid.validation_error
- 429Too many requests. Honor `Retry-After`.rate_limited
Delete an article
Permanently deletes the article. A still-queued generation is canceled and refunded first.
Parameters
idstringin pathrequiredThe article id.
Responses
› Response attributes
idstringrequiredobjectstringrequireddeletedtruerequired
{
"id": "cmh1x0art9q3m0001",
"object": "article",
"deleted": true
}- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 409The resource is in a state that does not allow this operation.conflict
- 429Too many requests. Honor `Retry-After`.rate_limited
Generations
Track asynchronous generation jobs: status, live events and cancellation.
Retrieve a generation
Status (queued → running → succeeded | failed | canceled), current stage and progress (0–100).
Parameters
idstringin pathrequiredThe generation id.
Responses
› Response attributes
idstringrequiredobject"generation"requiredstatusenumrequiredqueuedrunningsucceededfailedcanceledstagestringrequiredCurrent pipeline stage, e.g. queued, extracting, outlining, writing, images, seo, finishing, done.
progressintegerrequired0–100
article_idstring | nullrequiredmodelstringrequiredcredits_chargedintegerrequiredsourceenumrequireddashboardapiwordpressmcptrialerrorobject | nullrequiredcreated_atstringrequireddate-time
started_atstring | nullrequireddate-time
finished_atstring | nullrequireddate-time
{
"id": "cmh1x0gen7f2k0001",
"object": "generation",
"status": "running",
"stage": "writing",
"progress": 46,
"article_id": "cmh1x0art9q3m0001",
"model": "claude-sonnet-5.5",
"credits_charged": 1,
"source": "api",
"error": null,
"created_at": "2026-10-31T09:24:11.000Z",
"started_at": "2026-10-31T09:24:11.000Z",
"finished_at": null
}- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 429Too many requests. Honor `Retry-After`.rate_limited
Stream generation events (SSE)
A text/event-stream of progress events: stage, source, outline, section_delta, section_done, image, seo, and finally done or error. Every event has an id; reconnect with Last-Event-ID (or ?last_event_id=) to resume. The stream closes after done/error.
Parameters
idstringin pathrequiredThe generation id.
Last-Event-IDstringin headerResume after this event id.
Responses
id: 812
event: stage
data: {"stage":"writing","progress":40}
id: 813
event: section_delta
data: {"section":0,"text":"Containers are the "}- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 429Too many requests. Honor `Retry-After`.rate_limited
Cancel a generation
Only queued generations can be canceled. Credits are refunded.
Parameters
idstringin pathrequiredThe generation id.
Responses
› Response attributes
idstringrequiredobject"generation"requiredstatusenumrequiredqueuedrunningsucceededfailedcanceledstagestringrequiredCurrent pipeline stage, e.g. queued, extracting, outlining, writing, images, seo, finishing, done.
progressintegerrequired0–100
article_idstring | nullrequiredmodelstringrequiredcredits_chargedintegerrequiredsourceenumrequireddashboardapiwordpressmcptrialerrorobject | nullrequiredcreated_atstringrequireddate-time
started_atstring | nullrequireddate-time
finished_atstring | nullrequireddate-time
{
"id": "cmh1x0gen7f2k0001",
"object": "generation",
"status": "canceled",
"stage": "queued",
"progress": 0,
"article_id": "cmh1x0art9q3m0001",
"model": "claude-sonnet-5.5",
"credits_charged": 1,
"source": "api",
"error": null,
"created_at": "2026-10-31T09:24:11.000Z",
"started_at": null,
"finished_at": "2026-10-31T09:24:11.000Z"
}- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 409The resource is in a state that does not allow this operation.conflict
- 429Too many requests. Honor `Retry-After`.rate_limited
Account
Your plan, credits and the models available to you.
List models
Text and image models you can use right now, with their credit cost and whether your plan includes them. Respects EU data residency.
Responses
› Response attributes
object"model_list"requiredregionenumrequiredglobaleudefaultobjectrequired› Child attributes
textstringrequiredimagestring | nullrequired
text_modelsarray<TextModel>required› Child attributes
idstringrequiredvendorenumrequiredanthropicopenaigooglemistrallabelstringrequiredtierenumrequiredfastbalancedpremiumcreditsintegerrequiredCredits per article up to ~2,000 words. Long (+1) and pillar (+2) lengths cost extra.
descriptionstringrequiredeu_availablebooleanrequiredCan run on an EU-resident endpoint.
allowedbooleanrequiredIncluded in your plan.
recommendedbooleanrequired
image_modelsarray<ImageModel>required› Child attributes
idstringrequiredvendorenumrequiredopenaigooglereplicatelabelstringrequiredtierenumrequiredfastbalancedpremiumeu_availablebooleanrequired
lengthsobject (map)required
{
"object": "model_list",
"region": "global",
"default": {
"text": "claude-sonnet-5.5",
"image": "nano-banana-2"
},
"text_models": [
{
"id": "claude-sonnet-5.5",
"vendor": "anthropic",
"label": "Claude Sonnet 5.5",
"tier": "balanced",
"credits": 1,
"description": "Our default. Natural, nuanced writing with excellent structure.",
"eu_available": true,
"allowed": true,
"recommended": true
}
],
"image_models": [
{
"id": "nano-banana-2",
"vendor": "google",
"label": "Nano Banana 2",
"tier": "fast",
"eu_available": true
}
],
"lengths": {
"short": {
"words": 800,
"extra_credits": 0,
"allowed": true
},
"medium": {
"words": 1500,
"extra_credits": 0,
"allowed": true
},
"long": {
"words": 2500,
"extra_credits": 1,
"allowed": false
},
"pillar": {
"words": 4000,
"extra_credits": 2,
"allowed": false
}
}
}- 401Missing, invalid or revoked API key.invalid_api_key
- 429Too many requests. Honor `Retry-After`.rate_limited
Retrieve your account
Responses
› Response attributes
idstringrequiredobject"account"requiredemailstringrequirednamestringrequiredplanenumrequiredfreestarterproagencycreditsintegerrequiredCurrent credit balance.
featuresobjectrequired› Child attributes
tiersarray<enum>requiredfastbalancedpremiumapibooleanrequiredmcpbooleanrequiredwebhooksbooleanrequiredbrand_voicesintegerrequiredsitesintegerrequiredeu_residencybooleanrequiredmax_lengthenumrequiredmediumlongpillarmax_imagesintegerrequiredpriority_queuebooleanrequired
eu_data_residencybooleanrequiredEU data residency is active for this account.
{
"id": "usr_8f2k",
"object": "account",
"email": "[email protected]",
"name": "Robin",
"plan": "pro",
"credits": 87,
"features": {
"tiers": [
"fast",
"balanced",
"premium"
],
"api": true,
"mcp": true,
"webhooks": true,
"brand_voices": 5,
"sites": 5,
"eu_residency": true,
"max_length": "pillar",
"max_images": 3,
"priority_queue": false
},
"eu_data_residency": false
}- 401Missing, invalid or revoked API key.invalid_api_key
- 429Too many requests. Honor `Retry-After`.rate_limited
Webhooks
Signed HTTP callbacks when a generation finishes.
List webhook endpoints
Responses
› Response attributes
object"list"requireddataarray<WebhookEndpoint>required› Child attributes
idstringrequiredobject"webhook_endpoint"requiredurlstringrequiredeventsarray<enum>requiredgeneration.succeededgeneration.failedactivebooleanrequiredcreated_atstringrequireddate-time
secretstringoptionalSigning secret. Only returned once, when the endpoint is created.
- 401Missing, invalid or revoked API key.invalid_api_key
- 429Too many requests. Honor `Retry-After`.rate_limited
Create a webhook endpoint
Requires a plan with webhooks (Starter and up). The secret is only returned in this response — store it to verify signatures.
Request body · application/json
urlstringrequiredHTTPS endpoint that receives signed POST requests.
uri · max length 2,048
eventsarray<enum>optionalEvents to subscribe to (default: all).
generation.succeededgeneration.failed
{
"url": "https://example.com/hooks/reblogger",
"events": [
"generation.succeeded",
"generation.failed"
]
}Responses
› Response attributes
idstringrequiredobject"webhook_endpoint"requiredurlstringrequiredeventsarray<enum>requiredgeneration.succeededgeneration.failedactivebooleanrequiredcreated_atstringrequireddate-time
secretstringoptionalSigning secret. Only returned once, when the endpoint is created.
{
"id": "cmh1x0whk2b8n0001",
"object": "webhook_endpoint",
"url": "https://example.com/hooks/reblogger",
"events": [
"generation.succeeded",
"generation.failed"
],
"active": true,
"created_at": "2026-10-31T09:24:11.000Z",
"secret": "whsec_9JcU2v…"
}- 401Missing, invalid or revoked API key.invalid_api_key
- 403The key lacks a scope or the plan lacks a feature.plan_required
- 422The request is invalid.validation_error
- 429Too many requests. Honor `Retry-After`.rate_limited
Delete a webhook endpoint
Parameters
idstringin pathrequiredThe webhook endpoint id.
Responses
› Response attributes
idstringrequiredobjectstringrequireddeletedtruerequired
- 401Missing, invalid or revoked API key.invalid_api_key
- 404The resource does not exist or belongs to another account.not_found
- 429Too many requests. Honor `Retry-After`.rate_limited
Utilities
Helpers such as URL extraction.
Extract a web page
Fetches a public page and returns its main article text as Markdown — the same extractor used for URL sources. Costs no credits.
Request body · application/json
urlstringrequiredPublic page to extract.
uri · max length 2,048
{
"url": "https://example.com/blog/some-post"
}Responses
› Response attributes
object"extracted_source"requiredurlstringrequiredtitlestringrequiredmarkdownstringrequiredexcerptstring | nullrequiredsite_namestring | nullrequiredbylinestring | nullrequiredlanguagestring | nullrequiredpublished_atstring | nullrequiredword_countintegerrequiredviaenumrequiredwordpress-apireadability
- 401Missing, invalid or revoked API key.invalid_api_key
- 422The request is invalid.validation_error
- 429Too many requests. Honor `Retry-After`.rate_limited
OpenAPI document
This document.
Responses
WordPress
Endpoints used by the reblogger WordPress plugin.
Exchange a connect code
Used by the WordPress plugin after the user approves the connection on reblogger.ai. Exchanges the one-time code (valid for a few minutes, single use) for a site-scoped API key. site_url must match the site that started the flow. No authentication; rate-limited per IP.
Request body · application/json
codestringrequiredOne-time code from the reblogger.ai connect redirect.
min length 8 · max length 200
site_urlstringrequiredThe WordPress site URL that started the connect flow.
min length 4 · max length 2,048
{
"code": "rbc_3KfP0…",
"site_url": "https://myblog.example"
}Responses
› Response attributes
api_keystringrequiredSite-scoped API key. Store it securely; it is not shown again.
siteobjectrequired› Child attributes
idstringrequiredurlstringrequired
accountobjectrequired› Child attributes
emailstringrequiredplanstringrequiredcreditsintegerrequired
{
"api_key": "rb_live_…",
"site": {
"id": "cmh1x0sit4c1p0001",
"url": "https://myblog.example"
},
"account": {
"email": "[email protected]",
"plan": "starter",
"credits": 30
}
}- 400Unknown, expired or used connect code, or the site URL does not match.invalid_connect_code
- 422The request is invalid.validation_error
- 429Too many requests. Honor `Retry-After`.rate_limited
Disconnect a site
Revokes the calling (site) API key and removes the site connection. Requires API-key auth.
Responses
{
"object": "connection",
"api_key_id": "cmh1x0key…",
"site_id": "cmh1x0sit…",
"deleted": true
}- 401Missing, invalid or revoked API key.invalid_api_key
- 429Too many requests. Honor `Retry-After`.rate_limited
Webhook events
Sent to your registered endpoints as signed POST requests. See Webhooks for signature verification.
generation.succeeded
Sent when an article is ready. Verify the `x-reblogger-signature` header, then fetch the article.
generation.failed
Sent when a generation fails. Credits have already been refunded.
› Event payload attributes
idstringrequiredUnique event id; use it to de-duplicate retries.
typeenumrequiredgeneration.succeededgeneration.failedcreatedstringrequireddate-time
dataGenerationrequired› Child attributes
idstringrequiredobject"generation"requiredstatusenumrequiredqueuedrunningsucceededfailedcanceledstagestringrequiredCurrent pipeline stage, e.g. queued, extracting, outlining, writing, images, seo, finishing, done.
progressintegerrequired0–100
article_idstring | nullrequiredmodelstringrequiredcredits_chargedintegerrequiredsourceenumrequireddashboardapiwordpressmcptrialerrorobject | nullrequiredcreated_atstringrequireddate-time
started_atstring | nullrequireddate-time
finished_atstring | nullrequireddate-time