POST /api/humanize
Score and rewrite text programmatically. Same algorithm as the Chrome extension, callable from any environment that can make an HTTPS request. Authenticated by your Cloak Pro license.
Endpoint
Authentication
Send your Cloak Pro license JWT as a Bearer token in the Authorization header. The token is the same string the Chrome extension uses; you can find it on the success page after subscribing or in your most recent renewal email.
Authorization: Bearer eyJhbGciOiJFZERTQSI...
Tokens are valid for 30 days. Each successful monthly renewal issues a new token; subscribe at /cloak.
Request body
JSON. text is required, max 50,000 characters. categories is optional — if omitted, all four categories are enabled.
{
"text": "In conclusion, we must leverage our robust platform.",
"categories": {
"overwrought": true,
"buzzword": true,
"transition": true,
"meta": true
}
}
| Field | Type | Notes |
|---|---|---|
text | string | The text to score and humanize. Required. Max 50,000 chars. |
categories.overwrought | boolean | delve, tapestry, realm, intricate, paramount… |
categories.buzzword | boolean | leverage, robust, seamless, cutting-edge… |
categories.transition | boolean | moreover, furthermore, additionally… |
categories.meta | boolean | it's worth noting, in conclusion, in essence… |
Response
{
"score": {
"before": { "total": 49, "banned": 40, "emDash": 0, "tricolon": 5, "negation": 0, "uniformity": 0 },
"after": { "total": 7, "banned": 0, "emDash": 0, "tricolon": 0, "negation": 0, "uniformity": 7 }
},
"humanized": "So, we must use our strong platform.",
"changes": [
{ "from": "In conclusion", "to": "So", "category": "meta" },
{ "from": "leverage", "to": "use", "category": "buzzword" },
{ "from": "robust", "to": "strong", "category": "buzzword" }
]
}
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | missing_text | Request body missing text. |
| 400 | bad_json | Request body was not valid JSON. |
| 401 | missing_bearer_token | No Authorization header. |
| 401 | invalid_or_expired_license | Bearer token failed Ed25519 verification or is past exp. |
| 413 | text_too_long | Input exceeded 50,000 chars. |
Examples
cURL
curl -X POST https://www.genintelsys.com/api/humanize \ -H "authorization: Bearer $CLOAK_LICENSE" \ -H "content-type: application/json" \ -d '{"text":"In conclusion, we must leverage our robust platform."}'
JavaScript (fetch)
const res = await fetch("https://www.genintelsys.com/api/humanize", { method: "POST", headers: { "authorization": `Bearer ${process.env.CLOAK_LICENSE}`, "content-type": "application/json" }, body: JSON.stringify({ text: draft }) }); const { humanized, score, changes } = await res.json();
Python
import requests, os resp = requests.post( "https://www.genintelsys.com/api/humanize", headers={ "authorization": f"Bearer {os.environ['CLOAK_LICENSE']}", "content-type": "application/json" }, json={"text": draft}, timeout=30, ) data = resp.json()
Limits & fair use
No published per-call quota at launch. We reserve the right to add one if abuse becomes a problem and will publish thresholds before changing anything. "Reasonable for one human's workflow" will always be free under Pro.
Stability
The endpoint shape above is the v1 contract. Breaking changes (renaming a field, removing a category, changing response structure) will only happen at a versioned URL — your existing integration will keep working at /api/humanize.