FluxWriter API
Generate and publish SEO content from your own app, script, or product. Simple REST, JSON in and out, the same engine and quotas as the dashboard. The FluxWriter API is available on the Pro and Agency plans.
Get an API Key and Authenticate
In the dashboard go to Settings, then API keys, then Create key. Copy it immediately, because it is shown only once, and treat it like a password since it acts on your account. Send your key as a Bearer token on every request against the base URL https://fluxwriter.com, and all responses are JSON.
Endpoints
The REST API exposes a small set of endpoints for checking your account, listing connected sites, generating articles, and publishing posts:
- GET /v1/me returns your plan and limits, useful as an is-my-key-working check.
- GET /v1/sites lists the sites connected to your account so you can pass the site id when generating. Each site also reports writingMode, which is not_set until the site owner answers the made-up stories question in the dashboard and then facts_only or stories, and storyMode, the exact answer. The API cannot set it, and until it is answered posts use real facts only.
- POST /v1/generate creates one SEO article for a connected site and returns when the post is ready, which can take up to about two minutes, so set a client timeout of at least 130 seconds. Body fields include siteId plus optional topic, focusKeyword, wordCount (300 to 1,500), mode, language, and autoPublish. On Pro and Agency the post is written by Flux Core (Claude Haiku 5.5); if it fails, Flux Lite (DeepSeek V3) writes it instead, but only while the request still has time to finish. Flux Lite also writes it when Flux Core cannot run, for example when your account already has three posts being written by Claude at once. The API never writes with Flux Max (Claude Sonnet 5.5), which the dashboard offers, and the response's aiModel names the model that wrote it. The API takes no model choice, so an aiModel in the body is ignored. A post that is not ready by about 120 seconds is not saved and uses no monthly post: the answer is 503 with a Retry-After header, so try again later; a saved post counts against your monthly quota.
- POST /v1/posts/:id/publish publishes an existing post, such as one generated as a draft, to its platform. A post held for review is refused with 409 post_held and its heldReasons until the request sends acknowledgeHeld: true.
- GET /v1/posts lists your posts, most recent first, and GET /v1/posts/:id fetches one post including its full HTML content.
Publishing and Webhooks
Generate and publish SEO-optimized articles to WordPress, Shopify, Wix, Webflow, Ghost, or any webhook. If a post fails the fact and link check or the quality bar, an auto-publish is held as a draft for review, and heldReasons says why by code. To react to publishes, set a publish webhook in Settings and FluxWriter posts a JSON payload whenever a post is published, with no polling needed. That payload is not signed, so treat the webhook URL itself as the secret. Custom-webhook publishing destinations are separate and can be HMAC-signed by setting a signing secret on the site.