API REFERENCE
GetHumanized REST API
Integrate AI humanization and detection directly into your app, workflow, or pipeline. Simple REST endpoints, JSON in and out.
Authentication
All API requests (except /api/detect) require a Bearer token in the Authorization header. Your token is the same JWT you receive on login — retrieve it from your browser's localStorage under the key hai_token, or via the login endpoint.
Get your token via login
curl -X POST https://gethumanized.app/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"yourpassword"}'
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"email": "you@example.com",
"plan": "unlimited",
"wordsLimit": -1
}
Use the returned token as your Bearer token in all subsequent requests.
403.
Base URL
All endpoints are relative to this base URL. Always use HTTPS.
POST /api/humanize
Rewrites AI-generated text to sound authentically human. Preserves all original meaning while removing detectable AI patterns.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | Required | The AI-generated text to humanize. Max 5,000 words per request. |
| mode | string | Optional | "standard" (default) — professional and natural. "aggressive" — maximum humanization using GPT-4o. |
curl -X POST https://gethumanized.app/api/humanize \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"text": "Furthermore, it is important to note that AI detection algorithms utilize sophisticated pattern recognition methodologies.",
"mode": "standard"
}'
const res = await fetch('https://gethumanized.app/api/humanize', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${YOUR_TOKEN}`,
},
body: JSON.stringify({
text: 'Your AI text here...',
mode: 'standard', // or 'aggressive'
}),
});
const data = await res.json();
Response
{
"humanizedText": "It's worth pointing out that AI detectors rely on pattern recognition — and they're getting smarter.",
"model": "gpt-4o-mini",
"wordsUsed": 0, // total monthly words used
"wordsLimit": -1, // -1 = unlimited
"dailyUsed": 19, // words used today
"dailyCap": 50000 // fair-use daily cap
}
POST /api/detect
Analyzes text and returns a score (0–100) indicating how likely it is AI-generated. This endpoint is free and does not require authentication or a paid plan.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | Required | The text to analyze. Minimum 20 words for reliable results. |
curl -X POST https://gethumanized.app/api/detect \
-H "Content-Type: application/json" \
-d '{"text": "This text might have been written by an AI model."}'
Response
{
"score": 82,
"label": "Almost certainly AI",
"signals": [
"Uniform sentence length",
"Robotic transitions",
"No personal voice"
]
}
Error Codes
| Status | Meaning | Common Cause |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Missing text, invalid mode, or input exceeds 5,000 words. |
| 401 | Unauthorized | Missing or invalid Bearer token. Session may have expired. |
| 403 | Forbidden | Plan does not include API access. Upgrade to Unlimited or Teams. |
| 429 | Too Many Requests | Monthly word quota reached, or daily fair-use cap (50,000 words/day) hit. |
| 503 | Service Unavailable | Temporary server issue. Retry after a few seconds. |
All errors return JSON with an error field describing the issue:
{ "error": "Monthly limit reached (40000/40000 words used). Upgrade for more." }
Rate Limits
| Limit Type | Value | Applies To |
|---|---|---|
| Monthly word quota | Unlimited (fair-use) | Unlimited & Teams plans |
| Daily fair-use cap | 50,000 words/day | Unlimited & Teams plans |
| Per-request limit | 5,000 words | All plans |
| API call monthly limit | 1,000 (Unlimited) · 5,000 (Teams) | Paid plans |
| IP rate limit | 20 humanize calls / 15 min | All plans |