Rewrite + Detect API

The rewrite and detection API for teams that publish at scale.

Send a draft and get a job ID back at once. When the job finishes, your webhook receives copy that sounds more like your writer, with every number, name and link checked against the source and a before-and-after detection score attached.

  • Signed webhooks
  • Fact check on every rewrite
  • Cancel anytime
  • Annual: 2 months free

job_01JD4QC7 · rewrite

sending

Request

POST /v1/rewrite
Idempotency-Key: post-2291
{
"text": "In today's fast-paced world…",
"voice_id": "voice_8f2k1x",
"platform": "blog",
"fidelity": "strict",
"webhook_url": "https://example.com/hooks/rw"
}

Response

{
"id": "job_01JD4QC7",
"status": "queued",
"estimated_seconds": 35
}
  1. Job queued

    t+0.1 s

    job_01JD4QC7 · est. 35 s · 22 words in

  2. Rewriting in Founder voice

    t+34.2 s
    00:00
  3. Fact checks · strict

    3 / 3
    14 days$32,960link
  4. Detection, before → after

    before / after
    Source
    –
    Output
    –
  5. Webhook delivered

    200 OK

    POST example.com/hooks/rw · job.succeeded · signed v1

Sending request…

Example job on sample text

The problem

Raw AI copy sounds like everyone.

Readers, editors and platforms have learned the tells: the stock opener, the hype words, the tidy “it's not X, it's Y” close. Publish it at volume and every page starts to sound like every other page, including your competitors'.

Raw AI draft

ai_likelihood 0.93

In today's fast-paced digital landscape, onboarding matters more than ever. That's why we're thrilled to unveil our revolutionary checklist feature, designed to streamline your workflow. New accounts that stall after 14 days now get a guided nudge. In the beta, activation rose 18%. Ultimately, it's not just about checklists, it's about empowering your team to thrive.

Stock openerHype vocabularyNot X, it's YUniform rhythm

IntactVoice · voice-matched

ai_likelihood 0.16

Most new accounts that churn do it quietly. So we built a nudge: if an account stalls after 14 days, the checklist shows the one step they skipped. In the beta, activation went up 18%. That's the whole feature, and it's live today.

Founder voice14 days18%Example

The tells are structural, not just word choice.

AI postsHuman posts

Ends by restating the thesis

77%
12%

Has a summary section

88%
27%

Gives the reader no way to act

97%
38%

Share of B2B blog posts showing each pattern. Sitefire / SlopShape v3, arXiv 2609.15369, Sept 2026.

Fidelity

“14 days” stays “14 days”.

Every number, unit, name and link is pulled from the source and checked against the output. In strict mode a changed fact fails the job with a 422: no text ships and nothing is billed.

Source

14 days

What your draft says

A humanizer we tested

14 weeks

Fluent. Also wrong.

IntactVoice · strict

14 days

fidelity.status: pass

A humanizer we tested changed “14 days” to “14 weeks”. Our lab test, Oct 2026.

Traffic, reach and trust

Write for the people who judge it.

Search engines, feeds and expert readers are all pushing the same way: toward writing that is specific, accurate and sounds like a person. The API moves your pipeline in that direction and shows its work on every job.

Search

Search says it rewards people-first pages.

Google says its systems aim to reward helpful, reliable content made for people, and its spam policies target content produced at scale mainly to rank, however it was made.

  • Written for a reader, not a keyword
  • Specific, checkable facts
  • A recognisable point of view

Google Search Central: “Creating helpful, reliable, people-first content” and Spam policies (scaled content abuse).

Social feeds

~0%

fewer views for posts members flag with LinkedIn's “seems like AI slop” report, according to LinkedIn.

Typical post
Flagged as AI slop

LinkedIn, via TechCrunch. “Seems like AI slop” report launched 30 Jul 2026.

Expert readers

0.0%

of AI-written articles were caught by readers who use AI heavily, with only 4.0% false positives. Everyone else was at chance.

92.7%

Heavy AI users

56.7%

Everyone else

Russell, Karpinska & Iyyer, ACL 2025.

What every job gives you

  • A score for how the text reads to AI detectors, before and after the rewrite
  • The sentence-level signals behind that score
  • Every fact check that ran, and a 422 if one fails

What we won't promise

  • Rankings, traffic or reach. Those depend on what you publish and who it's for
  • Any particular result from a third-party detector
  • That rewriting makes thin content worth reading

What you can build

Six pipelines teams ship first.

Two endpoints, a job model and webhooks cover most publishing workflows. These are the ones we see most.

pass422DraftRewriteFacts ✓PublishEditor

A pre-publish step in your CMS

Add one step between “save draft” and “publish”. Drafts come back in the author's voice with every fact checked; anything that fails goes to an editor, not the site.

POST /rewritefidelity: strictwebhook
< 0.3GeneratorRewriteDetectQueue

Auto-blog pipelines

Generators make volume. The API makes each post read like your publication, scores it, and stops any post whose numbers moved before it reaches the schedule.

Async jobsIdempotency-KeyPOST /detect
Client AClient BClient CRewriteVoice AVoice BVoice C

