Quick Start

curl -X POST https://texthumanize.link/api/humanize \
  -H "Content-Type: application/json" \
  -d '{"text": "Your AI text here", "lang": "en", "intensity": 60}'
import requests

response = requests.post("https://texthumanize.link/api/humanize", json={
    "text": "Your AI text here",
    "lang": "en",
    "intensity": 60,
    "profile": "web"
})
data = response.json()
print(data["text"])
const response = await fetch("https://texthumanize.link/api/humanize", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ text: "Your AI text here", lang: "en", intensity: 60 })
});
const data = await response.json();
console.log(data.text);
$response = file_get_contents("https://texthumanize.link/api/humanize", false,
    stream_context_create(["http" => [
        "method" => "POST",
        "header" => "Content-Type: application/json",
        "content" => json_encode(["text" => "Your AI text here", "lang" => "en", "intensity" => 60])
    ]])
);
$data = json_decode($response, true);
echo $data["text"];

Authentication

All endpoints work without authentication up to 3 requests/day (guest mode). For unlimited access, register for a free account and create an API key from your dashboard.

Bearer Token

Include your API key in the Authorization header:

HTTP Header
Authorization: Bearer th_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
curl -X POST https://texthumanize.link/api/humanize \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer th_your_api_key_here" \
  -d '{"text": "Your AI text here", "lang": "en"}'
import requests

API_KEY = "th_your_api_key_here"

response = requests.post(
    "https://texthumanize.link/api/humanize",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"text": "Your AI text here", "lang": "en", "intensity": 60}
)
data = response.json()
print(data["text"])
const API_KEY = "th_your_api_key_here";

