Humanizer
Transform AI-generated text into natural, human-like content.
POST /api/humanizer/
Transform AI-generated text into natural, human-like content that bypasses AI detection tools.
Authentication: X-API-Key header with humanizer scope
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Text content to humanize |
callback_url | string | No | URL to receive results asynchronously via webhook |
poll | boolean | No | Set to true to enable polling mode (default: false) |
webhook_secret | string | No | Secret sent in X-Webhook-Secret header of webhook POST |
Processing Modes
The endpoint supports synchronous and asynchronous processing:
| Parameters | Mode | Response |
|---|---|---|
| (none) | Sync | 200 OK — result in response body |
callback_url | Async + webhook | 202 Accepted — result POSTed to your URL |
poll: true | Async + polling | 202 Accepted — result via GET /api/jobs/{task_id}/ |
callback_url + poll: true | Async + both | 202 Accepted — result via webhook AND polling |
See Async Jobs for details on asynchronous processing.
Synchronous Example
Request
curl -X POST https://developer-portal.walterwrites.ai/api/humanizer/ \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"content": "Artificial intelligence has revolutionized numerous industries by automating complex tasks and enhancing decision-making processes."
}'Response (200 OK)
{
"status": "success",
"task_id": null,
"result": "AI has transformed many industries, making complex tasks automatic and improving how decisions are made.",
"service_name": "humanizer_service",
"execution_time": 2.34,
"word_count": 18,
"credits_remaining": 1982,
"user": {
"id": 12345
}
}Asynchronous Example
Request
curl -X POST https://developer-portal.walterwrites.ai/api/humanizer/ \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"content": "Your long text here...",
"poll": true,
"callback_url": "https://your-server.com/webhook",
"webhook_secret": "your_secret_123"
}'Response (202 Accepted)
{
"status": "pending",
"task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"result": null,
"service_name": null,
"execution_time": null,
"word_count": 256,
"credits_remaining": 1744,
"user": {
"id": 12345
}
}Use the returned task_id to poll for results, or wait for the webhook delivery to your callback_url.
Response Fields
| Field | Type | Description |
|---|---|---|
status | string | "success" (sync) or "pending" (async) |
task_id | string | null | Job ID for async requests; null for sync |
result | string | null | Humanized text (sync) or null (async) |
service_name | string | null | Service used for processing |
execution_time | float | null | Processing time in seconds |
word_count | integer | Word count of input text |
credits_remaining | integer | Credit balance after this request |
user.id | integer | Your user ID |
Rate Limits
| Mode | Limit |
|---|---|
| Synchronous | 3 requests per minute per user |
| Asynchronous | No time-based limit — constrained by credits and pending jobs limit (varies by plan) |
Rate limits may vary by plan. Higher-tier plans may have higher limits.
Webhook Delivery
When using callback_url, the result is POSTed to your URL as JSON with the same response structure as the synchronous response. If you provided a webhook_secret, it is sent in the X-Webhook-Secret header so you can verify the request originated from WalterAI.
The callback_url must be a publicly routable URL. Requests to private, internal, or reserved IP addresses are blocked for security reasons.
POST https://your-server.com/webhook
Content-Type: application/json
X-Webhook-Secret: your_secret_123
{
"status": "success",
"task_id": "a1b2c3d4-...",
"result": "Humanized text...",
...
}