Humanizer API
Send AI-drafted text, get back a human-sounding rewrite with a measured human-likeness score. The rewrite runs on our own GPU compute node, not a paid API, and every number, price, and link in your input is validated to survive. The request and response match WriteHuman, so an existing integration migrates by changing the base URL and key.
Quickstart
curl -X POST https://hashtag.org/api/humanize/v1 \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Your AI-drafted copy goes here, at least 30 characters.","tone":"professional"}'Authentication
Pass your key as a bearer token: Authorization: Bearer YOUR_KEY. Create a self-serve key on the AI Humanizer page (billed to your GIGI credits per word), or contact us for an unmetered partner key.
Endpoint
POST https://hashtag.org/api/humanize/v1 Content-Type: application/json Authorization: Bearer YOUR_KEY
Request body
| Field | Type | Notes |
|---|---|---|
| text | string, required | The text to humanize. 30 to 100,000 characters. |
| tone | string, optional | One of: professional, academic, blog, casual, creative, scientific, technical. Omit for the default voice. |
| language | string, optional | Accepted for contract parity. The engine is tuned for English. |
Response (200)
{
"id": "b1a2c3d4-...",
"created": 1727540000,
"results": ["<your humanized text>"],
"scores": [0.86],
"input_words": 52,
"words_remaining": { "included": 1000000, "topup": 0, "total": 1000000 },
"engine": { "backend": "gpu-node", "model": "gemma3:12b", "ms": 4200 }
}| id | Unique id for this humanize call. |
| created | Unix timestamp (seconds). |
| results | Array with the humanized text as the first element. |
| scores | Array with a 0 to 1 human-likeness score (0.86 = 86% human), or null. |
| input_words | Word count we measured on your input. |
| words_remaining | Quota object kept for WriteHuman parity ({ included, topup, total }). |
| engine | Where it ran: { backend: "gpu-node", model, ms }. |
Errors
| 401 invalid API key | Missing or unrecognised Bearer key. |
| 422 | Body failed validation (text too short/long, or an unknown tone). |
| 429 rate limit exceeded | Too many calls for a metered key in the window. Partner keys are unmetered. |
| 503 humanizer node offline | No GPU node is available right now, or the rewrite failed a safety gate. Retry shortly. |
Errors use the shape { "error": "message" } with the status code above.
Code examples
JavaScript
const res = await fetch("https://hashtag.org/api/humanize/v1", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ text: myText, tone: "professional" }),
});
const data = await res.json();
console.log(data.results[0]); // humanized text
console.log(data.scores[0]); // 0..1 human-likenessPython
import requests
r = requests.post(
"https://hashtag.org/api/humanize/v1",
headers={"Authorization": "Bearer YOUR_KEY"},
json={"text": my_text, "tone": "professional"},
timeout=180,
)
data = r.json()
print(data["results"][0]) # humanized text
print(data["scores"][0]) # 0..1 human-likenessLive console
Paste your key and some text and run a real request against the endpoint. You get back the exact JSON your integration will see.
Questions
- What runs the rewrite?
- Our own GPU compute node running a local model. Nothing is sent to a third-party API. If the node is briefly offline the API returns a 503 and you retry — it never silently falls back to a paid service.
- Is it WriteHuman-compatible?
- Yes. The request body and response shape match WriteHuman, so if you already call api.writehuman.ai you migrate by changing only the base URL to hashtag.org/api/humanize/v1 and swapping the key.
- Do my facts and links survive?
- Every number, price, percentage, and URL in your input is validated to survive the rewrite, and the paragraph count is preserved. If a rewrite would drop or change one of those, the call fails safe rather than return altered facts.
- How am I billed?
- Self-serve hz_live_ keys bill your GIGI credits per input word at the same rate as the on-site humanizer. Partner and internal keys are unmetered.
Prefer a paste-and-go tool?
The AI Humanizer page runs the same engine in your browser — paste a draft, pick a tone, copy the result.