v1Operational

HumanizeIt API

Make any text undetectable. Programmatically.

Quick Start

1

Get your API key

Create a key in the dashboard. It's shown only once — save it securely.

2

Make a request

Send text to analyze or humanize via a simple POST request.

3

Get results back

Receive human-sounding text or an AI detection score as JSON.

curl
curl -X POST https://humanizeit.app/api/v1/analyze \
  -H "Authorization: Bearer sk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"text": "The mitochondria is the powerhouse of the cell."}'
response
{
  "score": 72,
  "confidenceBand": "likely-ai",
  "patterns": [...],
  "stats": { "avgSentenceLength": 8, "vocabularyRichness": 0.85, ... },
  "wordCount": 8
}

Authentication

All API requests require a Bearer token in the Authorization header. Keys are generated in your dashboard and shown only once at creation.

http
Authorization: Bearer sk_live_aBcDeFgHiJkLmNoPqRsT...

Security: Never expose API keys in client-side code, public repositories, or browser requests. Always use keys server-side.

Endpoints

POST/api/v1/analyze

Analyze text for AI-generated patterns and return a detection score.

Request Body

FieldTypeRequiredDescription
textstringYesThe text to analyze (10–10,000 chars)

Request

curl
curl -X POST https://humanizeit.app/api/v1/analyze \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"text": "Your text to analyze..."}'

JavaScript

javascript
const res = await fetch("https://humanizeit.app/api/v1/analyze", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ text: "Your text to analyze..." }),
});
const data = await res.json();

Response

json
{
  "score": 72,
  "confidenceBand": "likely-ai",
  "patterns": [
    { "name": "uniformSentenceLength", "score": 0.8, "weight": 1.5 },
    { "name": "repetitiveTransitions", "score": 0.6, "weight": 1.2 }
  ],
  "stats": {
    "avgSentenceLength": 18.5,
    "vocabularyRichness": 0.72,
    "sentenceCount": 12
  },
  "wordCount": 222
}

Response Schema

FieldTypeDescription
scorenumberAI detection score 0–100 (higher = more likely AI)
confidenceBandstringhuman / mixed / likely-ai / ai-generated
patternsarrayDetected AI patterns with scores and weights
statsobjectText statistics (sentence length, vocabulary, etc.)
wordCountnumberWord count of the input text
POST/api/v1/humanize

Rewrite text to sound more natural and human-written.

Request Body

FieldTypeRequiredDescription
textstringYesThe text to humanize (10–10,000 chars)
tonestringNoTone of the output (default: standard)
intensitystringNoHow aggressively to rewrite (default: medium)
passesnumberNoNumber of humanization passes, 1–3 (default: 1). Higher passes auto-escalate intensity to reduce AI score below 45%.

Tone Options

ValueDescription
standardNatural, balanced rewriting
formalProfessional, polished tone
casualConversational, relaxed style
academicScholarly, structured language
storytellingNarrative, engaging voice
professionalBusiness-appropriate communication

Intensity Options

ValueDescription
lightMinimal changes — preserves most of the original structure
mediumBalanced rewriting — natural-sounding with moderate changes
heavyAggressive rewriting — maximizes undetectability

Request

curl
curl -X POST https://humanizeit.app/api/v1/humanize \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"text": "Your text...", "tone": "casual", "intensity": "medium", "passes": 2}'

Response

json
{
  "humanizedText": "So here's the thing about mitochondria, they're basically the engine room of every cell...",
  "originalScore": 78,
  "humanizedScore": 18,
  "scoreDelta": 60,
  "confidenceBand": "low",
  "tokensUsed": 312,
  "passes_run": 2,
  "score_history": [78, 51, 18]
}
GET/api/v1/usage

Check your current API usage and quota.

curl
curl https://humanizeit.app/api/v1/usage \
  -H "Authorization: Bearer sk_live_..."

Response

json
{
  "plan": "PRO",
  "wordsUsed": 12450,
  "wordsLimit": 50000,
  "apiRequestsUsed": 247,
  "apiRequestsLimit": 1000,
  "monthlyResetAt": "2026-04-01T00:00:00.000Z"
}

Rate Limits

API requests are rate-limited per billing cycle. Every response includes rate limit headers.

PlanRequests/monthKeys allowedMax text length
FREE0 (no API access)05,000 chars
PRO1,000310,000 chars
TEAM10,0001010,000 chars

Rate Limit Headers

HeaderDescription
X-RateLimit-LimitTotal requests allowed this period
X-RateLimit-RemainingRequests remaining
X-RateLimit-ResetUnix timestamp of next reset
Retry-AfterSeconds until you can retry (on 429 only)

429 Response

json
{
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Monthly API request quota exceeded."
  }
}

Error Codes

CodeHTTPDescriptionSolution
UNAUTHORIZED401Invalid or missing API keyCheck your Authorization header
TEXT_TOO_SHORT400Text under 10 charactersProvide longer text
TEXT_TOO_LONG400Text over 10,000 charactersShorten your text
QUOTA_EXCEEDED429Monthly quota reachedWait for reset or upgrade plan
INVALID_JSON400Request body is not valid JSONCheck your JSON formatting
INTERNAL_ERROR500Server-side errorRetry or contact support

Playground

Test the API directly from your browser. Enter your API key and try a request.

Not stored — only used in-memory for this request

Response will appear here
curl -X POST /api/v1/analyze \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Your text here..."}'

Changelog

v1.0March 2026

Initial release. Two endpoints: analyze and humanize. Rate limiting, hash-based API key authentication, and interactive playground.