Agency client workflows

One voice profile and one API key per client. Each brand keeps its own voice, and usage splits by key so billing clients back is a single query.

voice_idGET /usage?group_by=key
text + voice_idwebhookYour editorRewrite

A feature inside your product

Put a “match my voice” button in your editor, CRM or CMS. Using the API inside your own product is fine on any plan; offering it as a stand-alone rewriting service needs reseller terms.

POST /voicesPOST /rewrite
< 0.3≥ 0.3DraftDetectPublishRewrite

A detection QA gate

Score every page before it ships, with the sentence-level reasons. Anything over your threshold goes back for a rewrite or a human read, automatically.

POST /detectcalibrate_toexplain: true
links ✓NotesRewriteESP

Newsletter tooling

Turn rough notes into an issue that sounds like the editor who signs it, formatted for email, with every link and number checked before it goes to your list.

platform: emailpreserve[]

Integrations

Fits the stack you already publish from.

If it can send a webhook or make an HTTP request, it can call the API. No plugin to install and nothing to migrate.

WordPress

REST API + a webhook on save

via API / webhooks

Webflow

CMS API + site webhooks

via API / webhooks

Contentful

Webhooks + Management API

via API / webhooks

Sanity

GROQ webhooks + mutations

via API / webhooks

Make

HTTP module

via API / webhooks

Zapier

Webhooks by Zapier

via API / webhooks

n8n

HTTP Request node

via API / webhooks

Custom code

REST API from any language

via API / webhooks

Names are trademarks of their owners. These are not native plugins or partnerships: each connects through our REST API and signed webhooks.

Example · WordPress

Draft in, voice-matched draft back. Two small handlers.

  1. 1

    WordPress fires a webhook

    On save, on “pending”, or from a bulk action. Your handler sends the draft with an Idempotency-Key.

  2. 2

    We run the job

    Rewrite in the author's voice, check every fact, score source and output.

  3. 3

    A signed webhook updates the draft

    Pass: the draft is updated with the new text and scores. Fail: it's flagged for an editor, unchanged.

The same two steps work with Webflow's CMS API, Contentful or Sanity webhooks, or an HTTP step in Make, Zapier or n8n.

wordpress-hooks.ts
// 1. WordPress calls this when a post moves to "pending".
export async function POST(req: Request) {
  const { post_id, content } = await req.json();

  const res = await fetch("https://api.intactvoice.com/v1/rewrite", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.API_KEY}`,
      "Content-Type": "application/json",
      "Idempotency-Key": `wp-post-${post_id}`, // retries never bill twice
    },
    body: JSON.stringify({
      text: content,
      voice_id: "voice_8f2k1x",
      platform: "blog",
      fidelity: "strict",
      webhook_url: `https://example.com/hooks/rewrite?post=${post_id}`,
    }),
  });

  const job = await res.json(); // 202 · { id: "job_…", status: "queued" }
  return Response.json({ job: job.id });
}

Partners & resellers

Building a product on IntactVoice? Let's put it in writing.

Using the API inside your own product is fine on any plan. Reselling it, white-labelling it or offering it as a stand-alone service needs a written reseller agreement: our Acceptable Use Policy doesn't allow unapproved resale. Reseller terms are part of Enterprise.

  • Volume pricing above 1M words
  • Reseller and white-label terms
  • Custom contract terms

Fine on any API plan

  • A rewrite or detect step inside your own CMS, app or pipeline
  • Agency work for clients, under your API key
  • A feature inside a larger product your customers already use

Needs a reseller agreement

  • Reselling or sublicensing API access
  • White-labelling it under your own brand
  • A stand-alone rewriting, “humanizing” or detection service

Volume pricing and white-label terms

API pricing

Priced in words. Billed for what ships.

One allowance covers Rewrite and Detect. Rewrite uses one word per word; Detect uses one word per five scanned. Jobs that fail a strict fact check aren't billed.

Prices in USD. Taxes may apply. Renews automatically; cancel anytime in Billing. All payments are final.

Basic API

Automate one publishing workflow.

$74.17/ mo$89

Billed $890 yearly · save $178

Choose Basic API

200k words / month

Articles≈ 230 / moRate limit60 req/minVoices3

Includes

  • REST API: Rewrite + Detect
  • Light and standard strength
  • Fact check and 422 fail-closed
  • Usage dashboard and alerts
  • Email support

After 200k words: $0.55 per 1,000, only if you switch it on, with a spend cap.

Pro API

Recommended

For content teams shipping every day.

$157.50/ mo$189

Billed $1,890 yearly · save $378

Choose Pro API

600k words / month

Articles≈ 700 / moRate limit180 req/minVoices15

Everything in Basic API, plus

  • Deep mode for heavy AI drafts
  • Detect calibrated to a writer
  • 15 voice profiles
  • Priority email support

After 600k words: $0.55 per 1,000, only if you switch it on, with a spend cap.

Ultra API

Best value

For high-volume and product integrations.

$324.17/ mo$389

Billed $3,890 yearly · save $778

Choose Ultra API

1M words / month

Articles≈ 1,150 / moRate limit600 req/minVoicesUnlimited

