rreAPI Docs
rreAPI Docs
HomepageWelcome

Image

wan-2-7-imagegpt-image-2gpt-image-2-officialgemini-2.5-flash-image-previewgemini-3-pro-image-previewgemini-3.1-flash-image-previewdoubao-seedream-5-0-liteimagen-4-0

Audio

Mureka V9 Song APIVocal Remover APIMusic Extractor APIVoice Cleaner APIMultistem Splitter APIVoice Changer API

Video

music-video-1-0wan-2-7-videokling-motion-controlpixverse-v6doubao-seedance-2.0doubao-seedance-2.0-officialdoubao-seedance-2.0-betahappyhorse-1.0happyhorse-1.0-officialviduq3grok-imagine-1.0-videoVeo 3.1gemini-omni

Chat

deepseek-v4gpt-5.5gpt-5.4claude-opus-4-8claude-opus-4-7claude-sonnet-4-6

Text

humanizeai-text-detector

Tools

enhance-video-1.0
X (Twitter)

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_KEY

Endpoint

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:

ValueRegister
High SchoolSimple, accessible prose.
UniversityStandard academic / professional.
DoctorateDense, formal, advanced.
JournalistPunchy, news-style.
MarketingPersuasive, 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".

ValueBehavior
QualityLightest touch; stays closest to the source wording.
BalancedDefault trade-off between fidelity and humanization.
More HumanMost aggressive rewrite for the strongest detector evasion.

model_version — optional (string)

Which humanizer model handles the rewrite. Default: "v2".

ValueBest for
v2All languages, medium humanization.
v11English, high humanization.
v11srEnglish, 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:

CodeWhen
20002content, readability, or purpose missing.
20003Invalid enum value, or content under 50 characters.
30001Insufficient credits for the submitted word count.
80001Provider rejected the submission — includes insufficient upstream credits/words.
80003Provider failed while processing the rewrite.

Related

  • AI Text Detector — score text 0–100 for AI authorship. Pair it with humanize for a detect → rewrite → detect QA loop.

Table of Contents

Quick example
Submit response
Authentication
Endpoint
Request body
model — required
content — required (string)
readability — required (string)
purpose — required (string)
strength — optional (string)
model_version — optional (string)
Output
Pricing
Errors
Related