Atomizations

Create (or regenerate) an atomization

Turns a published article into one channel-native asset. Requires the write:atomize scope.

The handler runs its checks in this order: body validation first (so a malformed request always gets its 400 rather than a 403/429), then the plan gate (Omni-Channel Atomization requires the professional plan or higher), then two rate limiters (20/hour per organization+user, 50/hour per organization), then billing.

Billing charges one content credit per (organization, content, billing period), so a second type for the same article inside the same period is free by the ledger's unique claim, and a new period charges again. If the charge crosses the organization into paid per-article overage the response body sets overage_incurred to true and the X-Frase-Overage-Incurred: true header is added.

Generation is asynchronous: the row is created (or an existing row for the same content+type is reset) to generating, an atomization/create background event is dispatched, and 201 is returned immediately. Poll GET /atomizations/{id} for the finished payload. If a row for that content+type is already generating, the existing row is returned as-is with 201 — no charge, no second dispatch, and overage_incurred is false.

If the background dispatch itself fails, the row is released back to draft so the (already charged) caller can retry; the retry is free within the same period.

post/atomizations

Request

  • Base URL: https://next.frase.io/api/v1
  • URL: https://next.frase.io/api/v1/atomizations
  • Auth: API key in header X-API-KEY

Request body

content_idstring uuid required

Required. The content item to atomize. Must be a UUID belonging to your organization.

type'linkedin_carousel' | 'twitter_thread' | 'newsletter' | 'instagram_carousel' required

Required. The channel format to produce. The route only checks that this is a string; the enum is enforced one layer down and an unknown value comes back as a 400 with param: "input".

Response

Atomization queued (or an already in-flight one returned unchanged)

Changes

No recorded changes to this operation across all 1 revision of this API.