Build with HumanTone
HumanTone API.
Humanize text, run AI detection, and check your account programmatically. Same credits you already use in the app.
ENDPOINTS
QUICK START
From zero to humanized text in under a minute.
- 1
Go to Settings → API Keys in your dashboard and generate a key.
- 2
Copy the example below and replace
ht_your_api_keywith your key. - 3
Run it.
curl -X POST https://api.humantone.io/v1/humanize \
-H "Authorization: Bearer ht_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"content": "Your input text goes here.",
"humanization_level": "standard"
}' Response:
{
"success": true,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"content": "Your output text.",
"output_format": "html",
"credits_used": 3
} AUTH
Authentication.
Base URL
https://api.humantone.io All requests require a Bearer token in the Authorization header:
Authorization: Bearer ht_your_api_key Keys use the ht_ prefix followed by 64 hex characters. Generate and manage keys at app.humantone.io/settings/api.
Versioning.
The API is versioned. All current endpoints use /v1/. This version is stable.
If breaking changes are introduced in the future, they will ship under a new version (e.g. /v2/). Existing versions will continue to work.
HUMANIZER
POST /v1/humanize
Rewrites AI text to sound human. Same engine as the app.
Request
curl -X POST https://api.humantone.io/v1/humanize \
-H "Authorization: Bearer ht_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"content": "Your input text goes here...",
"humanization_level": "standard",
"output_format": "html",
"custom_instructions": "Your custom instructions here."
}' Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | The text to humanize. Minimum 30 words. Maximum depends on your plan. |
| humanization_level | string | No | standard (default), advanced, or extreme. Advanced and extreme support English only. |
| output_format | string | No | html (default), text, or markdown. Controls the format of the returned content field. |
| custom_instructions | string | No | Instructions for the rewrite: tone, terms to keep, audience, purpose. Max 1,000 characters. |
Note: The default output format is html. If you need plain text without markup, set output_format to text explicitly.
Word limits per request
| Plan | Max words |
|---|---|
| Basic | 750 |
| Standard | 1,000 |
| Pro | 1,500 |
Response
{
"success": true,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"content": "Your output text...",
"output_format": "html",
"credits_used": 42
} | Field | Type | Description |
|---|---|---|
| request_id | string | Unique ID for this request. Use it for logging or support inquiries. |
| content | string | The humanized text in the requested format. |
| output_format | string | The format of the returned content: html, text, or markdown. |
| credits_used | number | Credits deducted from your balance for this request. |
Response time: The request is synchronous. Longer texts take longer to process. A 1,500 word input at extreme level may take 30+ seconds. Plan your client timeouts accordingly.
Errors
| Status | Error | Cause |
|---|---|---|
| 400 | Invalid JSON body | Request body is not valid JSON |
| 400 | content is required | Missing, empty, or non-string content field |
| 400 | Text must be at least 30 words | Input too short |
| 400 | Text exceeds the maximum of N words... | Input exceeds plan word limit |
| 400 | Not enough credits | Credit balance is zero |
| 400 | humanization_level must be one of... | Invalid level value |
| 400 | output_format must be one of... | Invalid format value |
| 400 | custom_instructions must be 1000... | Instructions too long |
| 400 | ...advanced and extreme...English only | Non-English text with advanced or extreme level |
| 400 | ...did not pass the safety check... | Content flagged by safety filter |
| 404 | Plan not found | Account plan error. Contact support. |
| 500 | Internal server error | Processing failed. Retry after a few seconds. |
Code examples
curl -X POST https://api.humantone.io/v1/humanize \
-H "Authorization: Bearer ht_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"content": "Your input text goes here...",
"humanization_level": "standard",
"output_format": "text",
"custom_instructions": "Your custom instructions here."
}' AI DETECTOR
POST /v1/detect
Returns an AI likelihood score for any text. Same detector as the app.
Detection does not consume credits. It is limited to 30 requests per day, shared between the app and API. The limit resets at midnight UTC.
Request
curl -X POST https://api.humantone.io/v1/detect \
-H "Authorization: Bearer ht_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"content": "Your input text goes here..."
}' Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | The text to analyze. |
Response
{
"success": true,
"ai_score": 87
} | Field | Type | Description |
|---|---|---|
| ai_score | number | Score from 0 to 100. Higher means more AI patterns detected. |
When the daily limit is reached
HTTP 200, success: false:
{
"success": false,
"error": "Daily usage limit reached. You have used 30 of 30 allowed detections today.",
"time_to_next_renew": 3600
} | Field | Type | Description |
|---|---|---|
| time_to_next_renew | number | Seconds until the limit resets (midnight UTC). |
When detection fails
HTTP 200, success: false:
{
"success": false
} The detection service returned no result. Retry the request.
Errors
| Status | Error | Cause |
|---|---|---|
| 400 | Invalid JSON body | Request body is not valid JSON |
| 400 | content is required | Missing, empty, or non-string content field |
Code examples
curl -X POST https://api.humantone.io/v1/detect \
-H "Authorization: Bearer ht_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"content": "Your input text goes here..."
}' ACCOUNT
GET /v1/account
Returns your plan, credit balance, and subscription status. Useful for checking remaining credits before sending a humanize request.
Request
curl https://api.humantone.io/v1/account \
-H "Authorization: Bearer ht_your_api_key" Response
{
"plan": {
"id": "pro_monthly",
"name": "Pro Monthly",
"max_words": 1500,
"monthly_credits": 1000,
"api_access": true
},
"credits": {
"trial": 0,
"subscription": 820,
"extra": 150,
"total": 970
},
"subscription": {
"active": true,
"expires_at": "2026-05-08T00:00:00.000Z"
}
} | Field | Description |
|---|---|
| plan.max_words | Max words per humanize request on your plan |
| plan.monthly_credits | Credits included per billing cycle |
| credits.total | All available credits (trial + subscription + extra) |
| credits.subscription | Remaining monthly plan credits |
| credits.extra | Remaining purchased extra credits |
| subscription.expires_at | Subscription expiry date (ISO 8601) |
Errors
| Status | Error | Cause |
|---|---|---|
| 404 | Plan not found | Account plan error. Contact support. |
Code examples
curl https://api.humantone.io/v1/account \
-H "Authorization: Bearer ht_your_api_key" AUTH ERRORS
Authentication errors.
These errors can occur on any endpoint.
| Status | Error | Cause |
|---|---|---|
| 401 | Missing or invalid Authorization header | No header provided, or it does not start with Bearer |
| 401 | Invalid API key format | Key does not match expected format (ht_ prefix + 64 hex characters) |
| 401 | Invalid API key | Key format is correct but does not exist |
| 401 | This API key has been revoked | Key was deleted in dashboard |
| 401 | User not found | Account associated with this key no longer exists |
| 403 | ...plan does not include API access... | Free plan or trial. Paid plan required. |
| 404 | Not Found | Endpoint does not exist |
| 405 | Method not allowed | Wrong HTTP method (e.g. GET instead of POST) |
All errors return JSON:
{
"error": "Human-readable error message"
} PRICING
Same credits. No extra cost.
API calls use your existing HumanTone credits. No separate API pricing. No per-request fees. 1 credit = 100 words. Same as the app.
| What you need | Where to get it |
|---|---|
| A paid plan (Basic, Standard, or Pro) | humantone.io/pricing |
| An API key | app.humantone.io/settings/api |
| More credits | Buy Extra Credits in your dashboard. No plan change needed. |
Start building.
Get your API key and send your first request in under a minute.