humanize
Async AI humanizer — rewrite AI-generated text so it reads as human-written and bypasses AI detectors, with tunable readability, purpose, strength, and model version. Billed per word.
humanize is a single async endpoint that takes AI-generated text and returns
a rewrite that reads as human-written — varied rhythm, natural transitions, no
tell-tale AI cadence — built to pass common AI detectors. Tune the rewrite
with readability, purpose, strength, and model_version. See current
pricing on the model page.
Quick example
curl https://reapi.ai/api/v1/humanize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "humanize",
"content": "Artificial intelligence has fundamentally transformed the way modern enterprises approach data-driven decision making.",
"readability": "University",
"purpose": "General Writing",
"strength": "Balanced",
"model_version": "v2"
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/humanize",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "humanize",
"content": "Artificial intelligence has fundamentally transformed the way modern enterprises approach data-driven decision making.",
"readability": "University",
"purpose": "General Writing",
"strength": "Balanced",
"model_version": "v2",
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/humanize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "humanize",
content:
"Artificial intelligence has fundamentally transformed the way modern enterprises approach data-driven decision making.",
readability: "University",
purpose: "General Writing",
strength: "Balanced",
model_version: "v2",
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "humanize",
"content": "Artificial intelligence has fundamentally transformed the way modern enterprises approach data-driven decision making.",
"readability": "University",
"purpose": "General Writing",
"strength": "Balanced",
"model_version": "v2",
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/humanize", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Submit response
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "humanize",
"status": "processing",
"created_at": 1735000000
}Poll GET /api/v1/tasks/{id} until status === "completed". The completed
payload's output.humanized_text holds the rewritten text. A rewrite usually
finishes in a few seconds.
Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/humanize
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; polling
the task endpoint returns the same envelope until completion. Polling does
not consume credits.
Request body
model — required
Always "humanize".
content — required (string)
The AI-generated text to humanize. Minimum 50 characters. Longer text takes proportionally longer to return.
readability — required (string)
Target reading level of the rewrite. One of:
| Value | Register |
|---|---|
High School | Simple, accessible prose. |
University | Standard academic / professional. |
Doctorate | Dense, formal, advanced. |
Journalist | Punchy, news-style. |
Marketing | Persuasive, brand-friendly. |
purpose — required (string)
What the text is for — tunes tone and structure. One of: General Writing,
Essay, Article, Marketing Material, Story, Cover Letter, Report,
Business Material, Legal Material.
strength — optional (string)
How aggressively to rewrite. Default: "Balanced".
| Value | Behavior |
|---|---|
Quality | Lightest touch; stays closest to the source wording. |
Balanced | Default trade-off between fidelity and humanization. |
More Human | Most aggressive rewrite for the strongest detector evasion. |
model_version — optional (string)
Which humanizer model handles the rewrite. Default: "v2".
| Value | Best for |
|---|---|
v2 | All languages, medium humanization. |
v11 | English, high humanization. |
v11sr | English, strongest humanization (slightly slower). |
model_version maps to the underlying engine's model selector. reAPI uses
model at the top level to route the request, so this knob is exposed as a
separate model_version field to avoid the name collision — its values are
unchanged.
Output
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "humanize",
"status": "completed",
"created_at": 1735000000,
"output": {
"humanized_text": "AI has reshaped how today's companies make decisions with data..."
},
"error": null
}output.humanized_text is plain text — drop it straight back into your
document or CMS.
Pricing
Billed per word of the content you submit, with a 50-word floor
(text under 50 words is charged as 50 words). Polling the task does not add
any charge. Failed and rejected requests are refunded automatically.
1 credit = $0.001 USD. See the live banner on the
model page for the current per-1,000-words
rate in credits.
Errors
Standard envelope:
{
"error": {
"code": 20003,
"message": "content must be at least 50 characters",
"request_id": "req_..."
}
}Common cases:
| Code | When |
|---|---|
20002 | content, readability, or purpose missing. |
20003 | Invalid enum value, or content under 50 characters. |
30001 | Insufficient credits for the submitted word count. |
80001 | Provider rejected the submission — includes insufficient upstream credits/words. |
80003 | Provider failed while processing the rewrite. |
Related
- AI Text Detector — score text 0–100 for AI authorship.
Pair it with
humanizefor a detect → rewrite → detect QA loop.