API Reference

Complete reference for all UndetectedGPT API endpoints, parameters, and response formats.

POST/api/v1/humanize

Humanize AI-generated text. Accepts text and returns a rewritten version that passes AI detection tools.

Request body

text
requiredstring

The text to humanize. Minimum 3 words, maximum 500 words. Optimal performance around 2,000 characters.

tone
optionalstring

"casual", "formal", "balanced", or "creative". Omit for no tone shift.

ultra_stealth
optionalboolean

Restructures input before humanization for maximum stealth. Default false.

Response

{
  "output": "The humanized text...",
  "words_used": 142,
  "words_remaining": 249858
}
GET/api/v1/status

Check 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.

OptionValuesEffect
tonecasual, formal, balanced, creativeAdjusts writing style while preserving meaning
ultra_stealthtrue / falseExtra restructuring pass for harder-to-detect output
For most use cases, omitting 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.

StatusCodeDescription
400INVALID_INPUTMissing or invalid text or tone
400WORD_LIMIT_EXCEEDEDText exceeds 500 word maximum
401-Invalid, missing, or revoked API key
403INSUFFICIENT_WORDSNot enough words in your account balance
413BODY_TOO_LARGERequest body exceeds 50KB
429RATE_LIMITEDToo many requests. Wait and retry.
500PROCESSING_ERRORHumanization 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
}
If a request fails with 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.

LanguageRecommended client
Pythonrequests
Node.jsfetch (built-in)
Gonet/http (built-in)
Rubynet/http or httparty
PHPguzzlehttp/guzzle

Next steps

Was this page helpful?