Rewrite API
Their draft. Your voice.
Rewrite moves your AI-generated content toward your writer's habits and phrases, sounding more human and more like you, formatted for where it will be published, with every number, name and link checked against the source.
- Voice profiles from 2 samples
- Facts locked or the call fails
- Blog, X, LinkedIn, email presets
Draft · AI-assisted
0.94In today's fast-paced world, getting paid on time matters more than ever. That's why we're excited to introduce Smart Reminders, a game-changing way to streamline your invoicing. Invoices unpaid after 14 days are now escalated automatically. In our beta, teams recovered $32,960 in late payments. Ultimately, it's not just about reminders, it's about building lasting client relationships. Learn more at intactvoice.com/reminders.
Headline, short paragraphs, link at the end
Smart Reminders
Late invoices were eating our customers' weeks. So reminders escalate on their own now: anything unpaid after 14 days gets a firmer nudge. Beta teams got $32,960 in late payments back.
Details: intactvoice.com/reminders
Example output on sample text.
How it works
One call. Four things happen.
- 1
Send the draft
Any draft, human or AI-assisted, up to 25,000 words. You get a job id back at once.
text, platform
- 2
Pick the voice
Reference a voice profile learned from that writer's own samples, or use the neutral house voice.
voice_id
- 3
Facts get locked
Numbers, units, names and links are extracted from the source and checked against the output.
fidelity: strict
- 4
Get the receipts
The finished job lists every check it ran and the Detect scores before and after, so you can audit it.
fidelity.checks[]
Interactive example
Same draft. Three writers. Four platforms.
Pick a voice, a platform and a strength. The facts stay highlighted so you can see they never move.
Source draft
In today's fast-paced world, getting paid on time matters more than ever. That's why we're excited to introduce Smart Reminders, a game-changing way to streamline your invoicing. Invoices unpaid after 14 days are now escalated automatically. In our beta, teams recovered $32,960 in late payments. Ultimately, it's not just about reminders, it's about building lasting client relationships. Learn more at intactvoice.com/reminders.
Voice
Platform Hook first, one idea per line
Strength Rewords and reorders sentences in the voice.
{
"voice_id": "voice_8f2k1x",
"platform": "linkedin",
"strength": "standard",
"fidelity": "strict"
}Output · Founder voice
ExampleFounder voice
Founder · 1st
Late invoices were eating our customers' weeks.
So reminders escalate on their own now: anything unpaid after 14 days gets a firmer nudge.
Beta teams got $32,960 in late payments back.
Details: intactvoice.com/reminders
Fidelity
pass 3/3
AI-likelihood
0.94 0.12
Voice match
Voice profiles
A voice is a set of habits.
Adjectives like “warm” or “punchy” don't describe anyone. Sentence spread, punctuation, how a person opens and how they sign off do. We measure those from real samples and apply them on every call.
X post · sample 1 of 6
Shipped the invoice export. 4 days late. Worth it: CSVs now open in Excel without mangling the dates.
Blog · sample 2 of 6
We tried weekly planning for a month. It didn't stick. What replaced it: one doc, three columns, updated on Fridays.
Team email · sample 3 of 6
Quick status: migration is 80% done. Two tables left. I'll post again Thursday.
Founder voice
voice_8f2k1x · 6 samples · 4,210 words
Sentence length
sd 9.4 words · wide spread
Punctuation / 100 words
- Period8.1
- Colon1.4
- Comma3.2
- Question0.3
- Em dash0.0
Opens with
a verb or a fact
Ends on
a status update
Reveals with
a colon
Detect baseline
0.19
2–20 samples
At least 1,200 words in total. More samples, steadier voice.
Style only
Facts in samples are never copied into rewrites.
Included in every plan
Basic API 3, Pro API 15 and Ultra API unlimited.
Fidelity checks
Fluent is easy. Faithful is the job.
A rewrite that sounds better and says something different is worse than no rewrite. Every protected fact is checked, and strict mode fails closed.
Source · support policy
3 protected factsEscalate any ticket older than 14 days to a team lead. Credits above $500 need finance approval. Full policy: intactvoice.com/support-policy.
A typical humanizer
200 OKTickets that have been sitting for more than 14 weeks should go to a team lead. Credits over $500 need a sign-off from finance. See intactvoice.com/support-policy.
IntactVoice · fidelity: strict
Anything open longer than 14 days goes to a team lead. Credits over $500 need finance to approve them first. The full policy is at intactvoice.com/support-policy.
number_unit
14 days
currency
$500
url
link
200 OK · fidelity.status: "pass"
“14 days” → “14 weeks” is a real output from a humanizer we tested. Source: our lab test, Oct 2026. Example text rewritten for illustration.
Numbers & units
14 days stays 14 days. Not two weeks, not 14 weeks.
Money & percentages
$32,960 and 80% come out exactly as they went in.
Names
People, products and places are matched against the source.
Links
URLs are compared character for character.
Your exact strings
Anything in preserve must appear unchanged: quotes, prices, taglines.
Tech specs
- Endpoint
POST /v1/rewrite· modelrewrite-2026-10Base URL
https://api.intactvoice.com/v1- Input
20 to 25,000 words of plain text per request
- Platforms
blogxthreadlinkedinemailgenericEach applies its own length, hook and formatting conventions
- Strength
lightwording only ·standardrewords and reorders ·deepmay restructuredeepis included on Pro API, Ultra API and Enterprise- Fidelity modes
strictfails the request with 422 if any protected fact changes. Not billed.standardreturns the text plus warnings for you to review- Voice profiles
2 to 20 samples, at least 1,200 words in total
Samples shape style only; their facts are never copied into rewrites
Samples are deleted once the profile is built
- Async-first
Every rewrite is a job by default:
202with a job id, then a signed webhook orGET /v1/jobs/{job_id}async: falsewaits on short texts, with a 120 s timeout- Response extras
Token-level diff with
return_diffDetect scores for source and output
words_in, words_out and words_billed on every call
- Turnaround
Depends on length, strength and queue depth; each job returns an estimate
Results arrive by webhook, or poll the job
- Availability
Async jobs wait for worker capacity
- Rate limits
Basic API 60 req/min, Pro API 180 req/min and Ultra API 600 req/min
Enterprise: by agreement
- Billing
1 word of allowance per word rewritten
Requests that fail a strict fidelity check use no words
Past the allowance: pay as you go at $0.55 per 1,000 words, only if you switch it on, with a spend cap
- Your text
Deleted when processing finishes
Results deleted once delivered, or after 60 minutes if not collected
API
The contract.
Everything on this page maps to a documented field. Here's the request, its parameters and the endpoints around it.
curl -X POST https://api.intactvoice.com/v1/rewrite \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Many businesses struggle to create useful blog posts because the writer receives only a topic. Escalate any case older than 14 days.",
"voice_id": "voice_8f2k1x",
"platform": "blog",
"strength": "standard",
"fidelity": "strict"
}'{
"id": "job_01JD4QC7",
"object": "job",
"type": "rewrite",
"status": "queued",
"estimated_seconds": 35,
"poll_url": "/v1/jobs/job_01JD4QC7"
}/rewriteapi.intactvoice.com/v1Moves 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.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Source text, 20–25,000 words. |
| voice_id | string | A voice profile created with POST /voices. Omit to use the neutral house voice. |
| platform | blog | x | thread | linkedin | email | generic | Applies platform conventions: length, formatting, hooks, hashtags.Default generic. |
| strength | light | standard | deep | light edits wording only; deep may restructure the argument.Default standard. |
| fidelity | strict | standard | strict fails the request if any protected fact changes; standard returns warnings.Default strict. |
| preserve | string[] | Exact strings that must appear unchanged (product names, quotes, prices). |
| return_diff | boolean | Include a token-level diff between source and output.Default false. |
| async | boolean | 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).Default true. |
| webhook_url | string | Called with the finished job. Recommended for production. |
Billed on input words. Requests that fail a strict fidelity check are not billed.
FAQ
Questions, answered.
Something missing? Email support@intactvoice.com.
Your writers, at scale.
Create a voice from two samples, send a draft, and read the receipts. Annual plans cost 10 months' price for 12.
- Annual: 2 months free
- Failed fidelity checks use no words
- Cancel anytime