Owner: Engineering Team | Last Updated: 2026-01-30 | Status: Current
The humanizer API transforms AI-generated text to appear human-written. Three endpoints exist: the main humanizer, a free-tier variant, and a file conversion endpoint.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /api/feature/humanizer/ |
Yes | Primary humanization endpoint for authenticated users. |
| POST | /api/feature/free-humanizer/ |
No | Limited humanization for free-tier users. Same request forma |
| POST | /api/feature/file-to-html/ |
Yes | Converts uploaded files (.docx, .pdf, .txt) to text for huma |
Primary humanization endpoint for authenticated users.
Authorization: Bearer <jwt_access_token>
Content-Type: application/json
{
"content": "AI-generated text to humanize...",
"readability": "University",
"purpose": "General Writing",
"detection_strength": "2",
"language": "English",
"is_plain_text": true,
"history_id": "abc123"
}
| Field | Type | Required | Description |
|---|---|---|---|
content |
string | Yes | The text to humanize |
readability |
string | Yes | One of: "University", "High School", "Doctorate", "Journalist", "Marketing" |
purpose |
string | Yes | One of: "General Writing", "Academic", "Marketing Material", "Business Material", "Essay", "Email", "Legal Material", "Story", "Cover Letter", "Report", "Article" |
detection_strength |
string | Yes | Anti-detection level: "0" (Simple), "1" (Standard), or "2" (Enhanced) |
language |
string | Yes | Language of the text (currently "English" is the primary supported value) |
is_plain_text |
boolean | Yes | true for plain text output, false for HTML output |
history_id |
string|null | No | Document history ID to associate this humanization with an existing document |
| Value | ID | Description |
|---|---|---|
University |
2 | College/university level writing (default) |
High School |
1 | Simplified for high school level |
Doctorate |
3 | Advanced academic/research level |
Journalist |
4 | Clear, journalistic style |
Marketing |
5 | Persuasive marketing copy style |
| Value | ID | Description |
|---|---|---|
General Writing |
1 | General purpose (default) |
Academic |
2 | Academic papers and assignments |
Marketing Material |
3 | Marketing and advertising copy |
Business Material |
4 | Business communications |
Essay |
5 | Essay writing |
Email |
11 | Email communications |
Legal Material |
6 | Legal documents |
Story |
7 | Creative writing / storytelling |
Cover Letter |
8 | Job application cover letters |
Report |
9 | Reports and analysis |
Article |
10 | Blog posts and articles |
| Value | Level | Description |
|---|---|---|
"0" |
Simple | Light rewriting, preserves original structure |
"1" |
Standard | Moderate rewriting |
"2" |
Enhanced | Aggressive rewriting for maximum bypass |
Note: The strength scale is 0-2 (3 levels). Free plan users can only use "0" (Simple).
{
"result": "The humanized output text...",
"history": "Document Title",
"version": {
"history": "doc-123",
"id": "ver-456"
},
"credit": 4850
}
| Field | Type | Description |
|---|---|---|
result |
string | The humanized output text |
history |
string | Document title/name |
version.history |
string | Document history ID (used for URL routing) |
version.id |
string | Version ID |
credit |
number | User's updated credit balance after deduction |
| Status | Body detail |
Description |
|---|---|---|
| 401 | "Authentication credentials were not provided" |
Missing or invalid JWT |
| 403 | "Your subscription is paused" |
User's subscription is paused |
| 403 | "word_limit" |
Text exceeds word limit |
| 403 | "Your content exceeds the limit of your plan" |
Per-request word cap exceeded |
| 403 | "You have not enough credits" |
Insufficient word credits |
| 429 | — | Rate limited |
| 500 | — | Server error / model failure |
Limited humanization for free-tier users. Same request format as the main endpoint but with reduced capabilities and stricter limits.
Converts uploaded files (.docx, .pdf, .txt) to text for humanization.
Content-Type: multipart/form-data
Authorization: Bearer <jwt_access_token>
| Field | Type | Description |
|---|---|---|
file |
File | The file to convert (max 15 MB) |
Supported formats: .docx, .pdf, .txt
{
"text": "Extracted text content from the file..."
}
| Constraint | Value |
|---|---|
| Minimum text length | 50 words |
| Maximum characters | 150,000 |
| Maximum file size | 15 MB |
| Supported file types | .docx, .pdf, .txt |
| Per-request word limit | Varies by plan (plan_per_request_limit) |
Humanization consumes credits from the user's main credit pool (user.credit). Credits are deducted based on input word count. The updated balance is returned in the credit response field.
The frontend humanizer uses fetch() (not axios) for this endpoint. This is different from other API calls in the codebase which use axios. See Web App - API Integration for details.
| Date | Author | Change |
|---|---|---|
| 2026-01-30 | Admin | Initial creation |
| 2026-01-30 | Docs team | Corrected: strength is 0-2 (not 0-4), added all 5 readability values, all 11 purpose values, added is_plain_text/language/history_id fields, file upload endpoint, credit system details |
Prev: API Reference - Authentication Endpoints | Next: API - Detector Endpoints | Up: WalterWrites