const response = await fetch("https://texthumanize.link/api/humanize", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${API_KEY}`
    },
    body: JSON.stringify({ text: "Your AI text here", lang: "en" })
});
const data = await response.json();
console.log(data.text);
<?php
$apiKey = 'th_your_api_key_here';
$ch = curl_init('https://texthumanize.link/api/humanize');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $apiKey,
    ],
    CURLOPT_POSTFIELDS => json_encode(['text' => 'Your AI text here', 'lang' => 'en']),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $response['text'];

Rate Limits by Plan

PlanAPI KeysQuotaPAYG Overage
Guest (no account)3 requests/day
Free10 000 chars/day
Starter ($9/mo)1 key500 000 chars/mo$0.001/1K chars
Pro ($19/mo)5 keys3 000 000 chars/mo$0.001/1K chars
Business ($49/mo)20 keysUnlimited

Getting an API Key

  1. Register for a free account (or sign in).
  2. Upgrade to Starter or higher from Pricing.
  3. Go to your Dashboard and click Create API Key.
  4. Copy the key — it's shown only once at creation time.
You're browsing as a guest (3 free requests/day). Register free

Base URL & Rate Limits

https://texthumanize.link/api
ParameterValue
Base URLhttps://texthumanize.link/api
ProtocolHTTPS only
Content-Typeapplication/json
Rate Limit (guest)3 requests/day (session-based, no registration needed)
Rate Limit (free plan)10 000 chars/day, unlimited requests
Rate Limit (starter+)Based on plan quota — Starter: 500K chars/mo, Pro: 3M chars/mo, Business: unlimited
CORSAll origins allowed (*)
AuthenticationOptional Bearer token (Authorization: Bearer th_…) — required for higher limits and paid plans
Max Text LengthNo limit

Endpoints Overview

MethodEndpointDescription
POST/api/humanizeHumanize AI-generated text
POST/api/detectDetect AI-generated text
POST/api/paraphraseParaphrase text
POST/api/tone/analyzeAnalyze text tone
POST/api/tone/adjustAdjust text tone
POST/api/watermark/detectDetect watermarks in text
POST/api/watermark/cleanRemove watermarks from text
POST/api/spinSpin / rewrite text content
POST/api/coherenceAnalyze text coherence
POST/api/readabilityAnalyze readability metrics
POST/api/grammar/checkCheck grammar issues
POST/api/grammar/fixAuto-fix grammar issues
POST/api/perplexityCalculate text perplexity
POST/api/healthContent health score
POST/api/plagiarismCheck originality / plagiarism
GET/api/pingHealth check

Error Handling

All errors return JSON with "ok": false and an "error" message.

HTTP CodeMeaningExample
200Success{"ok": true, ...}
400Bad Request — missing or invalid parameters{"ok": false, "error": "Text is required"}
404Not Found — unknown endpoint{"ok": false, "error": "Unknown action: foo"}
405Method Not Allowed{"ok": false, "error": "Method not allowed"}
401Unauthorized — invalid or missing API key{"ok": false, "error": "Invalid API key"}
429Rate Limited — guest daily limit or plan quota exhausted{"ok": false, "error": "guest_limit_reached", "daily_limit": 3}
500Internal Server Error{"ok": false, "error": "..."}

Endpoint Details

POST /api/humanize Humanize AI-generated text

Transforms AI-generated text into more natural, human-like content. Supports multiple profiles and intensity levels. For texts longer than 3 000 characters, processing is done in chunks automatically.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to humanize
langstringNo"en"Language code: en, uk, ru, de, fr, es, pl, pt, it
intensityintegerNo60Humanization intensity (10–100). Higher = more changes
profilestringNo"web"Profile: general, chat, web, seo, docs, formal

Response Fields

FieldTypeDescription
okbooleanAlways true on success
textstringThe humanized text
langstringLanguage used
profilestringProfile used
intensityintegerIntensity used
change_ratiofloatRatio of text changed (0.0–1.0)
changesarrayList of individual changes made
metrics_beforeobjectAI detection metrics before humanization
metrics_afterobjectAI detection metrics after humanization
elapsed_msfloatProcessing time in milliseconds

Example

Request
curl -X POST https://texthumanize.link/api/humanize \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Machine learning algorithms utilize data to improve performance on specified tasks.",
    "lang": "en",
    "intensity": 70,
    "profile": "web"
  }'
Response
{
  "ok": true,
  "text": "Machine learning algorithms use data to get better at specific tasks.",
  "lang": "en",
  "profile": "web",
  "intensity": 70,
  "change_ratio": 0.31,
  "changes": [
    {"original": "utilize", "replacement": "use", "rule": "simplify_verb"},
    {"original": "improve performance on specified", "replacement": "get better at specific", "rule": "natural_phrasing"}
  ],
  "metrics_before": {"artificiality_score": 45.2, "avg_sentence_length": 11, "burstiness_score": 0.5},
  "metrics_after": {"artificiality_score": 18.7, "avg_sentence_length": 11, "burstiness_score": 0.5},
  "elapsed_ms": 12.3
}
POST /api/detect Detect AI-generated text

Analyzes text to determine the probability that it was generated by AI. Returns multiple detection signals including artificiality score, burstiness, sentence patterns, and per-sentence analysis.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to analyze
langstringNo"en"Language code

Response Fields

FieldTypeDescription
artificiality_scorefloatOverall AI probability (0–100)
avg_sentence_lengthfloatAverage words per sentence
bureaucratic_ratiofloatRatio of formal/bureaucratic words
connector_ratiofloatRatio of transitional connectors
repetition_scorefloatWord repetition metric
burstiness_scorefloatSentence length variation
verdictstring"Human", "Mixed", or "AI"
ai_detectorobjectDetailed detector output (aiProbability, confidence, verdict, entropyScore)
sentencesarrayPer-sentence breakdown
elapsed_msfloatProcessing time

Example

Request
curl -X POST https://texthumanize.link/api/detect \
  -H "Content-Type: application/json" \
  -d '{"text": "Neural networks are a subset of machine learning.", "lang": "en"}'
Response
{
  "ok": true,
  "artificiality_score": 38.2,
  "avg_sentence_length": 9,
  "bureaucratic_ratio": 0.056,
  "connector_ratio": 0,
  "burstiness_score": 0.11,
  "verdict": "Mixed",
  "ai_detector": {"aiProbability": 0, "confidence": 0.1, "verdict": "unknown"},
  "elapsed_ms": 2.6
}
POST /api/paraphrase Paraphrase text

Rewrites text using synonyms and alternative phrasing while preserving meaning. Useful for avoiding duplicate content.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to paraphrase
langstringNo"en"Language code

Response Fields

FieldTypeDescription
textstringThe paraphrased text
change_ratiofloatRatio of words changed
changesarrayList of specific changes
elapsed_msfloatProcessing time

Example

Request
curl -X POST https://texthumanize.link/api/paraphrase \
  -H "Content-Type: application/json" \
  -d '{"text": "The research demonstrates significant improvements.", "lang": "en"}'
Response
{
  "ok": true,
  "text": "The study shows notable improvements.",
  "change_ratio": 0.28,
  "changes": [
    {"original": "research", "replacement": "study"},
    {"original": "demonstrates significant", "replacement": "shows notable"}
  ],
  "elapsed_ms": 8.1
}
POST /api/tone/analyze Analyze text tone

Analyzes the emotional tone and style of text. Returns detected tones with confidence scores.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to analyze
langstringNo"en"Language code

Response Fields

FieldTypeDescription
tonesarrayDetected tones with labels and scores
dominant_tonestringThe primary detected tone
formalityfloatFormality level (0–1)
elapsed_msfloatProcessing time

Example

Response
{
  "ok": true,
  "tones": [{"label": "neutral", "score": 0.72}, {"label": "formal", "score": 0.61}],
  "dominant_tone": "neutral",
  "formality": 0.61,
  "elapsed_ms": 3.2
}
POST /api/tone/adjust Adjust text tone

Rewrites text to match a specified target tone while preserving original meaning.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to adjust
langstringNo"en"Language code
target_tonestringNo"neutral"Target tone: casual, formal, friendly, professional, neutral

Response Fields

FieldTypeDescription
textstringThe tone-adjusted text
original_tonestringDetected original tone
target_tonestringRequested target tone
elapsed_msfloatProcessing time
POST /api/watermark/detect Detect watermarks

Detects statistical watermark patterns that AI text generators embed in their output.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to analyze
langstringNo"en"Language code

Response Fields

FieldTypeDescription
has_watermarkbooleanWhether watermark was detected
confidencefloatDetection confidence (0–1)
patternsarrayDetected watermark patterns
elapsed_msfloatProcessing time
POST /api/watermark/clean Clean watermarks from text

Removes detected watermark patterns from text by replacing watermarked word selections with alternatives.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to clean
langstringNo"en"Language code

Response Fields

FieldTypeDescription
textstringCleaned text
watermarks_removedintegerNumber of watermarks removed
elapsed_msfloatProcessing time
POST /api/spin Spin text content

Rewrites text by replacing words and phrases with synonyms. Useful for creating content variations.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to spin
langstringNo"en"Language code

Response Fields

FieldTypeDescription
textstringThe spun text
changesarrayList of word replacements
elapsed_msfloatProcessing time
POST /api/coherence Analyze text coherence

Evaluates how well sentences in the text flow together. Checks for logical transitions, topic consistency, and structural coherence.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to analyze
langstringNo"en"Language code

Response Fields

FieldTypeDescription
overall_scorefloatOverall coherence (0–1)
sentence_pairsarrayCoherence between adjacent sentences
topic_consistencyfloatTopic consistency score
elapsed_msfloatProcessing time
POST /api/readability Analyze readability

Calculates multiple readability metrics including Flesch-Kincaid, Coleman-Liau, ARI, SMOG, Gunning Fog, and Dale-Chall.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to analyze
langstringNo"en"Language code

Response Fields

FieldTypeDescription
flesch_kincaid_gradefloatFlesch-Kincaid grade level
flesch_kincaidfloatAlias for flesch_kincaid_grade
coleman_liau_indexfloatColeman-Liau Index
arifloatAutomated Readability Index
smog_indexfloatSMOG Index
gunning_fogfloatGunning Fog Index
dale_challfloatDale-Chall Readability Score
avg_word_lengthfloatAverage word length in characters
avg_syllables_per_wordfloatAverage syllables per word
avg_sentence_lengthfloatAverage words per sentence
grade_levelstringHuman-readable grade level
elapsed_msfloatProcessing time

Example

Response
{
  "ok": true,
  "flesch_kincaid_grade": 4.79,
  "coleman_liau_index": 7.43,
  "ari": 4.84,
  "smog_index": 18.77,
  "gunning_fog": 6.22,
  "dale_chall": 7.05,
  "avg_word_length": 4.5,
  "avg_syllables_per_word": 1.36,
  "avg_sentence_length": 11,
  "flesch_kincaid": 4.79,
  "grade_level": "Grade 5",
  "elapsed_ms": 104.3
}
POST /api/grammar/check Check grammar

Checks text for grammar, spelling, and style issues. Returns individual issues with suggestions and also the auto-fixed text.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to check
langstringNo"en"Language code

Response Fields

FieldTypeDescription
issuesarrayArray of issues, each with: rule, message, suggestion, severity, offset, length
textstringThe auto-corrected text
total_issuesintegerTotal number of issues found
elapsed_msfloatProcessing time

Example

Response
{
  "ok": true,
  "issues": [
    {
      "rule": "MORFOLOGIK_RULE_EN_US",
      "message": "Possible spelling mistake found.",
      "suggestion": "their",
      "severity": "error",
      "offset": 15,
      "length": 5
    }
  ],
  "text": "They went to their house after the long journey.",
  "total_issues": 1,
  "elapsed_ms": 89.4
}
POST /api/grammar/fix Fix grammar issues

Automatically fixes grammar and spelling issues in the text. Returns the corrected text directly.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to fix
langstringNo"en"Language code

Response Fields

FieldTypeDescription
textstringThe corrected text
elapsed_msfloatProcessing time
POST /api/perplexity Calculate perplexity

Calculates the perplexity score of text — a measure of how predictable the text is to a language model. Lower perplexity suggests more natural, human-like text.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to analyze
langstringNo"en"Language code

Response Fields

FieldTypeDescription
scorefloatPerplexity score (lower = more natural)
perplexityfloatRaw perplexity value
cross_entropyfloatCross-entropy of the text
naturalnessintegerNaturalness score (0–100)
burstiness_scorefloatPerplexity variance across sentences
verdictstring"natural", "mixed", or "artificial"
sentence_detailsarrayPer-sentence readability data (if available)
elapsed_msfloatProcessing time

Example

Response
{
  "ok": true,
  "cross_entropy": 18.99,
  "perplexity": 523415.54,
  "local_variance": 0,
  "burstiness_score": 0,
  "naturalness": 58,
  "verdict": "mixed",
  "score": 523415.54,
  "elapsed_ms": 71.5
}
POST /api/health Content health score

Provides a comprehensive content quality score combining readability, grammar, uniqueness, AI naturalness, and coherence into a single health grade.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to evaluate
langstringNo"en"Language code

Response Fields

FieldTypeDescription
scorefloatOverall health score (0–100)
gradestringLetter grade: A, B, C, D, F
componentsarrayArray of components: name, score, weight, details
elapsed_msfloatProcessing time

Example

Response
{
  "ok": true,
  "score": 84.7,
  "grade": "B",
  "components": [
    {"name": "readability", "score": 100, "weight": 0.2, "details": "grade_level=10"},
    {"name": "grammar", "score": 100, "weight": 0.25, "details": "0 errors, 0 warnings"},
    {"name": "uniqueness", "score": 96.1, "weight": 0.2, "details": "vocab_richness=0.89"},
    {"name": "ai_naturalness", "score": 50, "weight": 0.2, "details": "verdict=human"},
    {"name": "coherence", "score": 70, "weight": 0.15, "details": "overall=0.00"}
  ],
  "elapsed_ms": 892.2
}
POST /api/plagiarism Check originality

Checks text originality using n-gram fingerprinting and self-similarity analysis. Returns an overall originality score and per-sentence breakdown.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to check

Response Fields

FieldTypeDescription
scoreintegerOriginality score (0–100, higher = more original)
originality_scoreintegerSame as score
verdictstring"original", "partially_original", or "plagiarized"
self_similarityfloatSelf-similarity ratio
ngram_diversityfloatN-gram uniqueness
fingerprint_hashstringContent fingerprint
sentence_originalityarrayPer-sentence originality scores
elapsed_msfloatProcessing time

Example

Response
{
  "ok": true,
  "originality_score": 80,
  "self_similarity": 0,
  "fingerprint_hash": "d791457b0ac29190",
  "ngram_diversity": 1,
  "sentence_originality": [
    {"sentence": "The quick brown fox...", "originality": 100, "is_original": true}
  ],
  "verdict": "original",
  "score": 80,
  "originality": 80,
  "elapsed_ms": 70.2
}
POST /api/quality Quality Score

Unified TextHumanize Quality Score (0–100 + letter grade) across seven dimensions: semantic similarity, naturalness, readability, AI-pattern resistance, watermark cleanliness, edit balance, and processing speed.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to score
langstringNo"en"Language code

Response Fields

FieldTypeDescription
scorefloatComposite quality score (0–1)
score_100floatComposite score on a 0–100 scale
gradestringLetter grade (A+ … F)
verdictstringexcellent | good | fair | poor
dimensionsobjectPer-dimension value, weight, and label
recommendationsarrayActionable next steps
elapsed_msfloatProcessing time
POST /api/audit AI & Watermark Audit

Combined AI-pattern and watermark risk report with highlighted spans and safe suggested actions. Describes internal risk signals; it is not a guarantee of bypassing any external detector.

Request Parameters

ParameterTypeRequiredDefaultDescription
textstringYesThe text to audit
langstringNo"en"Language code

Response Fields

FieldTypeDescription
scorefloatOverall risk (max of AI and watermark risk, 0–1)
aiobjectExplainable AI-detection report (score, verdict, highlighted_spans, reasons)
watermarkobjectUnicode + statistical watermark report (risk_score, has_watermarks, findings)
suggested_actionsarraySafe, neutral remediation steps
elapsed_msfloatProcessing time
GET /api/ping Health check

Simple health check endpoint to verify the API is running.

Example

Response
{
  "ok": true,
  "message": "pong",
  "version": "0.33.0",
  "timestamp": "2025-01-15T12:00:00+00:00"
}

PAYG Billing & Overages

On Starter and Pro plans, API usage exceeding your monthly quota is billed at $0.001 per 1 000 characters (pay-as-you-go). Business plan has unlimited usage with no overage charges.

Payments are processed via Monobank Acquiring (UAH). You can top up your balance or upgrade on the Pricing page.

TypeRateExample
PAYG overage (API)$0.001 / 1K chars100 000 chars = $0.10
Starter plan$9 / month500 000 chars included
Pro plan$19 / month3 000 000 chars included
Business plan$49 / monthUnlimited

Processing...