API Reference
Complete reference for all UndetectedGPT API endpoints, parameters, and response formats.
/api/v1/humanizeHumanize AI-generated text. Accepts text and returns a rewritten version that passes AI detection tools.
Request body
textThe text to humanize. Minimum 3 words, maximum 500 words. Optimal performance around 2,000 characters.
tone"casual", "formal", "balanced", or "creative". Omit for no tone shift.
ultra_stealthRestructures input before humanization for maximum stealth. Default false.
Response
{
"output": "The humanized text...",
"words_used": 142,
"words_remaining": 249858
}/api/v1/statusCheck your API key status, remaining word balance, and configuration.
Response
{
"name": "My App",
"words_remaining": 249858,
"max_words_per_request": 500,
"rate_limit_per_minute": 10,
"created_at": "2026-03-18T12:00:00Z",
"last_used_at": "2026-03-21T15:30:00Z"
}Parameters & options
The humanization endpoint supports several options to control the output.
| Option | Values | Effect |
|---|---|---|
| tone | casual, formal, balanced, creative | Adjusts writing style while preserving meaning |
| ultra_stealth | true / false | Extra restructuring pass for harder-to-detect output |
tone and ultra_stealth produces the best results. Use them when you need specific control over the output.Rate limits
Rate limits protect the API from abuse and ensure fair access. Exceeding the limit returns 429 Too Many Requests with a Retry-After header.
Requests per minute (per key)
10 / min
Requests per minute (per IP)
20 / min
Max input per request
500 words
Auth failures (per IP)
5 / min
Need higher limits? Contact us for enterprise plans.
Error handling
The API uses standard HTTP status codes. Errors return a JSON body with error and code fields.
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_INPUT | Missing or invalid text or tone |
| 400 | WORD_LIMIT_EXCEEDED | Text exceeds 500 word maximum |
| 401 | - | Invalid, missing, or revoked API key |
| 403 | INSUFFICIENT_WORDS | Not enough words in your account balance |
| 413 | BODY_TOO_LARGE | Request body exceeds 50KB |
| 429 | RATE_LIMITED | Too many requests. Wait and retry. |
| 500 | PROCESSING_ERROR | Humanization failed. Words auto-refunded. |
{
"error": "Insufficient word balance. You have 12 words remaining, but this request requires 150.",
"code": "INSUFFICIENT_WORDS",
"words_remaining": 12,
"words_required": 150
}500, the words reserved for that request are automatically refunded to your account balance.Response format
All responses are JSON. Successful responses include output, words_used, and words_remaining. Error responses include error and code.
Success
{
"output": "The humanized text...",
"words_used": 142,
"words_remaining": 249858
}Error
{
"error": "Text exceeds word limit. Maximum 500 words allowed.",
"code": "WORD_LIMIT_EXCEEDED",
"max_words": 500,
"current_words": 612
}Versioning
The current API version is v1. All endpoints are prefixed with /api/v1/.
Breaking changes will be released under a new version prefix. Existing versions continue to work with advance deprecation notice. Non-breaking additions may be added to v1 without a version bump.
SDKs & libraries
No official SDKs at this time. The API uses standard REST conventions and works with any HTTP client.
| Language | Recommended client |
|---|---|
| Python | requests |
| Node.js | fetch (built-in) |
| Go | net/http (built-in) |
| Ruby | net/http or httparty |
| PHP | guzzlehttp/guzzle |
Next steps
Was this page helpful?