Quickstart
This guide will get you up and running with the ToHuman API in under 5 minutes. You'll learn how to get your API key and make your first humanization request.
Get your API key
Before making your first API call, you need an API token. Sign in to your
ToHuman dashboard
and create a new API token. Your token will start with token_ and should be kept secret.
export TOHUMAN_API_KEY="token_your_api_key_here"
Authentication
Every ToHuman API endpoint requires that token as a bearer credential in the Authorization header — there is no other auth scheme, and no query-parameter fallback. Requests without it return 401 Unauthorized.
Authorization: Bearer token_your_api_key
You can create, rotate, and revoke tokens at any time from the API tokens page. Reset a token immediately if you suspect it has been compromised — revoking it invalidates every request made with it.
Never expose your API token in client-side code, public repositories, or browser requests. Always make API calls from your server.
Make your first request
The simplest way to use ToHuman is the synchronous endpoint. Send your AI-generated text and get the humanized result back immediately.
curl -X POST https://tohuman.io/api/v1/humanizations/sync \ -H "Authorization: Bearer $TOHUMAN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "content": "Your AI-generated content here...", "intensity": "medium" }'
{
"id": 42,
"document_id": 15,
"status": "completed",
"output_content": "Your humanized content here...",
"processing_time": 5.42,
"scores": {
"detectability": 0.06,
"change_ratio": 0.41,
"quality_fallbacks": 0
}
}
Here's the same request in Python:
import requests response = requests.post( "https://tohuman.io/api/v1/humanizations/sync", headers={"Authorization": f"Bearer {API_KEY}"}, json={ "content": "Your AI-generated content here...", "intensity": "medium" } ) print(response.json())
Sync vs async
ToHuman offers two modes for humanizing text:
| Sync | Async | |
|---|---|---|
| Endpoint | /humanizations/sync | /humanizations |
| Max length | 2,000 words | Unlimited |
| Response | Immediate result | Returns job ID, poll or use webhook |
| Webhook | Not supported | Optional webhook_url |
| Best for | Short content, real-time UIs | Long documents, batch processing |
Next steps
Now that you've made your first request, explore the full API: