Writer & Humanizer
curl --request POST \
--url https://www.stealthgpt.ai/api/stealthify \
--header 'Content-Type: application/json' \
--header 'api-token: <api-token>' \
--data '
{
"prompt": "<string>",
"rephrase": true,
"model": "<string>",
"tone": "<string>",
"writingMode": "<string>",
"mode": "<string>",
"qualityMode": "<string>",
"business": true,
"isMultilingual": true,
"detector": "<string>",
"outputFormat": "<string>"
}
'import requests
url = "https://www.stealthgpt.ai/api/stealthify"
payload = {
"prompt": "<string>",
"rephrase": True,
"model": "<string>",
"tone": "<string>",
"writingMode": "<string>",
"mode": "<string>",
"qualityMode": "<string>",
"business": True,
"isMultilingual": True,
"detector": "<string>",
"outputFormat": "<string>"
}
headers = {
"api-token": "<api-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-token': '<api-token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
rephrase: true,
model: '<string>',
tone: '<string>',
writingMode: '<string>',
mode: '<string>',
qualityMode: '<string>',
business: true,
isMultilingual: true,
detector: '<string>',
outputFormat: '<string>'
})
};
fetch('https://www.stealthgpt.ai/api/stealthify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.stealthgpt.ai/api/stealthify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => '<string>',
'rephrase' => true,
'model' => '<string>',
'tone' => '<string>',
'writingMode' => '<string>',
'mode' => '<string>',
'qualityMode' => '<string>',
'business' => true,
'isMultilingual' => true,
'detector' => '<string>',
'outputFormat' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api-token: <api-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.stealthgpt.ai/api/stealthify"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"rephrase\": true,\n \"model\": \"<string>\",\n \"tone\": \"<string>\",\n \"writingMode\": \"<string>\",\n \"mode\": \"<string>\",\n \"qualityMode\": \"<string>\",\n \"business\": true,\n \"isMultilingual\": true,\n \"detector\": \"<string>\",\n \"outputFormat\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api-token", "<api-token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.stealthgpt.ai/api/stealthify")
.header("api-token", "<api-token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"rephrase\": true,\n \"model\": \"<string>\",\n \"tone\": \"<string>\",\n \"writingMode\": \"<string>\",\n \"mode\": \"<string>\",\n \"qualityMode\": \"<string>\",\n \"business\": true,\n \"isMultilingual\": true,\n \"detector\": \"<string>\",\n \"outputFormat\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.stealthgpt.ai/api/stealthify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-token"] = '<api-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"rephrase\": true,\n \"model\": \"<string>\",\n \"tone\": \"<string>\",\n \"writingMode\": \"<string>\",\n \"mode\": \"<string>\",\n \"qualityMode\": \"<string>\",\n \"business\": true,\n \"isMultilingual\": true,\n \"detector\": \"<string>\",\n \"outputFormat\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"result": "<string>",
"howLikelyToBeDetected": 123,
"remainingCredits": 123,
"wordsSpent": 123,
"billingMode": "<string>",
"meteredChargedCredits": 123,
"tokensSpent": 123,
"totalTokensSpent": 123,
"systemTokensSpent": 123
}Endpoints
Writer & Humanizer
Generate or rephrase content with the /api/stealthify endpoint
POST
/
api
/
stealthify
Writer & Humanizer
curl --request POST \
--url https://www.stealthgpt.ai/api/stealthify \
--header 'Content-Type: application/json' \
--header 'api-token: <api-token>' \
--data '
{
"prompt": "<string>",
"rephrase": true,
"model": "<string>",
"tone": "<string>",
"writingMode": "<string>",
"mode": "<string>",
"qualityMode": "<string>",
"business": true,
"isMultilingual": true,
"detector": "<string>",
"outputFormat": "<string>"
}
'import requests
url = "https://www.stealthgpt.ai/api/stealthify"
payload = {
"prompt": "<string>",
"rephrase": True,
"model": "<string>",
"tone": "<string>",
"writingMode": "<string>",
"mode": "<string>",
"qualityMode": "<string>",
"business": True,
"isMultilingual": True,
"detector": "<string>",
"outputFormat": "<string>"
}
headers = {
"api-token": "<api-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-token': '<api-token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
rephrase: true,
model: '<string>',
tone: '<string>',
writingMode: '<string>',
mode: '<string>',
qualityMode: '<string>',
business: true,
isMultilingual: true,
detector: '<string>',
outputFormat: '<string>'
})
};
fetch('https://www.stealthgpt.ai/api/stealthify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.stealthgpt.ai/api/stealthify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => '<string>',
'rephrase' => true,
'model' => '<string>',
'tone' => '<string>',
'writingMode' => '<string>',
'mode' => '<string>',
'qualityMode' => '<string>',
'business' => true,
'isMultilingual' => true,
'detector' => '<string>',
'outputFormat' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api-token: <api-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.stealthgpt.ai/api/stealthify"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"rephrase\": true,\n \"model\": \"<string>\",\n \"tone\": \"<string>\",\n \"writingMode\": \"<string>\",\n \"mode\": \"<string>\",\n \"qualityMode\": \"<string>\",\n \"business\": true,\n \"isMultilingual\": true,\n \"detector\": \"<string>\",\n \"outputFormat\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api-token", "<api-token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.stealthgpt.ai/api/stealthify")
.header("api-token", "<api-token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"rephrase\": true,\n \"model\": \"<string>\",\n \"tone\": \"<string>\",\n \"writingMode\": \"<string>\",\n \"mode\": \"<string>\",\n \"qualityMode\": \"<string>\",\n \"business\": true,\n \"isMultilingual\": true,\n \"detector\": \"<string>\",\n \"outputFormat\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.stealthgpt.ai/api/stealthify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-token"] = '<api-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"rephrase\": true,\n \"model\": \"<string>\",\n \"tone\": \"<string>\",\n \"writingMode\": \"<string>\",\n \"mode\": \"<string>\",\n \"qualityMode\": \"<string>\",\n \"business\": true,\n \"isMultilingual\": true,\n \"detector\": \"<string>\",\n \"outputFormat\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"result": "<string>",
"howLikelyToBeDetected": 123,
"remainingCredits": 123,
"wordsSpent": 123,
"billingMode": "<string>",
"meteredChargedCredits": 123,
"tokensSpent": 123,
"totalTokensSpent": 123,
"systemTokensSpent": 123
}The
/api/stealthify endpoint is the core of the StealthGPT API, allowing you to generate new content or rephrase existing text to be undetectable by AI detection tools.
model is required. You must explicitly pass "super", "standard", or "lite". Requests that omit model return 400 Bad Request. There is no default, please pick one.For integrations that cannot keep a request open while humanization runs, use the async
POST /api/stealthify/runs flow. This synchronous endpoint remains unchanged for existing API clients.Humanization automatically strips invisible AI text watermarks. Claude and Gemini embed a statistical pattern in their word choices, invisible to a reader, but it travels with copy and paste and can survive light editing. The humanizer rewrites at the sentence and structure level rather than swapping synonyms, which is the category of change those marks are not built to survive. Meaning stays intact; Claude, Gemini SynthID, and other invisible text watermarks do not.
Request Parameters
string
required
Your unique API authentication token. You can find this in your StealthGPT dashboard under the API Key tab.
string
required
When
rephrase is false, the topic or instructions for content generation. When rephrase is true, the existing text to humanize — send only that source text, with no instruction wrappers. Maximum 3,000 words per request.boolean
required
Set to
true to rephrase the provided prompt text, or false to generate new content based on the promptstring
required
Selects the humanizer model. Required — you must pass one of
"super", "standard", or "lite". Omitting model returns 400. heavy is deprecated and routes to standard. See Models for a full comparison.Show Available model options
Show Available model options
Flagship. Next-gen humanizer billed at $0.05 / 100 words. Highest bypass rate; the structural rewrite also strips invisible text watermarks such as Claude’s mark and Gemini’s SynthID.
Billed at $0.20 / 1,000 words. Previous-generation full rewrite; removes invisible text watermarks such as Claude’s mark and Gemini’s SynthID.
Fast AI-smell cleanup that keeps the text mostly unchanged. Billed at $0.20 / 1,000 words. This mode is not designed to bypass AI detectors.
deprecated
Deprecated alias of
standard. Kept for backward compatibility and billed at the standard rate.Humanize / rephrase input: when
rephrase is true, put only the source text in prompt. Do not add instructions such as “Humanize the following text”, “Rewrite this to sound more human”, or “Make this undetectable”. Those prefixes confuse the model and hurt output quality. Control style with API parameters (tone, model, qualityMode, etc.) instead. Instruction-style prompts are for generation (rephrase: false) only.string
Controls the style and complexity of generated content when
writingMode is essay (ignored in default mode and when rephrase is true)Show Available tone options
Show Available tone options
default
Ideal for casual writing. Easy to read and understand, suitable for general purposes.
Mimics the style of high school level writing. May contain grammatical errors. Scores high on Flesch-Kincaid Readability.
Semi-complex style typical of college-level writing. May include minor grammatical errors. Moderate Flesch-Kincaid Readability score.
Complex, sophisticated style. No grammatical errors. Low Flesch-Kincaid Readability score, ideal for academic writing.
string
default:"essay"
Controls how content is generated when
rephrase is false. Has no effect when rephrase is true.Show Available writingMode options
Show Available writingMode options
string
string
default:"quality"
boolean
default:"false"
deprecated
Removed. The 10x premium engine has been replaced by the Stealth Agent endpoint, which runs a full research → write → humanize pipeline (with optional fact-checking and image generation).The
business field is still accepted in the request body for backward compatibility, but it has no effect: all /api/stealthify requests run on the standard engine and are billed at the standard rate. For premium-quality, long-form output, send your prompt to POST /api/stealthify/agent instead. See the Stealth Agent overview and guide.boolean
default:"true"
Controls how non-English input is returned after processing.
When
true (default), non-English input will be kept in its localized language.
When false, non-English input will be returned in English.string
default:"turnitin"
deprecated
Deprecated. Retained for backward compatibility only and has no effect on model behavior.
You can safely omit this field; all requests use the same model.
string
default:"text"
Response
string
The generated or rephrased content
number
Human-likeness score from 0 to 100. Higher is better: a higher score means the content reads as more human and is less likely to be flagged as AI; a lower score means it is more likely to be detected as AI-generated. (The field name is historical — treat a higher value as the better result.)
number
Prepaid word balance remaining after this request.
number
Words charged for this request.
string
Whether the request was billed from prepaid words (
prepaid) or pay-as-you-go metered billing (payg).number
If billed via pay-as-you-go, words added to metered usage for this request (0 when billed from prepaid).
number
deprecated
Number of tokens used for the content generation or rephrasing
number
deprecated
Total number of tokens consumed by this request
number
deprecated
Number of tokens used by the system for processing the request
Example Request
curl --location 'https://www.stealthgpt.ai/api/stealthify' \
--header 'api-token: YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "Explain the benefits of renewable energy",
"rephrase": false,
"writingMode": "essay",
"tone": "College",
"mode": "Medium",
"qualityMode": "quality",
"model": "super",
"isMultilingual": true,
"outputFormat": "markdown"
}'
import requests
response = requests.post(
'https://www.stealthgpt.ai/api/stealthify',
headers={
'api-token': 'YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
json={
'prompt': 'Explain the benefits of renewable energy',
'rephrase': False,
'writingMode': 'essay',
'tone': 'College',
'mode': 'Medium',
'qualityMode': 'quality',
'model': 'super',
'isMultilingual': True,
'outputFormat': 'markdown'
}
)
print(response.json())
const axios = require('axios');
axios.post('https://www.stealthgpt.ai/api/stealthify', {
prompt: 'Explain the benefits of renewable energy',
rephrase: false,
writingMode: 'essay',
tone: 'College',
mode: 'Medium',
qualityMode: 'quality',
model: 'super',
isMultilingual: true,
outputFormat: 'markdown'
}, {
headers: {
'api-token': 'YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
}).then(response => {
console.log(response.data);
});
Super is billed at 0.05/100words∗∗(vs∗∗0.20 / 1,000 words for
standard and lite). heavy is deprecated and routes to standard.Example Response
{
"result": "Renewable energy offers several significant advantages in our modern world. Students and researchers point to multiple benefits like reduced carbon emissions, which helps fight climate change. These energy sources, including solar and wind power, represent inexhaustible resources unlike finite fossil fuels. Many communities find economic advantages through job creation in the growing renewable sector. Additionally, these technologies typically require less maintenance after installation and reduce dependency on foreign energy imports. Advancements continue making these options more cost-competitive, with prices dropping significantly over recent years. While challenges exist in implementation, the long-term benefits to environmental health, economic stability, and energy independence make renewable energy sources increasingly attractive options for our global energy needs.",
"howLikelyToBeDetected": 92,
"wordsSpent": 260,
"remainingCredits": 985000,
"billingMode": "prepaid",
"meteredChargedCredits": 0,
"systemTokensSpent": 0,
"tokensSpent": 0,
"totalTokensSpent": 0
}
Usage Notes
- For optimal performance, we recommend keeping responses under 2,000 characters
- When
rephraseistrue, send only the source text inprompt— no “humanize / rewrite / make undetectable” wrappers - When
rephraseisfalse, the quality and relevance of generated content depends on the phrasing of your prompts - Humanization automatically strips invisible AI text watermarks (Claude, Gemini SynthID, and similar marks) as part of the sentence-level rewrite, no extra parameter
- For more advanced usage techniques, see our Advanced Usage Guide