Humanizations

Humanizations are the core resource of the ToHuman API. Each humanization takes AI-generated text and transforms it into natural, human-sounding writing that bypasses AI detectors.

The humanization model

The humanization model contains all the information about a humanization job, including the input content, output result, status, and processing metadata.

Properties

id

string

Unique identifier for the humanization.

status

string

One of pending, processing, completed, or failed.

intensity

string

Humanization intensity. One of minimal, subtle, medium (default), or heavy.

output_content

string or null

The humanized text. null until the job completes.

processing_time

float or null

Time taken to process in seconds.

error_message

string or null

Error details if the job failed.

created_at

timestamp

When the humanization was created.

completed_at

timestamp or null

When the humanization completed.


Create a humanization (sync) POST /v1/humanizations/sync

Create a humanization and receive the result immediately. Best for short content (under 2,000 words) when you need real-time results.

Required attributes

content

string

The AI-generated text to humanize. Must be at least 50 characters and under 2,000 words.

Optional attributes

title

string

A title for the document (for your reference).

intensity

string

Humanization intensity. Defaults to medium. Options: minimal, subtle, medium, heavy.

POST /v1/humanizations/sync
curl -X POST https://tohuman.ai/api/v1/humanizations/sync \
  -H "Authorization: Bearer $TOHUMAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "The utilization of artificial intelligence...",
    "intensity": "medium"
  }'
Response
{
  "id": 42,
  "document_id": 15,
  "status": "completed",
  "intensity": "medium",
  "output_content": "Using AI in everyday work...",
  "processing_time": 1.42,
  "error_message": null,
  "created_at": "2026-03-21T12:00:00Z",
  "completed_at": "2026-03-21T12:00:01Z"
}

Create a humanization (async) POST /v1/humanizations

Create a humanization job that processes in the background. Use this for longer documents or when you don't need immediate results. Optionally provide a webhook_url to be notified when processing completes.

Additional attributes

webhook_url

string (optional)

URL to receive a POST request when the humanization completes or fails.

POST /v1/humanizations
curl -X POST https://tohuman.ai/api/v1/humanizations \
  -H "Authorization: Bearer $TOHUMAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your long-form AI-generated content...",
    "intensity": "heavy",
    "webhook_url": "https://yourapp.com/webhooks/tohuman"
  }'
Response (201 Created)
{
  "id": 43,
  "document_id": 16,
  "status": "pending",
  "intensity": "heavy",
  "output_content": null,
  "processing_time": null,
  "error_message": null,
  "created_at": "2026-03-21T12:00:00Z",
  "completed_at": null
}

Retrieve a humanization GET /v1/humanizations/:id

Retrieve the current state of a humanization by its ID. Use this to poll for the result of an async humanization job.

GET /v1/humanizations/43
curl https://tohuman.ai/api/v1/humanizations/43 \
  -H "Authorization: Bearer $TOHUMAN_API_KEY"
Response
{
  "id": 43,
  "document_id": 16,
  "status": "completed",
  "intensity": "heavy",
  "output_content": "The fully humanized content...",
  "processing_time": 3.87,
  "error_message": null,
  "created_at": "2026-03-21T12:00:00Z",
  "completed_at": "2026-03-21T12:00:04Z"
}