Content

Import an existing article

Create a Frase document from an article written elsewhere, then score it and build its optimization brief. Supply the body directly (body + body_format) or a source_url for Frase to fetch — the two are mutually exclusive. Takes one article credit per (article, billing period), so regenerating the same article later in the same period does not charge again.

Retries are safe. Send an Idempotency-Key header and a repeated request returns 200 with the original content_id instead of importing again. Without the header the key is derived from the request body, so an identical retry is still deduplicated. This matters because a request can be retried automatically on a 5xx, and each import would otherwise take its own credit.

post/content/import

Request

  • Base URL: https://next.frase.io/api/v1
  • URL: https://next.frase.io/api/v1/content/import
  • Auth: one of:
    • API key in header X-API-KEY
    • HTTP bearer

Headers

Idempotency-Keystring

Opaque value making this import replay-safe. Reuse it to retry; change it to import the same article again deliberately.

Request body

titlestring required

The article's title.

bodystring

The article itself. Mutually exclusive with source_url.

body_format'markdown' | 'html'

How to read body. Declared rather than sniffed: markdown containing an inline <p> would otherwise be mis-parsed, and the scorer branches on the same signal.

source_urlstring uri

A page for Frase to fetch instead of sending a body. Mutually exclusive with body.

target_keywordsstring[]

Keywords the article targets; the first is the primary. Without these the SEO score is computed against an empty set and roughly a third of it is unreachable, so supply them if you have them.

site_idstring uuid

Site to attach the article to. Omitted, it draws on the org-wide article budget rather than a per-site one.

content_typestring

e.g. blog_post. Auto-detected when omitted.

target_word_countinteger
competitor_urlsstring[]

Competing pages to research against. Each is validated; a refusal names the offending index.

Response

Already imported. Returned when an identical request is retried — matched on the Idempotency-Key header, or on a hash of the request body when that header is absent. The same content_id comes back, no second article credit is taken, and no fetch, scoring or research work is repeated. Note there is no overage_incurred field: nothing was billed on this call.

Changes

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