Everything in Pro API, plus

  • Highest queue priority
  • Unlimited voice profiles
  • Priority support

After 1M words: $0.55 per 1,000, only if you switch it on, with a spend cap.

Enterprise

Custom volume and contract terms, and a reseller agreement if you're building a product on top of IntactVoice.

Talk to us
  • Volume pricing above 1M words

Pay as you go

For the month that runs long. Only if you switch it on, with a monthly spend cap. Off, or at the cap, calls return 402.

$0.55per 1,000 words after your allowance

  • Past 151,515 extra words a month, Pro API costs less than Basic API plus pay as you go.
  • Past 303,030 extra words a month, Ultra API costs less than Pro API plus pay as you go.

Compare API plans

Full comparison
FeatureBasic APIPro APIRecommendedUltra API
Words / month200k600k1M
Price / month, billed yearly$74.17$157.50$324.17
Rate limit60 req/min180 req/min600 req/min
Voice profiles315Unlimited
Rewrite strengthLight, standard+ Deep+ Deep
Fact check, 422 fail-closed
Detect with sentence-level reasons
Async jobs (poll)
Signed webhooks
Detect calibrated to a writer
Usage dashboard and alerts
Queue priorityStandardStandardHighest
SupportEmailPriority emailPriority
After your allowance (opt-in, capped)$0.55 / 1k words$0.55 / 1k words$0.55 / 1k words

Billing questions, plan changes and the full comparison are on the pricing page.

For developers

One call. Receipts included.

Send a draft, get a job back at once, and receive the finished rewrite with its fact checks and before-and-after scores.

  • REST and JSON

    Plain HTTPS from any language. JSON in, JSON out, dated model versions like rewrite-2026-10.

  • Async jobs, signed webhooks

    Every rewrite returns 202 and a job. The result arrives on an HMAC-signed webhook, or poll GET /jobs/{id}.

  • Idempotency keys

    Send Idempotency-Key and a retry within 24 hours returns the original job instead of billing twice.

  • Usage API

    Words and requests by day, endpoint or key from GET /usage.

  • Test keys

    Test keys return sample results without running the models or using words, so you can wire up a pipeline before you go live.

  • Usage dashboard

    Keys, request logs and usage in one place. Open the dashboard.

POST /v1/rewrite
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"
}'

202Immediately: a job

{
  "id": "job_01JD4QC7",
  "object": "job",
  "type": "rewrite",
  "status": "queued",
  "estimated_seconds": 35,
  "poll_url": "/v1/jobs/job_01JD4QC7"
}

LaterThe result, by webhook or GET /jobs/{id}

{
  "id": "rw_01JD4Q8ZK3",
  "object": "rewrite",
  "model": "rewrite-2026-10",
  "duration_ms": 34210,
  "text": "Most blog posts go wrong before anyone writes a word: the writer gets a topic and nothing else. If a case is older than 14 days, escalate it.",
  "fidelity": {
    "status": "pass",
    "checks": [
      {
        "type": "number_unit",
        "source": "14 days",
        "output": "14 days",
        "ok": true
      }
    ],
    "changed_facts": []
  },
  "signals": {
    "source": {
      "ai_likelihood": 0.91
    },
    "output": {
      "ai_likelihood": 0.14
    }
  },
  "usage": {
    "words_in": 22,
    "words_out": 28,
    "words_billed": 22
  }
}

How long a job takes depends on its length, the rewrite strength and how busy the queue is. Each job reports an estimate.

Reliability & data

Built to sit in the critical path of publishing.

Every job is queued, retried if a worker is down and charged once. Your text is used for the job and then deleted.

  1. Request accepted

    202 and a job ID. Words are reserved, not charged.

  2. Processing

    Rewrite, fact check and scoring. The input is deleted when this finishes.

  3. Result waiting

    Encrypted at rest until your webhook receives it or you fetch it, for at most 60 minutes.

  4. Deleted

    Request logs keep metadata only: time, endpoint, status, word count and timing.

Encrypted

HTTPS in transit. Database connections verify TLS. API keys are stored hashed and shown once.

No training on your data

We don't train models on your content.

Text deleted after the job

Inputs are deleted when processing finishes. Results are deleted once delivered, or after 60 minutes if nobody collects them.

Jobs survive outages

If inference capacity is briefly unavailable, accepted jobs wait in the queue and retry instead of failing.

We don't offer a contractual uptime guarantee at launch. Editing runs through OpenAI's API with storage off; its abuse monitoring can keep content for up to 30 days.

FAQ

Questions, answered.

Something missing? Email support@intactvoice.com or read the docs.

The demo on the homepage shows a full rewrite on sample text, and test keys return sample results for free so you can build against the API first. Every API plan is paid, billed monthly or yearly, and you can cancel anytime. All payments are final; see Payments and refunds.

Publish at volume. Sound like yourselves.

API plans from $89 a month. Wire up one webhook this week and every draft that leaves your pipeline arrives voice-matched, fact-checked and scored.

  • Cancel anytime
  • Annual: 2 months free
  • Failed fact checks aren't billed