Rewrite

Rewrite text

Moves a draft toward a writer's measured habits and phrasing, so it reads more human and more like them. Every number, unit, name and link in the source is checked against the output; a changed fact fails the job instead of shipping. Rewrites run as asynchronous jobs; completion time depends on text length, selected stages and queue depth.

POST

Billing. Billed on input words. Requests that fail a strict fidelity check are not billed. Credits & pricing

Body

application/json
textstringrequired

Source text, 20–25,000 words.

voice_idstring

A voice profile created with POST /voices. Omit to use the neutral house voice.

platformenumdefault: generic

Applies platform conventions: length, formatting, hooks, hashtags.

Available options:blogxthreadlinkedinemailgeneric
strengthenumdefault: standard

light edits wording only; deep may restructure the argument.

Available options:lightstandarddeep
fidelityenumdefault: strict

strict fails the request if any protected fact changes; standard returns warnings.

Available options:strictstandard
preservestring[]

Exact strings that must appear unchanged (product names, quotes, prices).

return_diffbooleandefault: false

Include a token-level diff between source and output.

asyncbooleandefault: true

Default. Returns a job immediately (202); the result arrives by webhook or GET /jobs/{job_id}. Set false to hold the connection open for short texts (times out after 120 s).

webhook_urlstring

Called with the finished job. Recommended for production.

Response

200 · application/json
idstring

Job id, e.g. job_01J…

statusenum

queued on creation; poll or wait for the webhook. The finished job's result holds the rewrite.

estimated_secondsinteger

Rough time to completion for this length and strength.

result.textstring

On the finished job: the rewritten text.

result.fidelityobject

On the finished job: status (pass | warn | fail) and every fact check performed.

result.signalsobject

On the finished job: Detect scores for the source and the output, for comparison.

result.usageobject

On the finished job: words_in, words_out and words_billed.

Errors