<!DOCTYPE html><html data-dpl-id="dpl_EhFUSFm793YBfGFWahVixLQJYBa4" lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes, viewport-fit=cover"/><link rel="preload" as="image" imageSrcSet="/_next/image?url=%2Flogo.png&amp;w=256&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4 1x, /_next/image?url=%2Flogo.png&amp;w=384&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4 2x"/><link rel="stylesheet" href="/_next/static/immutable/chunks/25tvu93u10ijf.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/immutable/chunks/2_lrtwghit8cw.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/immutable/chunks/195ohvdy_du6y.js"/><script src="/_next/static/immutable/chunks/22i2vrnsw-lh6.js" async=""></script><script src="/_next/static/immutable/chunks/3ifpg-k8jlpy6.js" async=""></script><script src="/_next/static/immutable/chunks/1pawciohjxwzc.js" async=""></script><script src="/_next/static/immutable/chunks/0riwd57whys4t.js" async=""></script><script src="/_next/static/immutable/chunks/2qk_pnpmb3qui.js" async=""></script><script src="/_next/static/immutable/chunks/turbopack-2_04ewhudzrza.js" async=""></script><script src="/_next/static/immutable/chunks/13u2r1r-3w9tl.js" async=""></script><script src="/_next/static/immutable/chunks/2nmdb_iaht381.js" async=""></script><script src="/_next/static/immutable/chunks/0xs81pqh53mqt.js" async=""></script><script src="/_next/static/immutable/chunks/11zvwir-v9om6.js" async=""></script><script src="/_next/static/immutable/chunks/3n5kupaf6qqw9.js" async=""></script><script src="/_next/static/immutable/chunks/100qg5_rfsd3n.js" async=""></script><script src="/_next/static/immutable/chunks/240ygy35o5jjk.js" async=""></script><script src="/_next/static/immutable/chunks/1ci-ypxrhungx.js" async=""></script><meta name="theme-color" content="#9a5cc2"/><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#9a5cc2"/><meta name="mobile-web-app-capable" content="yes"/><link rel="preload" as="script" href="https://r.wdfl.co/rw.js"/><title>AI Humanizer API Documentation — REST API Reference | WriteHuman</title><meta name="description" content="Developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Authentication, official TypeScript and Python SDKs, code examples in TypeScript, Python, cURL &amp; JavaScript, and 40+ languages."/><link rel="manifest" href="/site.webmanifest"/><meta name="robots" content="index, follow"/><link rel="canonical" href="https://finix-wh.earnwithdigital.online/api/docs"/><meta property="og:title" content="AI Humanizer API Documentation — REST API Reference"/><meta property="og:description" content="Complete developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Official TypeScript and Python SDKs, code examples in TypeScript, Python, cURL &amp; JavaScript, 40+ languages."/><meta property="og:url" content="https://finix-wh.earnwithdigital.online/api/docs"/><meta property="og:image" content="https://finix-wh.earnwithdigital.online/opengraph-image.png"/><meta property="og:image:type" content="image/png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="628"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="AI Humanizer API Documentation — REST API Reference"/><meta name="twitter:description" content="Complete developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Official TypeScript and Python SDKs, code examples in TypeScript, Python, cURL &amp; JavaScript, 40+ languages."/><meta name="twitter:image" content="https://finix-wh.earnwithdigital.online/opengraph-image.png"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script>history.scrollRestoration="manual"</script><script>(function(){var d=['write','human'].join('')+'.ai',h=location.hostname.replace(/\.$/,'');var v=["ppa.lecrev.namuh-etirw-83xi3nvih-2namuhetirw","ppa.lecrev.namuh-etirw-niam-tig-2namuhetirw"].map(function(s){return s.split('').reverse().join('')});if(h===d||h==='www.'+d||h==='mcp.'+d||v.indexOf(h)>=0||h==='localhost'||h==='127.0.0.1'||h==='[::1]'||/\.(localhost|test)$/.test(h)||h.indexOf('192.168.')===0||/\.translate\.goog$/.test(h)||h==='web.archive.org')return;var o='https://'+d;try{var c=document.querySelector('link[rel="canonical"]');if(c)c.setAttribute('href',o+new URL(c.getAttribute('href')||'/',location.href).pathname);var m=document.createElement('meta');m.name='robots';m.content='noindex, nofollow';document.head.appendChild(m);}catch(e){}location.replace(o+location.pathname+location.search);})()</script><meta name="sentry-trace" content="414533d148b94ded87a32d061e954b27-944bfe1d84605281-0"/><meta name="baggage" content="sentry-environment=production,sentry-release=eaeb4986935e32729242b4f1125b7b9282f354ad,sentry-public_key=034850e2cccbc11301aee4e4bd01c578,sentry-trace_id=414533d148b94ded87a32d061e954b27,sentry-org_id=4510989580238848,sentry-sampled=false,sentry-sample_rand=0.92242687464861,sentry-sample_rate=0.01"/><script src="/_next/static/immutable/chunks/0c0hxoamwjsbw.js" noModule=""></script></head><body class="_0bjUvq_variable _32HYhG_variable font-sans min-h-screen flex flex-col antialiased"><div hidden=""><!--$--><!--/$--></div><!--$--><!--/$--><header class="fixed inset-x-0 top-[var(--imp-banner-h,0px)] z-50 pointer-events-none transition-transform duration-[400ms] ease-out translate-y-0"><div class="pointer-events-auto w-full overflow-hidden bg-gradient-to-r from-wh-purple-600 to-wh-purple-500 text-center header-animate max-h-16 sm:max-h-12 opacity-100"><div class="mx-auto flex max-w-5xl items-center justify-center px-4 py-2 sm:py-2.5 text-sm sm:text-base tracking-wide text-white sm:whitespace-nowrap" style="font-family:var(--font-public-sans);font-weight:600"><span class="inline-flex items-center gap-2"><span class="shrink-0" aria-hidden="true">🆕</span><span>Enhanced model updated for GPTZero and Pangram.</span></span></div></div><div class="w-full header-animate h-5 bg-gradient-to-b from-wh-purple-500/30 to-transparent"></div><div class="relative mx-auto max-w-5xl px-4"><div class="pointer-events-none absolute -inset-x-8 -bottom-8 -top-4 transition-opacity duration-300 opacity-100 "></div><nav class="relative z-10 pointer-events-auto flex h-14 items-center justify-between rounded-full px-4 header-animate bg-white/60 shadow-md shadow-black/[0.04] backdrop-blur-md border border-white/40"><a class="flex flex-shrink-0 items-center" href="/"><img alt="WriteHuman" width="160" height="36" decoding="async" data-nimg="1" class="h-auto w-[140px] sm:w-[140px] md:w-[160px]" style="color:transparent" srcSet="/_next/image?url=%2Flogo.png&amp;w=256&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4 1x, /_next/image?url=%2Flogo.png&amp;w=384&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4 2x" src="/_next/image?url=%2Flogo.png&amp;w=384&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4"/></a><div class="hidden items-center gap-1 md:absolute md:left-1/2 md:flex md:-translate-x-1/2"><div class="relative"><button aria-haspopup="true" aria-expanded="false" class="flex items-center gap-1 rounded-full px-3 py-1.5 text-sm font-medium transition-colors text-gray-700 hover:bg-wh-purple-100 hover:text-wh-purple-700">Tools<svg class="h-3.5 w-3.5 transition-transform duration-200 " fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div role="menu" aria-label="Tools" class="header-panel absolute left-1/2 top-full mt-4 grid w-[calc(100vw-2rem)] origin-top -translate-x-1/2 auto-rows-fr rounded-2xl border border-white/60 bg-white p-2 shadow-xl shadow-black/[0.08] backdrop-blur-xl sm:w-[320px] pointer-events-none scale-[0.98] opacity-0"><div aria-hidden="true" class="pointer-events-none absolute inset-x-2 top-2 rounded-xl transition-[transform,opacity,background-color] duration-200 ease-(--panel-ease) motion-reduce:duration-[1ms] bg-wh-purple-50 opacity-0" style="height:calc((100% - 1rem) / 5);transform:translateY(0%);transition-property:opacity"></div><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-purple-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 0 0-2.455 2.456Z"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">AI Humanizer</div><div class="text-xs text-gray-500">Transform AI text into natural writing</div></div></a><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/ai-detector"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-blue-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">AI Detector</div><div class="text-xs text-gray-500">Check if text is AI-generated</div></div></a><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/ai-image-detector"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-teal-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909M3.75 21h16.5A2.25 2.25 0 0 0 22.5 18.75V5.25A2.25 2.25 0 0 0 20.25 3H3.75A2.25 2.25 0 0 0 1.5 5.25v13.5A2.25 2.25 0 0 0 3.75 21Z"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">AI Image Detector</div><div class="text-xs text-gray-500">Detect AI-generated images</div></div></a><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/word-counter-free"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-amber-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5-3.9 19.5m-2.1-19.5-3.9 19.5"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">Word Counter</div><div class="text-xs text-gray-500">Count words, characters &amp; more</div></div></a><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/extension"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-purple-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .37-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.959.401v0a.656.656 0 0 0 .659-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">Chrome Extension</div><div class="text-xs text-gray-500">Humanize and fix writing in any tab</div></div></a></div></div><a class="rounded-full px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-wh-purple-100 hover:text-wh-purple-700" href="/affiliates">Affiliates</a><a class="rounded-full px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-wh-purple-100 hover:text-wh-purple-700" href="/pricing">Pricing</a><div class="relative"><a aria-haspopup="true" aria-expanded="false" class="flex items-center gap-1 rounded-full px-3 py-1.5 text-sm font-medium transition-colors text-gray-700 hover:bg-wh-purple-100 hover:text-wh-purple-700" href="/api">API<svg class="h-3.5 w-3.5 transition-transform duration-200 " fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></a><div role="menu" aria-label="API" class="header-panel absolute left-1/2 top-full mt-4 grid w-[calc(100vw-2rem)] origin-top -translate-x-1/2 auto-rows-fr rounded-2xl border border-white/60 bg-white p-2 shadow-xl shadow-black/[0.08] backdrop-blur-xl sm:w-[320px] pointer-events-none scale-[0.98] opacity-0"><div aria-hidden="true" class="pointer-events-none absolute inset-x-2 top-2 rounded-xl transition-[transform,opacity,background-color] duration-200 ease-(--panel-ease) motion-reduce:duration-[1ms] bg-wh-blue-50 opacity-0" style="height:calc((100% - 1rem) / 2);transform:translateY(0%);transition-property:opacity"></div><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/api"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-blue-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M6.75 7.5l3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">API</div><div class="text-xs text-gray-500">REST endpoints to humanize &amp; detect</div></div></a><a role="menuitem" tabindex="-1" class="relative flex items-center gap-3 rounded-xl px-2.5 py-2.5" href="/mcp"><div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-wh-purple-500"><span class="text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"></path></svg></span></div><div><div class="text-sm font-semibold text-gray-900">MCP</div><div class="text-xs text-gray-500">Connect WriteHuman to your AI agents</div></div></a></div></div><a class="rounded-full px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-wh-purple-100 hover:text-wh-purple-700" href="/blog">Blog</a></div><div class="hidden items-center gap-2 md:flex"><a class="rounded-full px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-wh-purple-100 hover:text-wh-purple-700" href="/signup?mode=login">Log in</a><a class="btn-glow rounded-full bg-gradient-to-r from-wh-purple-500 to-wh-purple-600 px-5 py-1.5 text-sm font-semibold text-white shadow-md shadow-wh-purple-500/20 transition-colors hover:from-wh-purple-600 hover:to-wh-purple-700" href="/signup">Sign Up</a></div><button class="relative rounded-full p-2 text-gray-600 transition-colors hover:bg-wh-purple-100 hover:text-wh-purple-700 md:hidden" aria-label="Toggle menu"><svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></nav><!--$?--><template id="B:0"></template><a href="https://chromewebstore.google.com/detail/writehuman-ai-humanizer-g/bjpidpnldcfjnfbeigjamlhgjpppnooi" target="_blank" rel="noopener noreferrer" class="pointer-events-auto absolute right-8 -top-1 -z-10 hidden md:inline-flex items-center gap-1.5 rounded-b-2xl border border-t-0 border-white/40 bg-white/60 px-4 pt-3 pb-1.5 text-sm font-medium text-gray-700 shadow-md shadow-black/[0.04] backdrop-blur-md hover:bg-white/80 header-badge opacity-100 translate-y-14" aria-label="Get WriteHuman for Chrome on the Chrome Web Store"><svg class="h-4 w-4 shrink-0" viewBox="0 0 48 48" aria-hidden="true"><circle cx="24" cy="24" r="20" fill="#fff"></circle><path fill="#EA4335" d="M24 14h17.3a20 20 0 0 0-34.6 0l6.1 10.6A11.9 11.9 0 0 1 24 14Z"></path><path fill="#FBBC05" d="M6.7 14A20 20 0 0 0 24 44l6.1-10.6A11.9 11.9 0 0 1 12.8 24Z"></path><path fill="#34A853" d="M41.3 14H24a10 10 0 0 1 8.7 15l-8.6 15A20 20 0 0 0 41.3 14Z"></path><circle cx="24" cy="24" r="8.5" fill="#fff"></circle><circle cx="24" cy="24" r="7" fill="#1A73E8"></circle></svg><span><strong class="font-semibold text-gray-900">WriteHuman for Chrome.</strong> Humanize in any tab</span><span aria-hidden="true" class="shrink-0">→</span></a><!--/$--></div></header><main class="flex-1 pt-24 sm:pt-[7.5rem]"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://finix-wh.earnwithdigital.online"},{"@type":"ListItem","position":2,"name":"AI Humanizer API","item":"https://finix-wh.earnwithdigital.online/api"},{"@type":"ListItem","position":3,"name":"Documentation","item":"https://finix-wh.earnwithdigital.online/api/docs"}]}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"TechArticle","headline":"AI Humanizer API Documentation","description":"Complete developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Authentication, code examples, and supported languages.","url":"https://finix-wh.earnwithdigital.online/api/docs","publisher":{"@type":"Organization","name":"WriteHuman","url":"https://finix-wh.earnwithdigital.online"},"mainEntityOfPage":"https://finix-wh.earnwithdigital.online/api/docs","proficiencyLevel":"Beginner"}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"How to Integrate the WriteHuman AI Humanizer API","description":"Step-by-step tutorial covering WriteHuman API authentication and setup, plus three real integrations: calling the API directly with Python, wiring it into a Lovable app, and using it with Claude.","thumbnailUrl":["https://i.ytimg.com/vi/AUAI5kWrKIk/maxresdefault.jpg","https://i.ytimg.com/vi/AUAI5kWrKIk/hqdefault.jpg"],"uploadDate":"2026-08-05T12:47:30-07:00","duration":"PT7M13S","embedUrl":"https://www.youtube-nocookie.com/embed/AUAI5kWrKIk","isFamilyFriendly":true,"publisher":{"@type":"Organization","name":"WriteHuman","url":"https://finix-wh.earnwithdigital.online"}}</script><section class="-mt-24 sm:-mt-[7.5rem] hero-gradient relative overflow-hidden pb-16"><div class="pointer-events-none absolute -left-32 -top-24 h-[350px] w-[350px] lg:h-[500px] lg:w-[500px] rounded-full bg-[#af72d5]/10 blur-3xl" style="animation:blobFloat 14s ease-in-out infinite"></div><div class="pointer-events-none absolute -right-24 top-1/4 h-[300px] w-[300px] lg:h-[400px] lg:w-[400px] rounded-full bg-[#af72d5]/8 blur-3xl" style="animation:blobFloat 16s ease-in-out infinite 2s"></div><div class="dot-grid-subtle pointer-events-none absolute inset-0"></div><div class="relative mx-auto max-w-6xl px-4 pt-36 sm:pt-44 text-center"><span class="inline-block rounded-full border border-[#af72d5]/20 bg-[#af72d5]/5 px-4 py-1.5 text-sm font-medium text-[#af72d5]">API Reference <!-- -->v1.1</span><h1 class="mt-5 text-4xl sm:text-5xl lg:text-6xl font-bold tracking-tight text-gray-900">AI Humanizer API Documentation</h1><p class="mx-auto mt-4 max-w-2xl text-lg text-gray-600 leading-relaxed">Humanize AI-generated text, detect AI authorship, and track usage through a simple REST API. Simple authentication, predictable pricing, 40+ languages.</p><div class="mt-6 inline-flex items-center gap-2 rounded-xl border border-gray-200 bg-white/80 backdrop-blur-sm px-4 py-2.5 shadow-sm"><span class="text-xs font-medium uppercase text-gray-400">Base URL</span><code class="font-mono text-sm font-semibold text-gray-900">https://api.finix-wh.earnwithdigital.online</code></div><div class="mt-8 flex flex-wrap items-center justify-center gap-3"><a class="rounded-xl bg-[#af72d5] px-6 py-3 text-sm font-semibold text-white shadow-md shadow-[#af72d5]/20 transition hover:bg-[#9b5cbf]" href="/api#pricing">View Pricing</a><div class="flex items-center gap-2 rounded-xl border border-gray-200 bg-white/80 px-4 py-2.5 text-sm"><span class="text-gray-500">Starting at</span><span class="font-bold text-gray-900">$0.14</span><span class="text-gray-400">/ 1K words</span></div><a href="#video-guide" class="inline-flex items-center gap-2 rounded-xl border border-gray-300 bg-white px-6 py-3 text-sm font-semibold text-gray-700 shadow-sm transition hover:bg-gray-50"><svg class="h-4 w-4 text-[#af72d5]" fill="currentColor" viewBox="0 0 24 24"><path d="M8 5.14v13.72c0 .86.94 1.39 1.68.94l11.02-6.86a1.1 1.1 0 0 0 0-1.88L9.68 4.2A1.1 1.1 0 0 0 8 5.14Z"></path></svg>Watch Video Guide</a><button type="button" aria-label="Copy docs for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-2 rounded-xl border border-gray-200 bg-white/80 px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm backdrop-blur-sm transition hover:border-[#af72d5]/40 hover:text-[#af72d5] "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy docs for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div></div></section><section class="bg-white"><div class="mx-auto max-w-6xl px-4 py-16"><div class="flex flex-col lg:flex-row lg:gap-16"><aside class="lg:w-52 shrink-0"><button type="button" class="mb-4 flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm lg:hidden"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25H12"></path></svg>On this page</button><nav aria-label="API documentation" class="hidden mb-8 lg:sticky lg:top-28 lg:block lg:self-start"><h4 class="mb-4 text-xs font-bold uppercase tracking-wider text-gray-400">On this page</h4><ul class="space-y-0.5"><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Quickstart</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Video Guide</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Authentication</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Plans &amp; Limits</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Errors</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Endpoints</button><ul class="ml-3"><li><button type="button" class="block w-full border-l-2 py-1 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-400 hover:border-gray-300 hover:text-gray-700">POST /v1/humanize</button></li><li><button type="button" class="block w-full border-l-2 py-1 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-400 hover:border-gray-300 hover:text-gray-700">GET /v1/usage</button></li><li><button type="button" class="block w-full border-l-2 py-1 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-400 hover:border-gray-300 hover:text-gray-700">POST /v1/detect</button></li></ul></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Code Examples</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Languages</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Use Cases</button></li><li><button type="button" class="block w-full border-l-2 py-1.5 pl-3 text-left text-[13px] transition-colors border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-900">Support</button></li></ul></nav></aside><article class="flex-1 min-w-0"><section id="quickstart"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Quickstart</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-2 text-gray-600">Get up and running in under a minute.</p><div class="mt-8 flex gap-4"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[#af72d5]/10 text-sm font-bold text-[#af72d5]">1</div><div><h3 class="text-lg font-semibold text-gray-900">Get your API key</h3><p class="mt-1 text-gray-600">Sign up or log in at<!-- --> <a class="font-medium text-[#af72d5] hover:underline" href="/">finix-wh.earnwithdigital.online</a>, purchase an<!-- --> <a class="font-medium text-[#af72d5] hover:underline" href="/api#pricing">API subscription</a>, and create your key from the<!-- --> <a class="font-medium text-[#af72d5] hover:underline" href="/api/dashboard">dashboard</a>.</p></div></div><div class="mt-8 flex gap-4"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[#af72d5]/10 text-sm font-bold text-[#af72d5]">2</div><div class="flex-1 min-w-0"><h3 class="text-lg font-semibold text-gray-900">Make your first request</h3><p class="mt-1 text-gray-600">Install an official SDK, or call the REST API directly:</p><div class="mt-2 flex flex-wrap gap-2"><code class="rounded bg-gray-100 px-2 py-1 text-sm font-mono font-medium text-gray-800">npm install @writehuman/sdk</code><code class="rounded bg-gray-100 px-2 py-1 text-sm font-mono font-medium text-gray-800">pip install writehuman</code></div><div class="mt-3"><div class="section-dark-bg rounded-2xl overflow-hidden border border-white/[0.08] shadow-2xl shadow-purple-500/10"><div class="flex items-center justify-between border-b border-white/[0.06] px-4 py-3"><div class="flex items-center gap-3 min-w-0"><div class="flex gap-1.5"><div class="h-3 w-3 rounded-full bg-[#ff5f57]"></div><div class="h-3 w-3 rounded-full bg-[#febc2e]"></div><div class="h-3 w-3 rounded-full bg-[#28c840]"></div></div><div class="flex gap-1 ml-2 overflow-x-auto"><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors bg-white/10 text-white">TypeScript</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">Python</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">cURL</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">Python (HTTP)</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">JavaScript (HTTP)</button></div></div><button type="button" class="flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1 text-xs text-gray-400 transition-colors hover:bg-white/10 hover:text-white" aria-label="Copy code to clipboard"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9.75a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184"></path></svg><span>Copy</span></button></div><div class="overflow-x-auto p-5"><pre class="font-mono text-[13px] leading-relaxed text-gray-300"><code><span class="text-gray-500">// npm install @writehuman/sdk</span>
<span class="text-purple-400">import</span> <!-- -->{<!-- --> WriteHuman <!-- -->}<!-- --> <span class="text-purple-400">from</span> <span class="text-green-400">&quot;@writehuman/sdk&quot;</span><span class="text-gray-400">;</span>
<!-- -->
<span class="text-purple-400">const</span> wh <span class="text-gray-400">=</span> <span class="text-purple-400">new</span> <span class="text-sky-300">WriteHuman</span><span class="text-gray-400">(</span>{<!-- --> <span class="text-sky-300">apiKey</span><span class="text-gray-400">:</span> <span class="text-green-400">&quot;wh_live_your_api_key_here&quot;</span> <!-- -->}<span class="text-gray-400">);</span>
<span class="text-purple-400">const</span> out <span class="text-gray-400">=</span> <span class="text-purple-400">await</span> wh<span class="text-gray-400">.</span><span class="text-sky-300">humanize</span><span class="text-gray-400">(</span><span class="text-green-400">&quot;Artificial intelligence has revolutionized the way we approach content creation and digital communication.&quot;</span><span class="text-gray-400">);</span>
<span class="text-sky-300">console</span><span class="text-gray-400">.</span><span class="text-sky-300">log</span><span class="text-gray-400">(</span>out<span class="text-gray-400">.</span>results<span class="text-gray-400">[</span>0<span class="text-gray-400">]);</span>
<span class="text-sky-300">console</span><span class="text-gray-400">.</span><span class="text-sky-300">log</span><span class="text-gray-400">(</span>out<span class="text-gray-400">.</span>words_remaining<span class="text-gray-400">.</span>total<span class="text-gray-400">,</span> <span class="text-green-400">&quot;words left&quot;</span><span class="text-gray-400">);</span></code></pre></div></div></div></div></div><div class="mt-8 flex gap-4"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[#af72d5]/10 text-sm font-bold text-[#af72d5]">3</div><div class="flex-1 min-w-0"><h3 class="text-lg font-semibold text-gray-900">See the response</h3><p class="mt-1 mb-3 text-gray-600">Standard plans return a single result. Premium plans return 3 variations with human-likeness scores.</p><div class="section-dark-bg rounded-2xl overflow-hidden border border-white/[0.08] shadow-xl shadow-purple-500/5"><div class="flex items-center justify-between border-b border-white/[0.06] px-4 py-2.5"><div class="flex gap-1"><button type="button" class="rounded-md px-3 py-1 text-xs font-medium transition-colors bg-white/10 text-white">Standard</button><button type="button" class="rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">Premium</button></div><button type="button" class="flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs text-gray-400 transition-colors hover:bg-white/10 hover:text-white" aria-label="Copy response to clipboard"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9.75a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184"></path></svg><span>Copy</span></button></div><div class="overflow-x-auto p-5"><pre class="font-mono text-[13px] leading-relaxed text-gray-300">{
  &quot;id&quot;: &quot;hum_a1b2c3d4e5f6&quot;,
  &quot;created&quot;: 1778533901580,
  &quot;results&quot;: [
    &quot;AI has changed how we create content and communicate online.&quot;
  ],
  &quot;scores&quot;: null,
  &quot;input_words&quot;: 14,
  &quot;words_remaining&quot;: {
    &quot;included&quot;: 124986,
    &quot;topup&quot;: 0,
    &quot;total&quot;: 124986
  }
}</pre></div></div></div></div></section><hr class="my-14 border-gray-100"/><section id="video-guide" class="scroll-mt-24"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Video Guide</h2><p class="mt-3 text-gray-600 leading-relaxed">A step-by-step walkthrough of authentication and setup, followed by three real integrations: calling the API directly with Python, wiring it into a Lovable app, and using it with Claude.</p><div class="mt-6 overflow-hidden rounded-2xl border border-gray-200 bg-gray-900 shadow-sm"><iframe class="aspect-video w-full" src="https://www.youtube-nocookie.com/embed/AUAI5kWrKIk" title="How to Integrate the WriteHuman AI Humanizer API" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerPolicy="strict-origin-when-cross-origin" allowFullScreen=""></iframe></div></section><hr class="my-14 border-gray-100"/><section id="authentication"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Authentication</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-3 text-gray-600 leading-relaxed">All API requests require a Bearer token in the<!-- --> <code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">Authorization</code> <!-- -->header. You can create and manage API keys from your<!-- --> <a class="font-medium text-[#af72d5] hover:underline" href="/api/dashboard">dashboard</a>.</p><div class="mt-5 rounded-xl border-l-4 border-[#af72d5] bg-[#af72d5]/5 p-4"><p class="font-mono text-sm text-gray-800">Authorization: Bearer wh_live_your_api_key_here</p></div><p class="mt-4 text-sm text-gray-500">Keys use the prefix <code class="font-mono text-xs">wh_live_</code> followed by a unique token. Keep your keys secret — treat them like passwords. You can create up to 5 keys and revoke any key at any time.</p></section><hr class="my-14 border-gray-100"/><section id="plans"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Plans &amp; Limits</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-3 mb-6 text-gray-600 leading-relaxed">Choose a plan that fits your usage. All plans include monthly word allowances that reset each billing cycle.</p><div class="hidden sm:block overflow-hidden rounded-2xl border border-gray-200/80 bg-white shadow-md shadow-purple-500/5"><table class="w-full text-sm"><thead><tr class="border-b border-gray-100"><th class="px-6 py-4 text-left font-medium text-gray-500"></th><th class="px-6 py-4 text-center font-semibold text-gray-900">Standard</th><th class="px-6 py-4 text-center font-semibold text-[#af72d5] bg-[#af72d5]/5">Premium</th></tr></thead><tbody><tr class="border-b border-gray-50"><td class="px-6 py-3.5 text-left font-medium text-gray-700">Monthly words</td><td class="px-6 py-3.5 text-center text-gray-600"><span>125,000</span></td><td class="px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5"><span>400,000 – 3,000,000</span></td></tr><tr class="border-b border-gray-50"><td class="px-6 py-3.5 text-left font-medium text-gray-700">Max words per request</td><td class="px-6 py-3.5 text-center text-gray-600"><span>2,000</span></td><td class="px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5"><span>4,000 – 6,000</span></td></tr><tr class="border-b border-gray-50"><td class="px-6 py-3.5 text-left font-medium text-gray-700">Output variations</td><td class="px-6 py-3.5 text-center text-gray-600"><span>1</span></td><td class="px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5"><span>3</span></td></tr><tr class="border-b border-gray-50"><td class="px-6 py-3.5 text-left font-medium text-gray-700">Human-likeness scores</td><td class="px-6 py-3.5 text-center text-gray-600"><span class="mx-auto block h-0.5 w-4 rounded bg-gray-300"></span></td><td class="px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5"><svg class="mx-auto h-5 w-5 text-green-500" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path></svg></td></tr><tr class=""><td class="px-6 py-3.5 text-left font-medium text-gray-700">Rate limit</td><td class="px-6 py-3.5 text-center text-gray-600"><span>40 req/min</span></td><td class="px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5"><span>120 – 160 req/min</span></td></tr></tbody></table></div><div class="sm:hidden space-y-4"><div class="rounded-2xl border p-5 border-gray-200 bg-white"><h4 class="mb-4 text-center text-lg font-bold text-gray-900">Standard</h4><div class="space-y-3"><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Monthly words</span><span class="font-medium text-gray-900"><span>125,000</span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Max words per request</span><span class="font-medium text-gray-900"><span>2,000</span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Output variations</span><span class="font-medium text-gray-900"><span>1</span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Human-likeness scores</span><span class="font-medium text-gray-900"><span class="mx-auto block h-0.5 w-4 rounded bg-gray-300"></span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Rate limit</span><span class="font-medium text-gray-900"><span>40 req/min</span></span></div></div></div><div class="rounded-2xl border p-5 border-[#af72d5]/30 bg-[#af72d5]/5 shadow-md shadow-[#af72d5]/10"><h4 class="mb-4 text-center text-lg font-bold text-[#af72d5]">Premium</h4><div class="space-y-3"><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Monthly words</span><span class="font-medium text-gray-900"><span>400,000 – 3,000,000</span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Max words per request</span><span class="font-medium text-gray-900"><span>4,000 – 6,000</span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Output variations</span><span class="font-medium text-gray-900"><span>3</span></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Human-likeness scores</span><span class="font-medium text-gray-900"><svg class="mx-auto h-5 w-5 text-green-500" fill="none" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path></svg></span></div><div class="flex items-center justify-between text-sm"><span class="text-gray-600">Rate limit</span><span class="font-medium text-gray-900"><span>120 – 160 req/min</span></span></div></div></div></div><p class="mt-5 text-sm text-gray-500 leading-relaxed">Premium plans automatically return 3 output variations per request with human-likeness scores. Standard plans return a single result without scores. Usage is tracked by input-text word count. Words are deducted from your subscription first, then any top-up credits. Top-up packs (100,000 words each) never expire. Premium is available in four monthly word sizes: 400K, 800K, 1.5M, and 3M. Premium 400K allows 4,000 words per request and 120 requests per minute; 800K and up allow 6,000 and 160.</p></section><hr class="my-14 border-gray-100"/><section id="errors"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Errors</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-3 mb-6 text-gray-600 leading-relaxed"><span>Every non-2xx response is a JSON object with a stable machine-readable </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">code</code><span> and a human-readable </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">error</code><span> message. Branch on </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">code</code><span>; the wording of </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">error</code><span> may change. A 402 for an exhausted balance also carries </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">words_remaining</code><span>. Every 429, 503 and 504 carries a </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">Retry-After</code><span> header in seconds; wait at least that long before retrying. Those statuses leave nothing charged and are safe to retry. A 429, 503 or 504 without the JSON body and </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">code</code><span> came from a load balancer or proxy, not the API, and carries no such guarantee: handle it like a client-side timeout and do not resend a billed request automatically. Words are charged only on a 200, with one exception: a </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">500 billing_failed</code><span> is returned after a result was produced but the usage write failed part-way, and some of the request&#x27;s words, from the included allowance and/or from top-up credits, may already have been charged. Check /v1/usage after one.</span></p><div class="overflow-hidden rounded-2xl border border-gray-200/80 bg-white shadow-md shadow-purple-500/5"><table class="w-full text-sm"><thead><tr class="border-b border-gray-100 text-left"><th class="px-4 py-3 font-semibold text-gray-900 w-20">Status</th><th class="px-4 py-3 font-semibold text-gray-900 w-48"><code class="font-mono">code</code></th><th class="px-4 py-3 font-semibold text-gray-900">Meaning</th></tr></thead><tbody><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">422</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">invalid_request</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The body failed validation (missing `text`, too short or too long).</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">422</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">forbidden_param</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">A parameter that is not available on the public API was sent.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">422</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">word_limit</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The input is over the per-request word cap for your plan.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">422</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">moderation_blocked</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Content moderation refused the input (`/v1/humanize` only).</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">401</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">missing_api_key</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">No usable `Authorization: Bearer` header.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">401</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">invalid_api_key</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The key is unknown or revoked.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">402</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">no_subscription</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The key is valid but the account has no active API subscription.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">402</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">insufficient_balance</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Not enough words left for this request; `words_remaining` is included.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">403</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">reverify_required</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The account must be re-verified by email. The account owner signs in at finix-wh.earnwithdigital.online to continue; then the account&#x27;s newest key created after the check began works within about a minute; every other key stays disabled until the check ends, so create a new key. Not retried by the SDKs.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">429</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">rate_limited</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Over your plan&#x27;s requests per minute. `Retry-After` is the time to the next window.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">429</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">auth_locked_out</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Too many failed authentications from this address. `Retry-After` is the remaining lockout.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">429</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">queue_full</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The admission queue is full. Retry after `Retry-After`.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">429</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">queue_timeout</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The request waited in the admission queue past its deadline. Retry after `Retry-After`.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">503</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">at_capacity</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Cluster-wide capacity shed. Retry after `Retry-After`.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">503</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">billing_unavailable</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The billing store is unreachable; the request was refused rather than served unmetered. Retry after `Retry-After`.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">503</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">detector_unavailable</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The detector, or the translation step before it, is unavailable (`/v1/detect` only). Retry after `Retry-After`.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">504</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">timeout</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Generation did not finish within the server deadline (`/v1/humanize` only). Nothing charged; retry after `Retry-After`.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">500</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">processing_failed</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Generation raised an error.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">500</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">no_results</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Generation finished without a usable result.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">500</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">safety_limit</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">Generation produced far more text than the input; discarded.</td></tr><tr class="border-b border-gray-50 last:border-0 align-top"><td class="px-4 py-2.5 font-mono text-gray-700">500</td><td class="px-4 py-2.5 font-mono text-purple-700 break-all">billing_failed</td><td class="px-4 py-2.5 text-gray-600 leading-relaxed">The result was produced but the usage write failed part-way; included and/or top-up words may already have been charged. Check `/v1/usage`.</td></tr></tbody></table></div></section><hr class="my-14 border-gray-100"/><section id="endpoints"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Endpoint Reference</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-3 text-gray-600 leading-relaxed">Three REST endpoints, one base URL, and one Bearer key. All requests authenticate the same way.</p><div class="mt-8 space-y-12"><div id="endpoint-humanize" class="scroll-mt-28"><div class="flex flex-wrap items-center gap-3"><span class="rounded-md px-3 py-1.5 text-xs font-bold uppercase bg-green-100 text-green-800">POST</span><code class="font-mono text-lg font-semibold text-gray-900 break-all">/v1/humanize</code><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] ml-auto"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-2 font-mono text-sm text-gray-500">https://api.finix-wh.earnwithdigital.online<!-- -->/v1/humanize</p><div class="mt-4 text-gray-600 leading-relaxed">Rewrite AI-generated text to sound naturally human. Deducts input words from your balance. Usage is tracked by input text word count. Words are deducted from your monthly subscription allowance first, then from any purchased top-up credits. The public API accepts<!-- --> <code class="text-sm">text</code>, <code class="text-sm">tone</code>, and<!-- --> <code class="text-sm">language</code> only —<!-- --> <code class="text-sm">model</code>, <code class="text-sm">num_outputs</code>, and<!-- --> <code class="text-sm">sequence_id</code> are not available.</div><div id="endpoint-humanize-request-body" class="scroll-mt-28"><div class="mt-6"><h4 class="mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400">Request Body — application/json</h4><div class="overflow-hidden rounded-xl border border-gray-200 bg-white"><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">text</code><span class="rounded bg-red-50 px-1.5 py-0.5 text-[10px] font-bold uppercase text-red-600">required</span></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">The text to humanize.</p><p class="mt-1 text-xs text-gray-400">&gt;= 30 characters, &lt;= 100,000 characters</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">tone</code><span class="rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500">optional</span></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Optional writing tone. Omit for default style.</p><p class="mt-1 text-xs text-gray-400">Allowed: professional, academic, blog, casual, creative, scientific, technical</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 "><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">language</code><span class="rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500">optional</span></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Target language (e.g. English, Spanish, Chinese (Mandarin)). Auto-detected if omitted.</p></div></div></div></div></div><div id="endpoint-humanize-response" class="mt-8 scroll-mt-28"><div class="flex items-center gap-2 mb-1"><span class="rounded-md bg-green-100 px-2 py-0.5 text-xs font-bold text-green-700">200</span><span class="text-sm font-medium text-gray-700">Text humanized successfully</span></div><div class="mt-6"><h4 class="mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400">Response Body — application/json</h4><div class="overflow-hidden rounded-xl border border-gray-200 bg-white"><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">id</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Unique identifier for this humanization request.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">created</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">integer</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Unix timestamp (milliseconds) when the request was received.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">results</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string[]</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Humanized text variations, sorted by score (best first).</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">scores</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">(number | null)[] | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Human-likeness score for each result (0–1, higher = more human).</p><p class="mt-1 text-xs font-medium text-[#af72d5]">Premium plans only. `null` on Standard plans.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">input_words</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">integer</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Number of words billed for this request.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 "><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">words_remaining</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">object</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Your remaining word balance after this request.</p><p class="mt-1 text-xs text-gray-400">Fields: included (integer), topup (integer), total (integer)</p></div></div></div></div></div><div id="endpoint-humanize-errors" class="mt-8 scroll-mt-28"><h4 class="mb-4 text-xs font-semibold uppercase tracking-wider text-gray-400">Error Responses</h4><div class="space-y-3"><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">401</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Missing or invalid API key.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Invalid API key</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Invalid API key&quot;,
  &quot;code&quot;: &quot;invalid_api_key&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Missing Authorization header</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Missing or invalid Authorization header. Use: Bearer &lt;api_key&gt;&quot;,
  &quot;code&quot;: &quot;missing_api_key&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">402</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">No active subscription or insufficient word balance.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">No active subscription</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;No active subscription&quot;,
  &quot;code&quot;: &quot;no_subscription&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Insufficient word balance</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Insufficient word balance&quot;,
  &quot;code&quot;: &quot;insufficient_balance&quot;,
  &quot;words_remaining&quot;: {
    &quot;included&quot;: 12,
    &quot;topup&quot;: 0,
    &quot;total&quot;: 12
  }
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">403</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">The account must be re-verified by email before its keys are served again (HTTP 403).
The account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The
account&#x27;s newest key created after the check began then works within about a minute;
every other key stays disabled until the check ends, so create a new key on the
dashboard. Nothing is charged. Do not retry automatically.
</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.&quot;,
  &quot;code&quot;: &quot;reverify_required&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">422</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Invalid input, forbidden parameters, over word limit, or content blocked by moderation.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Invalid request body</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Invalid request: ...&quot;,
  &quot;code&quot;: &quot;invalid_request&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">`model` is not available on the public API</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;The model parameter is not available&quot;,
  &quot;code&quot;: &quot;forbidden_param&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">`num_outputs` is not available on the public API</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;The num_outputs parameter is not available&quot;,
  &quot;code&quot;: &quot;forbidden_param&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">`sequence_id` is not available on the public API</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;The sequence_id parameter is not available&quot;,
  &quot;code&quot;: &quot;forbidden_param&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Over word limit</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.&quot;,
  &quot;code&quot;: &quot;word_limit&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Content blocked</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Content blocked: sexual&quot;,
  &quot;code&quot;: &quot;moderation_blocked&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">429</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Rate limit, queue capacity, or too many failed auth attempts.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Rate limited</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Rate limit exceeded for your plan (api_standard -&gt; 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min&quot;,
  &quot;code&quot;: &quot;rate_limited&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Too many failed auth attempts</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Too many failed authentication attempts&quot;,
  &quot;code&quot;: &quot;auth_locked_out&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Request queue full</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Too many queued requests. Please retry shortly.&quot;,
  &quot;code&quot;: &quot;queue_full&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Queue wait timeout</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Request waited too long for capacity. Please retry.&quot;,
  &quot;code&quot;: &quot;queue_timeout&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-gray-800 text-gray-200">500</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Processing failure. No words charged, except that `billing_failed` may have charged some of the request&#x27;s words (included and/or top-up) before the usage write failed.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Generation failed</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Processing failed&quot;,
  &quot;code&quot;: &quot;processing_failed&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Generation returned nothing usable</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Processing returned no results&quot;,
  &quot;code&quot;: &quot;no_results&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Output exceeded the safety limit</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Output exceeded safety limit&quot;,
  &quot;code&quot;: &quot;safety_limit&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Billing update failed after generation</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Billing update failed&quot;,
  &quot;code&quot;: &quot;billing_failed&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">503</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Service at capacity, or billing temporarily unavailable. No words charged.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Service at capacity</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Service is at capacity. Please retry shortly.&quot;,
  &quot;code&quot;: &quot;at_capacity&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Billing temporarily unavailable</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Service temporarily unavailable, please retry shortly.&quot;,
  &quot;code&quot;: &quot;billing_unavailable&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-gray-800 text-gray-200">504</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">The request did not finish within the server deadline (170 seconds from request entry; generation is stopped once 10 seconds remain so that billing is never cut part-way). No words charged; safe to retry.</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Processing did not finish within 160 seconds. Nothing was charged; please retry.&quot;,
  &quot;code&quot;: &quot;timeout&quot;
}</pre></div></div></div></div></div></div></div></div><hr class="border-gray-100"/><div id="endpoint-usage" class="scroll-mt-28"><div class="flex flex-wrap items-center gap-3"><span class="rounded-md px-3 py-1.5 text-xs font-bold uppercase bg-sky-100 text-sky-800">GET</span><code class="font-mono text-lg font-semibold text-gray-900 break-all">/v1/usage</code><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] ml-auto"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-2 font-mono text-sm text-gray-500">https://api.finix-wh.earnwithdigital.online<!-- -->/v1/usage</p><div class="mt-4 text-gray-600 leading-relaxed">Retrieve your current word usage, plan tier, and API version. Read-only — it never deducts words. Remaining balance =<!-- --> <code class="text-sm">included_words − words_used_this_cycle + topup_balance</code>.</div><div id="endpoint-usage-response" class="mt-8 scroll-mt-28"><div class="flex items-center gap-2 mb-1"><span class="rounded-md bg-green-100 px-2 py-0.5 text-xs font-bold text-green-700">200</span><span class="text-sm font-medium text-gray-700">Usage returned</span></div><div class="mt-6"><h4 class="mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400">Response Body — application/json</h4><div class="overflow-hidden rounded-xl border border-gray-200 bg-white"><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">included_words</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">integer</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Words included in your plan each billing cycle.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">words_used_this_cycle</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">integer</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Words used so far in the current billing cycle.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">topup_balance</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">integer</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Remaining top-up words. Top-up packs never expire.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">tier</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Your plan: api_standard or api_premium.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 "><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">version</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Current API version.</p></div></div></div></div><pre class="mt-4 overflow-x-auto rounded-xl bg-gray-900 p-4 font-mono text-[13px] leading-relaxed text-gray-200">{
  &quot;included_words&quot;: 400000,
  &quot;words_used_this_cycle&quot;: 18311,
  &quot;topup_balance&quot;: 100000,
  &quot;tier&quot;: &quot;api_premium&quot;,
  &quot;version&quot;: &quot;v1.1&quot;
}</pre></div><div id="endpoint-usage-errors" class="mt-8 scroll-mt-28"><h4 class="mb-4 text-xs font-semibold uppercase tracking-wider text-gray-400">Error Responses</h4><div class="space-y-3"><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">401</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Missing or invalid API key.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Invalid API key</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Invalid API key&quot;,
  &quot;code&quot;: &quot;invalid_api_key&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Missing Authorization header</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Missing or invalid Authorization header&quot;,
  &quot;code&quot;: &quot;missing_api_key&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">402</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">No active subscription (HTTP 402).</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;No active subscription&quot;,
  &quot;code&quot;: &quot;no_subscription&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">403</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">The account must be re-verified by email before its keys are served again (HTTP 403).
The account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The
account&#x27;s newest key created after the check began then works within about a minute;
every other key stays disabled until the check ends, so create a new key on the
dashboard. Nothing is charged. Do not retry automatically.
</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.&quot;,
  &quot;code&quot;: &quot;reverify_required&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">429</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Too many failed auth attempts.</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Too many failed authentication attempts&quot;,
  &quot;code&quot;: &quot;auth_locked_out&quot;
}</pre></div></div></div></div></div></div></div></div><hr class="border-gray-100"/><div id="endpoint-detect" class="scroll-mt-28"><div class="flex flex-wrap items-center gap-3"><span class="rounded-md px-3 py-1.5 text-xs font-bold uppercase bg-green-100 text-green-800">POST</span><code class="font-mono text-lg font-semibold text-gray-900 break-all">/v1/detect</code><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] ml-auto"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-2 font-mono text-sm text-gray-500">https://api.finix-wh.earnwithdigital.online<!-- -->/v1/detect</p><div class="mt-4 text-gray-600 leading-relaxed">Score text for AI authorship using WriteHuman&#x27;s detection model. Billed per input word (the original text), the same way as <code class="text-sm">/v1/humanize</code>. Non-English input is automatically translated to English before scoring. Set<!-- --> <code class="text-sm">include_sentences</code> to <code class="text-sm">true</code> for a per-sentence breakdown. Note: <code class="text-sm">ai_probability</code> runs 0–1 where<!-- --> <strong>1 = AI</strong> — the opposite orientation of the humanize<!-- --> <code class="text-sm">scores</code> field.</div><div id="endpoint-detect-request-body" class="scroll-mt-28"><div class="mt-6"><h4 class="mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400">Request Body — application/json</h4><div class="overflow-hidden rounded-xl border border-gray-200 bg-white"><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">text</code><span class="rounded bg-red-50 px-1.5 py-0.5 text-[10px] font-bold uppercase text-red-600">required</span></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">The text to score for AI authorship.</p><p class="mt-1 text-xs text-gray-400">&gt;= 10 characters, &lt;= 100,000 characters</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">language</code><span class="rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500">optional</span></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Language of the text. Auto-detected if omitted; non-English text is translated to English before scoring.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 "><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">include_sentences</code><span class="rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500">optional</span></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">boolean</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Return a per-sentence AI-probability breakdown.</p><p class="mt-1 text-xs text-gray-400">Default: false</p></div></div></div></div></div><div id="endpoint-detect-response" class="mt-8 scroll-mt-28"><div class="flex items-center gap-2 mb-1"><span class="rounded-md bg-green-100 px-2 py-0.5 text-xs font-bold text-green-700">200</span><span class="text-sm font-medium text-gray-700">Text scored successfully</span></div><div class="mt-6"><h4 class="mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400">Response Body — application/json</h4><div class="overflow-hidden rounded-xl border border-gray-200 bg-white"><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">scanId</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Unique identifier for this detection scan.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">version</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Detector model version.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">versionID</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Detector build identifier.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">ai_probability</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">number | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Probability the text is AI-generated (0–1, where 1 = AI).</p><p class="mt-1 text-xs font-medium text-[#af72d5]">Opposite orientation from the /v1/humanize scores field, where higher = more human.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">predicted_class</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string | null</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Overall label: ai, human, or mixed.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">class_probabilities</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">object</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Probability for each class.</p><p class="mt-1 text-xs text-gray-400">Fields: ai, human, mixed</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">request_meta</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">object</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Length of the scored text.</p><p class="mt-1 text-xs text-gray-400">doc_length: { chars, tokens }</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100"><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">language</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">string</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Detected (or supplied) language of the input.</p></div></div><div class="flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 "><div class="flex items-center gap-2 sm:w-48 shrink-0"><code class="font-mono text-[13px] font-semibold text-gray-900">sentences</code></div><div class="flex-1 min-w-0"><span class="font-mono text-xs text-[#af72d5]">array</span><p class="mt-0.5 text-sm text-gray-600 leading-relaxed">Per-sentence breakdown, each { text, ai_prob }.</p><p class="mt-1 text-xs font-medium text-[#af72d5]">Present only when include_sentences is true.</p></div></div></div></div><pre class="mt-4 overflow-x-auto rounded-xl bg-gray-900 p-4 font-mono text-[13px] leading-relaxed text-gray-200">{
  &quot;scanId&quot;: &quot;20260609OMIOISUZ&quot;,
  &quot;version&quot;: &quot;txtdetect-2026-05-14&quot;,
  &quot;versionID&quot;: &quot;V1.1.1&quot;,
  &quot;ai_probability&quot;: 0.94,
  &quot;predicted_class&quot;: &quot;ai&quot;,
  &quot;class_probabilities&quot;: { &quot;ai&quot;: 0.94, &quot;human&quot;: 0.04, &quot;mixed&quot;: 0.02 },
  &quot;request_meta&quot;: { &quot;doc_length&quot;: { &quot;chars&quot;: 642, &quot;tokens&quot;: 98 } },
  &quot;language&quot;: &quot;English&quot;,
  &quot;sentences&quot;: [
    { &quot;text&quot;: &quot;Artificial intelligence has rapidly transformed modern business.&quot;, &quot;ai_prob&quot;: 0.97 },
    { &quot;text&quot;: &quot;Many teams now depend on it every single day.&quot;, &quot;ai_prob&quot;: 0.61 }
  ]
}</pre></div><div id="endpoint-detect-errors" class="mt-8 scroll-mt-28"><h4 class="mb-4 text-xs font-semibold uppercase tracking-wider text-gray-400">Error Responses</h4><div class="space-y-3"><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">401</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Missing or invalid API key.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Invalid API key</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Invalid API key&quot;,
  &quot;code&quot;: &quot;invalid_api_key&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Missing Authorization header</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Missing or invalid Authorization header&quot;,
  &quot;code&quot;: &quot;missing_api_key&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">402</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">No active subscription or insufficient word balance.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">No active subscription</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;No active subscription&quot;,
  &quot;code&quot;: &quot;no_subscription&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Insufficient word balance</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Insufficient word balance&quot;,
  &quot;code&quot;: &quot;insufficient_balance&quot;,
  &quot;words_remaining&quot;: {
    &quot;included&quot;: 12,
    &quot;topup&quot;: 0,
    &quot;total&quot;: 12
  }
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">403</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">The account must be re-verified by email before its keys are served again (HTTP 403).
The account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The
account&#x27;s newest key created after the check began then works within about a minute;
every other key stays disabled until the check ends, so create a new key on the
dashboard. Nothing is charged. Do not retry automatically.
</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.&quot;,
  &quot;code&quot;: &quot;reverify_required&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700">422</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Invalid input or over the per-request word limit.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Invalid request body</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Invalid request: ...&quot;,
  &quot;code&quot;: &quot;invalid_request&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Over word limit</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.&quot;,
  &quot;code&quot;: &quot;word_limit&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">429</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Rate limit or too many failed auth attempts.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Rate limited</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Rate limit exceeded for your plan (api_standard -&gt; 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min&quot;,
  &quot;code&quot;: &quot;rate_limited&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Too many failed auth attempts</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Too many failed authentication attempts&quot;,
  &quot;code&quot;: &quot;auth_locked_out&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-gray-800 text-gray-200">500</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Billing update failure after a successful scan. Some of the request&#x27;s words (included and/or top-up) may already have been charged before the write failed.</p><div class="mt-3 space-y-2"><div><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Billing update failed&quot;,
  &quot;code&quot;: &quot;billing_failed&quot;
}</pre></div></div></div></div></div><div class="rounded-xl border border-gray-200 bg-white p-4"><div class="flex items-start gap-3"><span class="shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700">503</span><div class="flex-1 min-w-0"><p class="text-sm font-medium text-gray-900">Detector unavailable or at capacity, translation failed, or billing temporarily unavailable. No words charged.</p><div class="mt-3 space-y-2"><div><p class="mb-1 text-xs font-medium text-gray-500">Detector unavailable, at capacity, or translation failed</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Detection service unavailable. Please retry.&quot;,
  &quot;code&quot;: &quot;detector_unavailable&quot;
}</pre></div><div><p class="mb-1 text-xs font-medium text-gray-500">Billing temporarily unavailable</p><pre class="overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed">{
  &quot;error&quot;: &quot;Service temporarily unavailable, please retry shortly.&quot;,
  &quot;code&quot;: &quot;billing_unavailable&quot;
}</pre></div></div></div></div></div></div></div></div></div></section><hr class="my-14 border-gray-100"/><section id="code-examples"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Code Examples</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-3 text-gray-600">Full working examples in popular languages. Replace the API key with your own to get started.</p><p class="mt-3 text-gray-600"><span class="font-semibold text-gray-900">Official SDKs:</span> <span>TypeScript / JavaScript<!-- --> <a href="https://www.npmjs.com/package/@writehuman/sdk" target="_blank" rel="noopener noreferrer" class="font-medium text-[#af72d5] hover:underline"><code class="font-mono text-sm">@writehuman/sdk</code></a></span><span> and <!-- -->Python<!-- --> <a href="https://pypi.org/project/writehuman/" target="_blank" rel="noopener noreferrer" class="font-medium text-[#af72d5] hover:underline"><code class="font-mono text-sm">writehuman</code></a></span>. <span>Both follow the documented retry policy: a 429, 503 or 504 is retried after the API&#x27;s </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">Retry-After</code><span>, at most 2 retries and only when the wait is 60 s or less (both defaults); a longer </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">Retry-After</code><span>, such as an authentication lockout, is not waited for and the error surfaces at once with it as </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">retry_after</code><span> / </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">retryAfter</code><span>. A request that may have been charged is never resent.</span></p><ul class="mt-3 mb-6 space-y-2 text-sm text-gray-600"><li><span class="font-medium text-gray-900">TypeScript / JavaScript<!-- -->:</span> <span><code class="rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800">wh.humanize(text, { tone, language })</code></span><span>, <code class="rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800">wh.detect(text, { language, includeSentences })</code></span><span>, <code class="rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800">wh.usage()</code></span>. <span>Every failure throws a subclass of </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">WriteHumanError</code><span> with </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">code</code><span>, </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">status</code><span> and </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">retryAfter</code><span>; </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">InsufficientBalanceError</code><span> adds </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">wordsRemaining</code><span>.</span></li><li><span class="font-medium text-gray-900">Python<!-- -->:</span> <span><code class="rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800">wh.humanize(text, tone=None, language=None)</code></span><span>, <code class="rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800">wh.detect(text, language=None, include_sentences=False)</code></span><span>, <code class="rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800">wh.usage()</code></span>. <span>Every failure raises a subclass of </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">WriteHumanError</code><span> with </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">code</code><span>, </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">status</code><span> and </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">retry_after</code><span>; </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">InsufficientBalanceError</code><span> adds </span><code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">words_remaining</code><span>.</span></li></ul><div class="section-dark-bg rounded-2xl overflow-hidden border border-white/[0.08] shadow-2xl shadow-purple-500/10"><div class="flex items-center justify-between border-b border-white/[0.06] px-4 py-3"><div class="flex items-center gap-3 min-w-0"><div class="flex gap-1.5"><div class="h-3 w-3 rounded-full bg-[#ff5f57]"></div><div class="h-3 w-3 rounded-full bg-[#febc2e]"></div><div class="h-3 w-3 rounded-full bg-[#28c840]"></div></div><div class="flex gap-1 ml-2 overflow-x-auto"><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors bg-white/10 text-white">TypeScript</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">Python</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">cURL</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">Python (HTTP)</button><button type="button" class="shrink-0 whitespace-nowrap rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">JavaScript (HTTP)</button></div></div><button type="button" class="flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1 text-xs text-gray-400 transition-colors hover:bg-white/10 hover:text-white" aria-label="Copy code to clipboard"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9.75a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184"></path></svg><span>Copy</span></button></div><div class="overflow-x-auto p-5"><pre class="font-mono text-[13px] leading-relaxed text-gray-300"><code><span class="text-gray-500">// npm install @writehuman/sdk</span>
<span class="text-purple-400">import</span> <!-- -->{<!-- --> WriteHuman <!-- -->}<!-- --> <span class="text-purple-400">from</span> <span class="text-green-400">&quot;@writehuman/sdk&quot;</span><span class="text-gray-400">;</span>
<!-- -->
<span class="text-purple-400">const</span> wh <span class="text-gray-400">=</span> <span class="text-purple-400">new</span> <span class="text-sky-300">WriteHuman</span><span class="text-gray-400">(</span>{<!-- --> <span class="text-sky-300">apiKey</span><span class="text-gray-400">:</span> <span class="text-green-400">&quot;wh_live_your_api_key_here&quot;</span> <!-- -->}<span class="text-gray-400">);</span>
<span class="text-purple-400">const</span> out <span class="text-gray-400">=</span> <span class="text-purple-400">await</span> wh<span class="text-gray-400">.</span><span class="text-sky-300">humanize</span><span class="text-gray-400">(</span><span class="text-green-400">&quot;Artificial intelligence has revolutionized the way we approach content creation and digital communication.&quot;</span><span class="text-gray-400">);</span>
<span class="text-sky-300">console</span><span class="text-gray-400">.</span><span class="text-sky-300">log</span><span class="text-gray-400">(</span>out<span class="text-gray-400">.</span>results<span class="text-gray-400">[</span>0<span class="text-gray-400">]);</span>
<span class="text-sky-300">console</span><span class="text-gray-400">.</span><span class="text-sky-300">log</span><span class="text-gray-400">(</span>out<span class="text-gray-400">.</span>words_remaining<span class="text-gray-400">.</span>total<span class="text-gray-400">,</span> <span class="text-green-400">&quot;words left&quot;</span><span class="text-gray-400">);</span></code></pre></div></div><h3 class="mt-8 text-lg font-semibold text-gray-900">Response</h3><p class="mt-1 mb-3 text-sm text-gray-600">The response format depends on your plan.</p><div class="section-dark-bg rounded-2xl overflow-hidden border border-white/[0.08] shadow-xl shadow-purple-500/5"><div class="flex items-center justify-between border-b border-white/[0.06] px-4 py-2.5"><div class="flex gap-1"><button type="button" class="rounded-md px-3 py-1 text-xs font-medium transition-colors bg-white/10 text-white">Standard</button><button type="button" class="rounded-md px-3 py-1 text-xs font-medium transition-colors text-gray-500 hover:text-gray-300">Premium</button></div><button type="button" class="flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs text-gray-400 transition-colors hover:bg-white/10 hover:text-white" aria-label="Copy response to clipboard"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9.75a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184"></path></svg><span>Copy</span></button></div><div class="overflow-x-auto p-5"><pre class="font-mono text-[13px] leading-relaxed text-gray-300">{
  &quot;id&quot;: &quot;hum_a1b2c3d4e5f6&quot;,
  &quot;created&quot;: 1778533901580,
  &quot;results&quot;: [
    &quot;AI has changed how we create content and communicate online.&quot;
  ],
  &quot;scores&quot;: null,
  &quot;input_words&quot;: 14,
  &quot;words_remaining&quot;: {
    &quot;included&quot;: 124986,
    &quot;topup&quot;: 0,
    &quot;total&quot;: 124986
  }
}</pre></div></div></section><hr class="my-14 border-gray-100"/><section id="languages"><div class="flex items-start justify-between gap-4"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Supported Languages</h2><button type="button" aria-label="Copy for LLM — copy as instructions for an AI coding assistant" class="inline-flex items-center gap-1.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-500 transition hover:border-[#af72d5]/40 hover:text-[#af72d5] mt-1.5 shrink-0"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z"></path></svg><span>Copy for LLM</span></button><span class="sr-only" role="status" aria-live="polite"></span></div><p class="mt-3 mb-5 text-gray-600">WriteHuman supports 40+ languages. Pass the language name as the<!-- --> <code class="rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800">language</code> <!-- -->parameter, or omit it for automatic detection.</p><div class="flex flex-wrap gap-2"><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">English</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Chinese (Mandarin)</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Chinese (Taiwan)</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">French</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Spanish</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Vietnamese</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Portuguese</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Japanese</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Ukrainian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Swedish</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">German</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Russian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Italian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Arabic</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Hindi</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Bengali</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Korean</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Turkish</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Dutch</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Polish</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Thai</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Indonesian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Malay</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Persian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Hebrew</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Greek</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Czech</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Danish</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Finnish</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Norwegian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Romanian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Hungarian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Slovak</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Bulgarian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Croatian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Serbian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Slovenian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Lithuanian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Latvian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Estonian</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Urdu</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Swahili</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Tagalog</span><span class="rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700">Afrikaans</span></div></section><hr class="my-14 border-gray-100"/><section id="use-cases"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Common Use Cases</h2><div class="mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3"><a class="group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40" href="/ai-humanizer-api-for-content-marketing"><div class="mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]"><svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 0 1-2.25 2.25M16.5 7.5V18a2.25 2.25 0 0 0 2.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 0 0 2.25 2.25h13.5M6 7.5h3v3H6v-3Z"></path></svg></div><h3 class="flex items-center justify-between text-sm font-semibold text-gray-900">Content Marketing<svg class="h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"></path></svg></h3><p class="mt-1.5 text-sm text-gray-500 leading-relaxed">Generate blog posts, product descriptions, and ad copy with AI that reads indistinguishable from human writing.</p></a><a class="group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40" href="/ai-humanizer-api-for-seo-agencies"><div class="mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]"><svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"></path></svg></div><h3 class="flex items-center justify-between text-sm font-semibold text-gray-900">SEO Agencies<svg class="h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"></path></svg></h3><p class="mt-1.5 text-sm text-gray-500 leading-relaxed">Produce high-volume content that passes AI detection checks before publication.</p></a><a class="group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40" href="/ai-humanizer-api-for-saas"><div class="mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]"><svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M14.25 9.75 16.5 12l-2.25 2.25m-4.5 0L7.5 12l2.25-2.25M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z"></path></svg></div><h3 class="flex items-center justify-between text-sm font-semibold text-gray-900">SaaS Products<svg class="h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"></path></svg></h3><p class="mt-1.5 text-sm text-gray-500 leading-relaxed">AI writing features where the final output needs to be indistinguishable from human writing.</p></a><a class="group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40" href="/ai-humanizer-api-for-enterprise"><div class="mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]"><svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21"></path></svg></div><h3 class="flex items-center justify-between text-sm font-semibold text-gray-900">Enterprise Teams<svg class="h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"></path></svg></h3><p class="mt-1.5 text-sm text-gray-500 leading-relaxed">Process internal communications, reports, and documentation generated by large language models.</p></a></div></section><hr class="my-14 border-gray-100"/><section id="support"><h2 class="text-2xl sm:text-3xl font-bold text-gray-900">Support</h2><div class="mt-4 flex flex-col gap-3 sm:flex-row sm:gap-6"><a href="mailto:support@finix-wh.earnwithdigital.online" class="inline-flex items-center gap-2 text-sm font-medium text-[#af72d5] hover:underline"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75"></path></svg>Contact Support</a><a class="inline-flex items-center gap-2 text-sm font-medium text-[#af72d5] hover:underline" href="/terms"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"></path></svg>Terms of Service</a></div><p class="mt-4 text-sm text-gray-500">By using the WriteHuman API you agree to our<!-- --> <a class="text-[#af72d5] hover:underline" href="/terms">Terms of Service</a>.</p></section></article></div></div></section><!--$--><!--/$--></main><footer class="bg-gradient-to-b from-gray-900 to-gray-950 text-gray-400"><div class="mx-auto max-w-7xl px-4 py-16 sm:px-6 sm:py-20 lg:px-8"><div class="mx-auto mb-12 h-px w-2/3 bg-gradient-to-r from-transparent via-wh-purple-500/30 to-transparent"></div><div class="grid grid-cols-2 gap-6 sm:gap-8 md:grid-cols-3 lg:grid-cols-6"><div class="col-span-2 md:col-span-1"><a class="inline-block" href="/"><img alt="WriteHuman" loading="lazy" width="160" height="36" decoding="async" data-nimg="1" class="brightness-0 invert" style="color:transparent" srcSet="/_next/image?url=%2Flogo.png&amp;w=256&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4 1x, /_next/image?url=%2Flogo.png&amp;w=384&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4 2x" src="/_next/image?url=%2Flogo.png&amp;w=384&amp;q=75&amp;dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4"/></a><p class="mt-2 text-sm">Elevate AI to human perfection.</p><div class="mt-5 flex flex-wrap items-center gap-x-2.5 gap-y-2.5 md:flex-col md:items-start"><a href="https://apps.apple.com/us/app/writehuman-ai-humanizer/id6761026923" target="_blank" rel="noopener noreferrer" aria-label="Download on the App Store" class="inline-flex shrink-0 transition-opacity hover:opacity-80 md:w-[134.29px]"><img alt="Download on the App Store" loading="lazy" width="135" height="45" decoding="async" data-nimg="1" class="h-10 w-auto md:h-auto md:w-[134.29px]" style="color:transparent" src="/badges/app-store.svg?dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4"/></a><a href="https://play.google.com/store/apps/details?id=com.writehuman.app" target="_blank" rel="noopener noreferrer" aria-label="Get it on Google Play" class="inline-flex h-10 w-[134.29px] shrink-0 overflow-hidden transition-opacity hover:opacity-80"><img alt="Get it on Google Play" loading="lazy" width="154" height="60" decoding="async" data-nimg="1" class="h-[59.524px] w-auto max-w-none -m-[9.762px]" style="color:transparent" src="/badges/google-play.png?dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4"/></a><!--$?--><template id="B:1"></template><a href="https://chromewebstore.google.com/detail/writehuman-ai-humanizer-g/bjpidpnldcfjnfbeigjamlhgjpppnooi" target="_blank" rel="noopener noreferrer" class="inline-flex h-10 w-[134.29px] shrink-0 items-center justify-center gap-[6px] whitespace-nowrap rounded-[6px] border border-[#a6a6a6] bg-black transition-opacity hover:opacity-80"><svg viewBox="0 0 48 48" aria-hidden="true" class="h-[22px] w-[22px] shrink-0"><circle cx="24" cy="24" r="20" fill="#fff"></circle><path fill="#EA4335" d="M24 14h17.3a20 20 0 0 0-34.6 0l6.1 10.6A11.9 11.9 0 0 1 24 14Z"></path><path fill="#FBBC05" d="M6.7 14A20 20 0 0 0 24 44l6.1-10.6A11.9 11.9 0 0 1 12.8 24Z"></path><path fill="#34A853" d="M41.3 14H24a10 10 0 0 1 8.7 15l-8.6 15A20 20 0 0 0 41.3 14Z"></path><circle cx="24" cy="24" r="8.4" fill="#1A73E8"></circle></svg><span class="flex flex-col text-left text-white"><span class="text-[7px] leading-none">Available in the</span> <span class="mt-[3px] text-[10.5px] font-medium leading-none tracking-[-0.01em]">Chrome Web Store</span></span></a><!--/$--></div></div><div><h3 class="mb-3 text-sm font-bold uppercase tracking-wider text-white">Product</h3><ul class="space-y-2"><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/api">API</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/">AI Humanizer</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/ai-detector">AI Detector</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/claude-watermark-remover">Claude Watermark Remover</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" target="_blank" rel="noopener noreferrer" href="https://www.aiimagedetector.com?utm_source=writehuman&amp;utm_medium=footer&amp;utm_campaign=sister_site">AI Image Detector</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" target="_blank" rel="noopener noreferrer" href="https://www.aivideodetector.com?utm_source=writehuman&amp;utm_medium=footer&amp;utm_campaign=sister_site">AI Video Detector</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/word-counter-free">Word Counter</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/mobile-app">Mobile App</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/extension">Chrome Extension</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/ai-humanizer-api-for-content-marketing">API for Content Marketing</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/ai-humanizer-api-for-seo-agencies">API for SEO Agencies</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/ai-humanizer-api-for-saas">API for SaaS</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/ai-humanizer-api-for-enterprise">API for Enterprise</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/mcp">MCP</a></li></ul></div><div><h3 class="mb-3 text-sm font-bold uppercase tracking-wider text-white">Resources</h3><ul class="space-y-2"><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/pricing">Pricing</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/blog">Blog</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare">Comparisons</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/faqs">FAQs</a></li></ul></div><div><h3 class="mb-3 text-sm font-bold uppercase tracking-wider text-white">Compare</h3><ul class="space-y-2"><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/undetectable-ai-alternative">vs AI Detector</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/hix-ai-alternative">vs HIX.AI</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/walter-writes-alternative">vs Walter Writes</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/stealthgpt-alternative">vs StealthGPT</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/stealth-writer-alternative">vs Stealth Writer</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/phrasly-ai-alternative">vs Phrasly AI</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/clever-ai-humanizer-alternative">vs Clever AI Humanizer</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/humbot-alternative">vs Humbot</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/ai-humanize-io-alternative">vs AI Humanize</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/humanize-ai-pro-alternative">vs Humanize AI Pro</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/super-humanizer-alternative">vs Super Humanizer</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/natural-write-alternative">vs Natural Write</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/unaimytext-alternative">vs UnAIMyText</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/grammarly-alternative">vs Grammarly</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/compare/notegpt-alternative">vs NoteGPT</a></li></ul></div><div><h3 class="mb-3 text-sm font-bold uppercase tracking-wider text-white">Company</h3><ul class="space-y-2"><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/about">About</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/affiliates">Affiliates</a></li><li><a href="mailto:support@finix-wh.earnwithdigital.online" class="text-sm transition-colors hover:text-wh-purple-300">Contact Us</a></li></ul></div><div><h3 class="mb-3 text-sm font-bold uppercase tracking-wider text-white">Legal</h3><ul class="space-y-2"><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/privacy">Privacy Policy</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/terms">Terms of Service</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/cookies">Cookie Policy</a></li><li><a class="text-sm transition-colors hover:text-wh-purple-300" href="/privacy-choices">Do Not Sell or Share My Personal Information</a></li></ul></div></div><div class="mt-10 flex flex-col-reverse items-center gap-4 border-t border-gray-800/50 pt-8 text-sm sm:flex-row sm:justify-between"><div class="flex flex-col items-center gap-3 sm:flex-row sm:gap-6"><p>© <!-- -->2026<!-- --> WriteHuman. All rights reserved.</p><a href="https://climate.stripe.com/TUR0X6" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 text-xs text-gray-400 transition-colors hover:text-wh-purple-300"><svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" class="h-3.5 w-3.5"><path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm3.84 6.05-4.3 4.66a.6.6 0 0 1-.86.03L4.2 8.4a.6.6 0 0 1 .82-.88l2.04 1.9 3.88-4.2a.6.6 0 0 1 .9.83Z"></path></svg>Contributing to carbon removal via Stripe Climate</a></div><div class="flex flex-wrap items-center justify-center gap-4"><a href="https://humanizerbench.com/leaderboard/?utm_source=writehuman&amp;utm_medium=footer&amp;utm_campaign=humanizerbench" target="_blank" rel="noopener noreferrer" aria-label="Ranked #1 AI humanizer on HumanizerBench, October 2026" class="inline-flex shrink-0 transition-opacity hover:opacity-80"><img alt="Ranked #1 AI humanizer on HumanizerBench, October 2026" loading="lazy" width="344" height="72" decoding="async" data-nimg="1" class="h-8 w-auto" style="color:transparent" src="/badges/humanizerbench.svg?dpl=dpl_EhFUSFm793YBfGFWahVixLQJYBa4"/></a><a href="https://www.tiktok.com/@writehuman" target="_blank" rel="noopener noreferrer" aria-label="TikTok" class="text-gray-400 transition-colors hover:text-wh-purple-300"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="h-5 w-5"><path d="M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5.8 20.1a6.34 6.34 0 0 0 10.86-4.43V8.83a8.16 8.16 0 0 0 4.77 1.52V6.89a4.85 4.85 0 0 1-1.84-.2z"></path></svg></a><a href="https://www.instagram.com/writehumanai/" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="text-gray-400 transition-colors hover:text-wh-purple-300"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="h-5 w-5"><path d="M12 2.16c3.2 0 3.58.01 4.85.07 1.17.05 1.8.25 2.23.41.56.22.96.48 1.38.9.42.42.68.82.9 1.38.16.42.36 1.06.41 2.23.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.05 1.17-.25 1.8-.41 2.23-.22.56-.48.96-.9 1.38-.42.42-.82.68-1.38.9-.42.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41a3.71 3.71 0 0 1-1.38-.9 3.71 3.71 0 0 1-.9-1.38c-.16-.42-.36-1.06-.41-2.23-.06-1.27-.07-1.65-.07-4.85s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68 1.38-.9.42-.16 1.06-.36 2.23-.41C8.42 2.17 8.8 2.16 12 2.16zM12 0C8.74 0 8.33.01 7.05.07 5.78.13 4.9.33 4.14.63a5.88 5.88 0 0 0-2.13 1.38A5.88 5.88 0 0 0 .63 4.14C.33 4.9.13 5.78.07 7.05.01 8.33 0 8.74 0 12s.01 3.67.07 4.95c.06 1.27.26 2.15.56 2.91.32.79.74 1.46 1.38 2.13a5.88 5.88 0 0 0 2.13 1.38c.76.3 1.64.5 2.91.56C8.33 23.99 8.74 24 12 24s3.67-.01 4.95-.07c1.27-.06 2.15-.26 2.91-.56a5.88 5.88 0 0 0 2.13-1.38 5.88 5.88 0 0 0 1.38-2.13c.3-.76.5-1.64.56-2.91.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.06-1.27-.26-2.15-.56-2.91a5.88 5.88 0 0 0-1.38-2.13A5.88 5.88 0 0 0 19.86.63C19.1.33 18.22.13 16.95.07 15.67.01 15.26 0 12 0zm0 5.84a6.16 6.16 0 1 0 0 12.32 6.16 6.16 0 0 0 0-12.32zm0 10.16a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.41-11.85a1.44 1.44 0 1 0 0 2.88 1.44 1.44 0 0 0 0-2.88z"></path></svg></a><a href="https://www.linkedin.com/company/writehuman/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="text-gray-400 transition-colors hover:text-wh-purple-300"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="h-5 w-5"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.86 0-2.14 1.45-2.14 2.95v5.66H9.35V9h3.42v1.56h.05a3.75 3.75 0 0 1 3.37-1.85c3.6 0 4.27 2.37 4.27 5.46v6.28zM5.34 7.43a2.07 2.07 0 1 1 0-4.13 2.07 2.07 0 0 1 0 4.13zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a><a href="https://www.youtube.com/@WriteHumanAI" target="_blank" rel="noopener noreferrer" aria-label="YouTube" class="text-gray-400 transition-colors hover:text-wh-purple-300"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="h-5 w-5"><path d="M23.5 6.2a3 3 0 0 0-2.1-2.12C19.55 3.5 12 3.5 12 3.5s-7.55 0-9.4.58A3 3 0 0 0 .5 6.2 31.4 31.4 0 0 0 0 12a31.4 31.4 0 0 0 .5 5.8 3 3 0 0 0 2.1 2.12c1.85.58 9.4.58 9.4.58s7.55 0 9.4-.58a3 3 0 0 0 2.1-2.12c.34-1.9.5-3.83.5-5.8a31.4 31.4 0 0 0-.5-5.8zM9.6 15.6V8.4l6.27 3.6-6.27 3.6z"></path></svg></a></div></div></div></footer><!--$--><!--/$--><!--$--><!--/$--><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"(function(w,r){w._rwq=r;w[r]=w[r]||function(){(w[r].q=w[r].q||[]).push(arguments)}})(window,'rewardful');","id":"rewardful-queue"}])</script><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/immutable/chunks/195ohvdy_du6y.js","static/immutable/chunks/22i2vrnsw-lh6.js","static/immutable/chunks/3ifpg-k8jlpy6.js","static/immutable/chunks/1pawciohjxwzc.js","static/immutable/chunks/0riwd57whys4t.js","static/immutable/chunks/2qk_pnpmb3qui.js"],"runtimeModuleIds":[494553]});</script><script src="/_next/static/immutable/chunks/195ohvdy_du6y.js" async=""></script><div hidden id="S:0"><a href="https://chromewebstore.google.com/detail/writehuman-ai-humanizer-g/bjpidpnldcfjnfbeigjamlhgjpppnooi" target="_blank" rel="noopener noreferrer" class="pointer-events-auto absolute right-8 -top-1 -z-10 hidden md:inline-flex items-center gap-1.5 rounded-b-2xl border border-t-0 border-white/40 bg-white/60 px-4 pt-3 pb-1.5 text-sm font-medium text-gray-700 shadow-md shadow-black/[0.04] backdrop-blur-md hover:bg-white/80 header-badge opacity-100 translate-y-14" aria-label="Get WriteHuman for Chrome on the Chrome Web Store"><svg class="h-4 w-4 shrink-0" viewBox="0 0 48 48" aria-hidden="true"><circle cx="24" cy="24" r="20" fill="#fff"></circle><path fill="#EA4335" d="M24 14h17.3a20 20 0 0 0-34.6 0l6.1 10.6A11.9 11.9 0 0 1 24 14Z"></path><path fill="#FBBC05" d="M6.7 14A20 20 0 0 0 24 44l6.1-10.6A11.9 11.9 0 0 1 12.8 24Z"></path><path fill="#34A853" d="M41.3 14H24a10 10 0 0 1 8.7 15l-8.6 15A20 20 0 0 0 41.3 14Z"></path><circle cx="24" cy="24" r="8.5" fill="#fff"></circle><circle cx="24" cy="24" r="7" fill="#1A73E8"></circle></svg><span><strong class="font-semibold text-gray-900">WriteHuman for Chrome.</strong> Humanize in any tab</span><span aria-hidden="true" class="shrink-0">→</span></a></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><a href="https://chromewebstore.google.com/detail/writehuman-ai-humanizer-g/bjpidpnldcfjnfbeigjamlhgjpppnooi" target="_blank" rel="noopener noreferrer" class="inline-flex h-10 w-[134.29px] shrink-0 items-center justify-center gap-[6px] whitespace-nowrap rounded-[6px] border border-[#a6a6a6] bg-black transition-opacity hover:opacity-80"><svg viewBox="0 0 48 48" aria-hidden="true" class="h-[22px] w-[22px] shrink-0"><circle cx="24" cy="24" r="20" fill="#fff"></circle><path fill="#EA4335" d="M24 14h17.3a20 20 0 0 0-34.6 0l6.1 10.6A11.9 11.9 0 0 1 24 14Z"></path><path fill="#FBBC05" d="M6.7 14A20 20 0 0 0 24 44l6.1-10.6A11.9 11.9 0 0 1 12.8 24Z"></path><path fill="#34A853" d="M41.3 14H24a10 10 0 0 1 8.7 15l-8.6 15A20 20 0 0 0 41.3 14Z"></path><circle cx="24" cy="24" r="8.4" fill="#1A73E8"></circle></svg><span class="flex flex-col text-left text-white"><span class="text-[7px] leading-none">Available in the</span> <span class="mt-[3px] text-[10.5px] font-medium leading-none tracking-[-0.01em]">Chrome Web Store</span></span></a></div><script>$RC("B:1","S:1")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n4:\"/_next/static/immutable/chunks/13u2r1r-3w9tl.js\"\n5:\"/_next/static/immutable/chunks/2nmdb_iaht381.js\"\n6:\"/_next/static/immutable/chunks/0xs81pqh53mqt.js\"\n7:\"/_next/static/immutable/chunks/11zvwir-v9om6.js\"\n8:\"/_next/static/immutable/chunks/3n5kupaf6qqw9.js\"\n9:\"/_next/static/immutable/chunks/100qg5_rfsd3n.js\"\na:I[339756,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\nb:I[837457,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n10:I[897367,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"OutletBoundary\"]\n11:\"$Sreact.suspense\"\n13:\"ViewportBoundary\"\n14:I[897367,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"$13\"]\n16:\"MetadataBoundary\"\n17:I[897367,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"$16\"]\n19:\"/_next/static/immutable/chunks/240ygy35o5jjk.js\"\n1a:I[563491,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$19\"],\"default\"]\n:HL[\"/_next/static/immutable/chunks/25tvu93u10ijf.css\",\"style\"]\n:HL[\"/_next/static/immutable/chunks/2_lrtwghit8cw.css\",\"style\"]\n:HL[\"/_next/static/immutable/media/03717988577a8481-s.p.0p0r_80m95f2u.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/immutable/media/07c7676b89ed2778-s.p.45535valc9rzk.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\nc:X\ne:[[\"children\",{\"s\":\"__PAGE__\",\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[\"$Lf\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/1ci-ypxrhungx.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@12\"}]}]]}],\"p\":false,\"v\":null}}]]\nd:[[\"children\",{\"s\":\"docs\",\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$c\"},\"c\":\"$Qe\"}]]\n3:[[\"children\",{\"s\":\"api\",\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$c\"},\"c\":\"$Qd\"}]]\n0:{\"P\":null,\"c\":[\"\",\"api\",\"docs\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":16,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/25tvu93u10ijf.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/2_lrtwghit8cw.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/13u2r1r-3w9tl.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/2nmdb_iaht381.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/immutable/chunks/0xs81pqh53mqt.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/immutable/chunks/11zvwir-v9om6.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/immutable/chunks/3n5kupaf6qqw9.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/immutable/chunks/100qg5_rfsd3n.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L2\"]}],\"p\":false,\"v\":null},\"c\":\"$Q3\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L14\",null,{\"children\":\"$L15\"}],[\"$\",\"$L17\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1a\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/25tvu93u10ijf.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/2_lrtwghit8cw.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":false,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\nc:C\n15:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, user-scalable=yes, viewport-fit=cover\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#9a5cc2\"}]]\n1b:I[544636,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"Providers\"]\n1c:I[603374,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n1d:\"/_next/static/immutable/chunks/1u6lxoqg-_1b1.js\"\n1e:I[758298,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1d\"],\"default\"]\n1f:\"/_next/static/immutable/chunks/1ci-ypxrhungx.js\"\n20:I[522016,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1f\"],\"\"]\n21:I[58234,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n22:I[233284,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n23:I[583041,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n24:I[979293,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n25:I[452302,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n26:I[479520,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"\"]\n27:I[223315,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n28:I[257063,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"default\"]\n29:I[27201,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\"],\"IconMark\"]\n:HL[\"https://r.wdfl.co/rw.js\",\"script\"]\n2:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#9a5cc2\"}],[\"$\",\"meta\",null,{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"history.scrollRestoration=\\\"manual\\\"\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){var d=['write','human'].join('')+'.ai',h=location.hostname.replace(/\\\\.$/,'');var v=[\\\"ppa.lecrev.namuh-etirw-83xi3nvih-2namuhetirw\\\",\\\"ppa.lecrev.namuh-etirw-niam-tig-2namuhetirw\\\"].map(function(s){return s.split('').reverse().join('')});if(h===d||h==='www.'+d||h==='mcp.'+d||v.indexOf(h)\u003e=0||h==='localhost'||h==='127.0.0.1'||h==='[::1]'||/\\\\.(localhost|test)$/.test(h)||h.indexOf('192.168.')===0||/\\\\.translate\\\\.goog$/.test(h)||h==='web.archive.org')return;var o='https://'+d;try{var c=document.querySelector('link[rel=\\\"canonical\\\"]');if(c)c.setAttribute('href',o+new URL(c.getAttribute('href')||'/',location.href).pathname);var m=document.createElement('meta');m.name='robots';m.content='noindex, nofollow';document.head.appendChild(m);}catch(e){}location.replace(o+location.pathname+location.search);})()\"}}]]}],[\"$\",\"body\",null,{\"className\":\"_0bjUvq_variable _32HYhG_variable font-sans min-h-screen flex flex-col antialiased\",\"children\":[[\"$\",\"$L1b\",null,{\"children\":[[\"$\",\"$L1c\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 pt-24 sm:pt-[7.5rem]\",\"children\":[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$1e\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/1u6lxoqg-_1b1.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"flex min-h-[60vh] flex-col items-center justify-center px-4 text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"mb-4 text-4xl sm:text-5xl lg:text-6xl font-bold text-gray-900\",\"children\":\"404\"}],[\"$\",\"h2\",null,{\"className\":\"mb-4 text-xl sm:text-2xl font-semibold text-gray-700\",\"children\":\"Page Not Found\"}],[\"$\",\"p\",null,{\"className\":\"mb-8 max-w-md text-base sm:text-lg text-gray-500\",\"children\":\"Sorry, we couldn't find the page you're looking for. It may have been moved or no longer exists.\"}],[\"$\",\"$L20\",null,{\"href\":\"/\",\"className\":\"rounded-lg bg-purple-600 px-5 py-2.5 text-base sm:px-6 sm:py-3 sm:text-lg font-medium text-white transition hover:bg-purple-700\",\"children\":\"Back to Homepage\"}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L21\",null,{}],false,false]}],[\"$\",\"$L22\",null,{\"hosts\":[\"ppa.lecrev.namuh-etirw-83xi3nvih-2namuhetirw\",\"ppa.lecrev.namuh-etirw-niam-tig-2namuhetirw\"],\"mode\":\"enforce\",\"exemptMcpPaths\":false}],[\"$\",\"$L23\",null,{}],[\"$\",\"$L24\",null,{}],[\"$\",\"$L25\",null,{}],[[\"$\",\"link\",null,{\"rel\":\"preload\",\"as\":\"script\",\"href\":\"https://r.wdfl.co/rw.js\"}],[\"$\",\"$L26\",null,{\"id\":\"rewardful-queue\",\"strategy\":\"beforeInteractive\",\"children\":\"(function(w,r){w._rwq=r;w[r]=w[r]||function(){(w[r].q=w[r].q||[]).push(arguments)}})(window,'rewardful');\"}],[\"$\",\"$L27\",null,{\"id\":\"907fff\"}]],[\"$\",\"$L28\",null,{}]]}]]}]\n12:null\n18:[[\"$\",\"title\",\"0\",{\"children\":\"AI Humanizer API Documentation — REST API Reference | WriteHuman\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Authentication, official TypeScript and Python SDKs, code examples in TypeScript, Python, cURL \u0026 JavaScript, and 40+ languages.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/site.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://finix-wh.earnwithdigital.online/api/docs\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"AI Humanizer API Documentation — REST API Reference\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Complete developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Official TypeScript and Python SDKs, code examples in TypeScript, Python, cURL \u0026 JavaScript, 40+ languages.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://finix-wh.earnwithdigital.online/api/docs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image\",\"content\":\"https://finix-wh.earnwithdigital.online/opengraph-image.png\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"628\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"AI Humanizer API Documentation — REST API Reference\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"Complete developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Official TypeScript and Python SDKs, code examples in TypeScript, Python, cURL \u0026 JavaScript, 40+ languages.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://finix-wh.earnwithdigital.online/opengraph-image.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"19\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"20\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$L29\",\"21\",{}]]\nf:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Home\\\",\\\"item\\\":\\\"https://finix-wh.earnwithdigital.online\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"AI Humanizer API\\\",\\\"item\\\":\\\"https://finix-wh.earnwithdigital.online/api\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"Documentation\\\",\\\"item\\\":\\\"https://finix-wh.earnwithdigital.online/api/docs\\\"}]}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"TechArticle\\\",\\\"headline\\\":\\\"AI Humanizer API Documentation\\\",\\\"description\\\":\\\"Complete developer reference for the WriteHuman API — humanize AI text, detect AI authorship, and track usage. Authentication, code examples, and supported languages.\\\",\\\"url\\\":\\\"https://finix-wh.earnwithdigital.online/api/docs\\\",\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"WriteHuman\\\",\\\"url\\\":\\\"https://finix-wh.earnwithdigital.online\\\"},\\\"mainEntityOfPage\\\":\\\"https://finix-wh.earnwithdigital.online/api/docs\\\",\\\"proficiencyLevel\\\":\\\"Beginner\\\"}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"VideoObject\\\",\\\"name\\\":\\\"How to Integrate the WriteHuman AI Humanizer API\\\",\\\"description\\\":\\\"Step-by-step tutorial covering WriteHuman API authentication and setup, plus three real integrations: calling the API directly with Python, wiring it into a Lovable app, and using it with Claude.\\\",\\\"thumbnailUrl\\\":[\\\"https://i.ytimg.com/vi/AUAI5kWrKIk/maxresdefault.jpg\\\",\\\"https://i.ytimg.com/vi/AUAI5kWrKIk/hqdefault.jpg\\\"],\\\"uploadDate\\\":\\\"2026-08-05T12:47:30-07:00\\\",\\\"duration\\\":\\\"PT7M13S\\\",\\\"embedUrl\\\":\\\"https://www.youtube-nocookie.com/embed/AUAI5kWrKIk\\\",\\\"isFamilyFriendly\\\":true,\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"WriteHuman\\\",\\\"url\\\":\\\"https://finix-wh.earnwithdigital.online\\\"}}\"}}],[\"$\",\"section\",null,{\"className\":\"-mt-24 sm:-mt-[7.5rem] hero-gradient relative overflow-hidden pb-16\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute -left-32 -top-24 h-[350px] w-[350px] lg:h-[500px] lg:w-[500px] rounded-full bg-[#af72d5]/10 blur-3xl\",\"style\":{\"animation\":\"blobFloat 14s ease-in-out infinite\"}}],[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute -right-24 top-1/4 h-[300px] w-[300px] lg:h-[400px] lg:w-[400px] rounded-full bg-[#af72d5]/8 blur-3xl\",\"style\":{\"animation\":\"blobFloat 16s ease-in-out infinite 2s\"}}],[\"$\",\"div\",null,{\"className\":\"dot-grid-subtle pointer-events-none absolute inset-0\"}],[\"$\",\"div\",null,{\"className\":\"relative mx-auto max-w-6xl px-4 pt-36 sm:pt-44 text-center\",\"children\":[[\"$\",\"span\",null,{\"className\":\"inline-block rounded-full border border-[#af72d5]/20 bg-[#af72d5]/5 px-4 py-1.5 text-sm font-medium text-[#af72d5]\",\"children\":[\"API Reference \",\"v1.1\"]}],[\"$\",\"h1\",null,{\"className\":\"mt-5 text-4xl sm:text-5xl lg:text-6xl font-bold tracking-tight text-gray-900\",\"children\":\"AI Humanizer API Documentation\"}],[\"$\",\"p\",null,{\"className\":\"mx-auto mt-4 max-w-2xl text-lg text-gray-600 leading-relaxed\",\"children\":\"Humanize AI-generated text, detect AI authorship, and track usage through a simple REST API. Simple authentication, predictable pricing, 40+ languages.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 inline-flex items-center gap-2 rounded-xl border border-gray-200 bg-white/80 backdrop-blur-sm px-4 py-2.5 shadow-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-xs font-medium uppercase text-gray-400\",\"children\":\"Base URL\"}],[\"$\",\"code\",null,{\"className\":\"font-mono text-sm font-semibold text-gray-900\",\"children\":\"https://api.finix-wh.earnwithdigital.online\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-8 flex flex-wrap items-center justify-center gap-3\",\"children\":[\"$L2a\",\"$L2b\",\"$L2c\"]}]]}]]}],\"$L2d\"]\n2e:I[605279,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1f\"],\"default\"]\n30:I[33635,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1f\"],\"default\"]\n2a:[[\"$\",\"$L20\",null,{\"href\":\"/api#pricing\",\"className\":\"rounded-xl bg-[#af72d5] px-6 py-3 text-sm font-semibold text-white shadow-md shadow-[#af72d5]/20 transition hover:bg-[#9b5cbf]\",\"children\":\"View Pricing\"}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 rounded-xl border border-gray-200 bg-white/80 px-4 py-2.5 text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-500\",\"children\":\"Starting at\"}],[\"$\",\"span\",null,{\"className\":\"font-bold text-gray-900\",\"children\":\"$$0.14\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"/ 1K words\"}]]}]]\n2b:[\"$\",\"a\",null,{\"href\":\"#video-guide\",\"className\":\"inline-flex items-center gap-2 rounded-xl border border-gray-300 bg-white px-6 py-3 text-sm font-semibold text-gray-700 shadow-sm transition hover:bg-gray-50\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"h-4 w-4 text-[#af72d5]\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"children\":[\"$\",\"path\",null,{\"d\":\"M8 5.14v13.72c0 .86.94 1.39 1.68.94l11.02-6.86a1.1 1.1 0 0 0 0-1.88L9.68 4.2A1.1 1.1 0 0 0 8 5.14Z\"}]}],\"Watch Video Guide\"]}]\n2f:T658b,# WriteHuman API — LLM Integration Reference\n\nUse this document to implement an integration with the WriteHuman API (AI text humanization + AI authorship detection). It contains everything you need: base URL, authentication, endpoints, request/response schemas, error codes, limits, and code examples.\n\n## Quick facts\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nThe API exposes three REST endpoints, all authenticated the same way: `POST /v1/humanize`, `GET /v1/usage`, and `POST /v1/detect`.\n\n---\n\n## Authentication\nEvery request to the WriteHuman API (`https://api.finix-wh.earnwithdigital.online`) must include a Bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer wh_live_your_api_key_here\n```\n\n- Keys use the prefix `wh_live_` followed by a unique token.\n- Create and manage keys from the WriteHuman dashboard (up to 5 keys; revoke any key at any time).\n- Treat keys like passwords — keep them server-side and never expose them in client code.\n\n---\n\n## Plans \u0026 Limits\n| Limit | Standard | Premium |\n| --- | --- | --- |\n| Monthly words | 125,000 | 400,000 – 3,000,000 |\n| Max words per request | 2,000 | 4,000 – 6,000 |\n| Output variations | 1 | 3 |\n| Human-likeness scores | No | Yes |\n| Rate limit | 40 req/min | 120 – 160 req/min |\n\nPremium plans automatically return 3 output variations per request with human-likeness scores. Standard plans return a single result without scores. Usage is tracked by input-text word count. Words are deducted from your subscription first, then any top-up credits. Top-up packs (100,000 words each) never expire. Premium is available in four monthly word sizes: 400K, 800K, 1.5M, and 3M. Premium 400K allows 4,000 words per request and 120 requests per minute; 800K and up allow 6,000 and 160.\n\n---\n\n## Errors\nEvery non-2xx response is a JSON object with a stable machine-readable `code` and a human-readable `error` message. Branch on `code`; the wording of `error` may change. A 402 for an exhausted balance also carries `words_remaining`. Every 429, 503 and 504 carries a `Retry-After` header in seconds; wait at least that long before retrying. Those statuses leave nothing charged and are safe to retry. A 429, 503 or 504 without the JSON body and `code` came from a load balancer or proxy, not the API, and carries no such guarantee: handle it like a client-side timeout and do not resend a billed request automatically. Words are charged only on a 200, with one exception: a `500 billing_failed` is returned after a result was produced but the usage write failed part-way, and some of the request's words, from the included allowance and/or from top-up credits, may already have been charged. Check /v1/usage after one.\n\n| Status | `code` | Meaning | SDK class |\n| --- | --- | --- | --- |\n| 422 | `invalid_request` | The body failed validation (missing `text`, too short or too long). | `InvalidRequestError` |\n| 422 | `forbidden_param` | A parameter that is not available on the public API was sent. | `InvalidRequestError` |\n| 422 | `word_limit` | The input is over the per-request word cap for your plan. | `InvalidRequestError` |\n| 422 | `moderation_blocked` | Content moderation refused the input (`/v1/humanize` only). | `ModerationError` |\n| 401 | `missing_api_key` | No usable `Authorization: Bearer` header. | `AuthenticationError` |\n| 401 | `invalid_api_key` | The key is unknown or revoked. | `AuthenticationError` |\n| 402 | `no_subscription` | The key is valid but the account has no active API subscription. | `NoSubscriptionError` |\n| 402 | `insufficient_balance` | Not enough words left for this request; `words_remaining` is included. | `InsufficientBalanceError` |\n| 403 | `reverify_required` | The account must be re-verified by email. The account owner signs in at finix-wh.earnwithdigital.online to continue; then the account's newest key created after the check began works within about a minute; every other key stays disabled until the check ends, so create a new key. Not retried by the SDKs. | `ReverifyRequiredError` |\n| 429 | `rate_limited` | Over your plan's requests per minute. `Retry-After` is the time to the next window. | `RateLimitError` |\n| 429 | `auth_locked_out` | Too many failed authentications from this address. `Retry-After` is the remaining lockout. | `RateLimitError` |\n| 429 | `queue_full` | The admission queue is full. Retry after `Retry-After`. | `RateLimitError` |\n| 429 | `queue_timeout` | The request waited in the admission queue past its deadline. Retry after `Retry-After`. | `RateLimitError` |\n| 503 | `at_capacity` | Cluster-wide capacity shed. Retry after `Retry-After`. | `ServiceUnavailableError` |\n| 503 | `billing_unavailable` | The billing store is unreachable; the request was refused rather than served unmetered. Retry after `Retry-After`. | `ServiceUnavailableError` |\n| 503 | `detector_unavailable` | The detector, or the translation step before it, is unavailable (`/v1/detect` only). Retry after `Retry-After`. | `ServiceUnavailableError` |\n| 504 | `timeout` | Generation did not finish within the server deadline (`/v1/humanize` only). Nothing charged; retry after `Retry-After`. | `ServerTimeoutError` |\n| 500 | `processing_failed` | Generation raised an error. | `ProcessingError` |\n| 500 | `no_results` | Generation finished without a usable result. | `ProcessingError` |\n| 500 | `safety_limit` | Generation produced far more text than the input; discarded. | `ProcessingError` |\n| 500 | `billing_failed` | The result was produced but the usage write failed part-way; included and/or top-up words may already have been charged. Check `/v1/usage`. | `BillingError` |\n\nIn the official SDKs every failure is a subclass of `WriteHumanError` carrying `code`, `status` and the last `Retry-After` (`retry_after` in Python, `retryAfter` in TypeScript); `InsufficientBalanceError` adds `words_remaining` / `wordsRemaining`. The SDK class column names the one raised (Python) or thrown (TypeScript) for each `code`. A code the installed SDK version does not know becomes `APIError` with `code` preserved; a response that is not the contract's JSON, no response within the client timeout, or a failed connection becomes `ProtocolError`, `ClientTimeoutError` or `ConnectionError` with no `code`.\n\n---\n\n## POST /v1/humanize\nRewrite AI-generated text so it reads as naturally human. Billed by input-text word count; words are deducted from your monthly subscription allowance first, then from purchased top-up credits. The public API accepts `text`, `tone`, and `language` only — `model`, `num_outputs`, and `sequence_id` are not available. A request that does not finish within 170 seconds returns 504 `timeout` with nothing charged.\n\n`POST https://api.finix-wh.earnwithdigital.online/v1/humanize`\n\n### Request body (application/json)\n- `text` (string, required) — The text to humanize. Constraints: \u003e= 30 characters, \u003c= 100,000 characters.\n- `tone` (string, optional) — Optional writing tone. Omit for default style. Constraints: Allowed: professional, academic, blog, casual, creative, scientific, technical.\n- `language` (string | null, optional) — Target language (e.g. English, Spanish, Chinese (Mandarin)). Auto-detected if omitted.\n\n### Response (200 — text humanized successfully)\n- `id` (string) — Unique identifier for this humanization request.\n- `created` (integer) — Unix timestamp (milliseconds) when the request was received.\n- `results` (string[]) — Humanized text variations, sorted by score (best first).\n- `scores` ((number | null)[] | null) — Human-likeness score for each result (0–1, higher = more human). Note: Premium plans only. `null` on Standard plans.\n- `input_words` (integer) — Number of words billed for this request.\n- `words_remaining` (object) — Your remaining word balance after this request. Constraints: Fields: included (integer), topup (integer), total (integer).\n\n#### Example response — Standard plan (single result, `scores: null`)\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"AI has changed how we create content and communicate online.\"\n  ],\n  \"scores\": null,\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 124986,\n    \"topup\": 0,\n    \"total\": 124986\n  }\n}\n```\n\n#### Example response — Premium plan (3 variations with human-likeness scores)\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"Artificial intelligence has changed the game in content creation and communication.\",\n    \"The role of artificial intelligence in transforming content creation and online communication is unprecedented.\",\n    \"The use of artificial intelligence has changed the way we think about content creation and online communication.\"\n  ],\n  \"scores\": [0.82, 0.81, 0.79],\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 399986,\n    \"topup\": 0,\n    \"total\": 399986\n  }\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header. Use: Bearer \u003capi_key\u003e\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription or insufficient word balance.\n  - No active subscription:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n  - Insufficient word balance:\n    ```json\n    {\n      \"error\": \"Insufficient word balance\",\n      \"code\": \"insufficient_balance\",\n      \"words_remaining\": {\n        \"included\": 12,\n        \"topup\": 0,\n        \"total\": 12\n      }\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **422** — Invalid input, forbidden parameters, over word limit, or content blocked by moderation.\n  - Invalid request body:\n    ```json\n    {\n      \"error\": \"Invalid request: ...\",\n      \"code\": \"invalid_request\"\n    }\n    ```\n  - `model` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The model parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - `num_outputs` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The num_outputs parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - `sequence_id` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The sequence_id parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - Over word limit:\n    ```json\n    {\n      \"error\": \"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\",\n      \"code\": \"word_limit\"\n    }\n    ```\n  - Content blocked:\n    ```json\n    {\n      \"error\": \"Content blocked: sexual\",\n      \"code\": \"moderation_blocked\"\n    }\n    ```\n- **429** — Rate limit, queue capacity, or too many failed auth attempts.\n  - Rate limited:\n    ```json\n    {\n      \"error\": \"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\",\n      \"code\": \"rate_limited\"\n    }\n    ```\n  - Too many failed auth attempts:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n  - Request queue full:\n    ```json\n    {\n      \"error\": \"Too many queued requests. Please retry shortly.\",\n      \"code\": \"queue_full\"\n    }\n    ```\n  - Queue wait timeout:\n    ```json\n    {\n      \"error\": \"Request waited too long for capacity. Please retry.\",\n      \"code\": \"queue_timeout\"\n    }\n    ```\n- **500** — Processing failure. No words charged, except that `billing_failed` may have charged some of the request's words (included and/or top-up) before the usage write failed.\n  - Generation failed:\n    ```json\n    {\n      \"error\": \"Processing failed\",\n      \"code\": \"processing_failed\"\n    }\n    ```\n  - Generation returned nothing usable:\n    ```json\n    {\n      \"error\": \"Processing returned no results\",\n      \"code\": \"no_results\"\n    }\n    ```\n  - Output exceeded the safety limit:\n    ```json\n    {\n      \"error\": \"Output exceeded safety limit\",\n      \"code\": \"safety_limit\"\n    }\n    ```\n  - Billing update failed after generation:\n    ```json\n    {\n      \"error\": \"Billing update failed\",\n      \"code\": \"billing_failed\"\n    }\n    ```\n- **503** — Service at capacity, or billing temporarily unavailable. No words charged.\n  - Service at capacity:\n    ```json\n    {\n      \"error\": \"Service is at capacity. Please retry shortly.\",\n      \"code\": \"at_capacity\"\n    }\n    ```\n  - Billing temporarily unavailable:\n    ```json\n    {\n      \"error\": \"Service temporarily unavailable, please retry shortly.\",\n      \"code\": \"billing_unavailable\"\n    }\n    ```\n- **504** — The request did not finish within the server deadline (170 seconds from request entry; generation is stopped once 10 seconds remain so that billing is never cut part-way). No words charged; safe to retry.\n  - Example:\n    ```json\n    {\n      \"error\": \"Processing did not finish within 160 seconds. Nothing was charged; please retry.\",\n      \"code\": \"timeout\"\n    }\n    ```\n\n### Example request (cURL)\n```bash\ncurl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\n  -H \"Authorization: Bearer wh_live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"}'\n```\n\n---\n\n## GET /v1/usage\nRetrieve your current word usage, plan tier, and API version. Read-only — it never deducts words. Remaining balance = `included_words − words_used_this_cycle + topup_balance`.\n\n`GET https://api.finix-wh.earnwithdigital.online/v1/usage`\n\n### Response (200 — usage returned)\n- `included_words` (integer) — Words included in your plan each billing cycle.\n- `words_used_this_cycle` (integer) — Words used so far in the current billing cycle.\n- `topup_balance` (integer) — Remaining top-up words. Top-up packs never expire.\n- `tier` (string) — Your plan: api_standard or api_premium.\n- `version` (string) — Current API version.\n\n#### Example response\n```json\n{\n  \"included_words\": 400000,\n  \"words_used_this_cycle\": 18311,\n  \"topup_balance\": 100000,\n  \"tier\": \"api_premium\",\n  \"version\": \"v1.1\"\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription (HTTP 402).\n  - Example:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **429** — Too many failed auth attempts.\n  - Example:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n\n---\n\n## POST /v1/detect\nScore text for AI authorship using WriteHuman's detection model. Billed per input word (the original text), the same way as /v1/humanize. Non-English input is automatically translated to English before scoring. Set `include_sentences` to `true` for a per-sentence breakdown. Note: `ai_probability` runs 0–1 where 1 = AI — the opposite orientation of the humanize `scores` field.\n\n`POST https://api.finix-wh.earnwithdigital.online/v1/detect`\n\n### Request body (application/json)\n- `text` (string, required) — The text to score for AI authorship. Constraints: \u003e= 10 characters, \u003c= 100,000 characters.\n- `language` (string | null, optional) — Language of the text. Auto-detected if omitted; non-English text is translated to English before scoring.\n- `include_sentences` (boolean, optional) — Return a per-sentence AI-probability breakdown. Constraints: Default: false.\n\n### Response (200 — text scored successfully)\n- `scanId` (string | null) — Unique identifier for this detection scan.\n- `version` (string | null) — Detector model version.\n- `versionID` (string | null) — Detector build identifier.\n- `ai_probability` (number | null) — Probability the text is AI-generated (0–1, where 1 = AI). Note: Opposite orientation from the /v1/humanize scores field, where higher = more human.\n- `predicted_class` (string | null) — Overall label: ai, human, or mixed.\n- `class_probabilities` (object) — Probability for each class. Constraints: Fields: ai, human, mixed.\n- `request_meta` (object) — Length of the scored text. Constraints: doc_length: { chars, tokens }.\n- `language` (string) — Detected (or supplied) language of the input.\n- `sentences` (array) — Per-sentence breakdown, each { text, ai_prob }. Note: Present only when include_sentences is true.\n\n#### Example response\n```json\n{\n  \"scanId\": \"20260609OMIOISUZ\",\n  \"version\": \"txtdetect-2026-05-14\",\n  \"versionID\": \"V1.1.1\",\n  \"ai_probability\": 0.94,\n  \"predicted_class\": \"ai\",\n  \"class_probabilities\": { \"ai\": 0.94, \"human\": 0.04, \"mixed\": 0.02 },\n  \"request_meta\": { \"doc_length\": { \"chars\": 642, \"tokens\": 98 } },\n  \"language\": \"English\",\n  \"sentences\": [\n    { \"text\": \"Artificial intelligence has rapidly transformed modern business.\", \"ai_prob\": 0.97 },\n    { \"text\": \"Many teams now depend on it every single day.\", \"ai_prob\": 0.61 }\n  ]\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription or insufficient word balance.\n  - No active subscription:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n  - Insufficient word balance:\n    ```json\n    {\n      \"error\": \"Insufficient word balance\",\n      \"code\": \"insufficient_balance\",\n      \"words_remaining\": {\n        \"included\": 12,\n        \"topup\": 0,\n        \"total\": 12\n      }\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **422** — Invalid input or over the per-request word limit.\n  - Invalid request body:\n    ```json\n    {\n      \"error\": \"Invalid request: ...\",\n      \"code\": \"invalid_request\"\n    }\n    ```\n  - Over word limit:\n    ```json\n    {\n      \"error\": \"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\",\n      \"code\": \"word_limit\"\n    }\n    ```\n- **429** — Rate limit or too many failed auth attempts.\n  - Rate limited:\n    ```json\n    {\n      \"error\": \"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\",\n      \"code\": \"rate_limited\"\n    }\n    ```\n  - Too many failed auth attempts:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n- **500** — Billing update failure after a successful scan. Some of the request's words (included and/or top-up) may already have been charged before the write failed.\n  - Example:\n    ```json\n    {\n      \"error\": \"Billing update failed\",\n      \"code\": \"billing_failed\"\n    }\n    ```\n- **503** — Detector unavailable or at capacity, translation failed, or billing temporarily unavailable. No words charged.\n  - Detector unavailable, at capacity, or translation failed:\n    ```json\n    {\n      \"error\": \"Detection service unavailable. Please retry.\",\n      \"code\": \"detector_unavailable\"\n    }\n    ```\n  - Billing temporarily unavailable:\n    ```json\n    {\n      \"error\": \"Service temporarily unavailable, please retry shortly.\",\n      \"code\": \"billing_unavailable\"\n    }\n    ```\n\n---\n\n## Code Examples\nFull working examples for `POST /v1/humanize`. Replace `wh_live_your_api_key_here` with your own key.\n\nOfficial SDKs: TypeScript / JavaScript `npm install @writehuman/sdk` (https://www.npmjs.com/package/@writehuman/sdk); Python `pip install writehuman` (https://pypi.org/project/writehuman/). Both follow the documented retry policy: a 429, 503 or 504 is retried after the API's `Retry-After`, at most 2 retries and only when the wait is 60 s or less (both defaults); a longer `Retry-After`, such as an authentication lockout, is not waited for and the error surfaces at once with it as `retry_after` / `retryAfter`. A request that may have been charged is never resent.\n\nOne method per endpoint; the Errors section maps every `code` to its class:\n- TypeScript / JavaScript: `wh.humanize(text, { tone, language })`, `wh.detect(text, { language, includeSentences })`, `wh.usage()`. Every failure throws a subclass of `WriteHumanError` with `code`, `status` and `retryAfter`; `InsufficientBalanceError` adds `wordsRemaining`.\n- Python: `wh.humanize(text, tone=None, language=None)`, `wh.detect(text, language=None, include_sentences=False)`, `wh.usage()`. Every failure raises a subclass of `WriteHumanError` with `code`, `status` and `retry_after`; `InsufficientBalanceError` adds `words_remaining`.\n\n### TypeScript (SDK)\n```typescript\n// npm install @writehuman/sdk\nimport { WriteHuman } from \"@writehuman/sdk\";\n\nconst wh = new WriteHuman({ apiKey: \"wh_live_your_api_key_here\" });\nconst out = await wh.humanize(\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\");\nconsole.log(out.results[0]);\nconsole.log(out.words_remaining.total, \"words left\");\n```\n\n### Python (SDK)\n```python\n# pip install writehuman\nfrom writehuman import WriteHuman\n\nwh = WriteHuman(\"wh_live_your_api_key_here\")\nout = wh.humanize(\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\")\nprint(out[\"results\"][0])\nprint(out[\"words_remaining\"][\"total\"], \"words left\")\n```\n\n### cURL\n```bash\ncurl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\n  -H \"Authorization: Bearer wh_live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"}'\n```\n\n### Python (HTTP)\n```python\nimport requests\n\nr = requests.post(\n    \"https://api.finix-wh.earnwithdigital.online/v1/humanize\",\n    headers={\"Authorization\": \"Bearer wh_live_your_api_key_here\"},\n    json={\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"},\n)\nprint(r.json())\n```\n\n### JavaScript (HTTP)\n```javascript\nconst resp = await fetch(\"https://api.finix-wh.earnwithdigital.online/v1/humanize\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer wh_live_your_api_key_here\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    text: \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\",\n  }),\n});\n\nconsole.log(await resp.json());\n```\n\n---\n\n## Supported Languages\nWriteHuman supports 40+ languages. Pass the language name as the `language` parameter (e.g. `\"language\": \"Spanish\"`), or omit it for automatic detection.\n\nSupported: English, Chinese (Mandarin), Chinese (Taiwan), French, Spanish, Vietnamese, Portuguese, Japanese, Ukrainian, Swedish, German, Russian, Italian, Arabic, Hindi, Bengali, Korean, Turkish, Dutch, Polish, Thai, Indonesian, Malay, Persian, Hebrew, Greek, Czech, Danish, Finnish, Norwegian, Romanian, Hungarian, Slovak, Bulgarian, Croatian, Serbian, Slovenian, Lithuanian, Latvian, Estonian, Urdu, Swahili, Tagalog, Afrikaans.2c:[\"$\",\"$L2e\",null,{\"text\":\"$2f\",\"label\":\"Copy docs for LLM\",\"variant\":\"hero\"}]\n31:Ta2f,## Quickstart — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\n1. Sign up / log in at finix-wh.earnwithdigital.online, buy an API subscription, and create a key from the dashboard.\n2. Send your first request with an official SDK (install commands above) or with the REST API directly. With the TypeScript SDK:\n\n```typescript\n// npm install @writehuman/sdk\nimport { WriteHuman } from \"@writehuman/sdk\";\n\nconst wh = new WriteHuman({ apiKey: \"wh_live_your_api_key_here\" });\nconst out = await wh.humanize(\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\");\nconsole.log(out.results[0]);\nconsole.log(out.words_remaining.total, \"words left\");\n```\n\nor with the REST API:\n\n```bash\ncurl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\n  -H \"Authorization: Bearer wh_live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"}'\n```\n\n3. Standard plans return a single result; Premium plans return 3 variations with human-likeness scores:\n\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"Artificial intelligence has changed the game in content creation and communication.\",\n    \"The role of artificial intelligence in transforming content creation and online communication is unprecedented.\",\n    \"The use of artificial intelligence has changed the way we think about content creation and online communication.\"\n  ],\n  \"scores\": [0.82, 0.81, 0.79],\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 399986,\n    \"topup\": 0,\n    \"total\": 399986\n  }\n}\n```2d:[\"$\",\"section\",null,{\"className\":\"bg-white\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-6xl px-4 py-16\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-col lg:flex-row lg:gap-16\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"lg:w-52 shrink-0\",\"children\":[\"$\",\"$L30\",null,{\"sections\":[{\"id\":\"quickstart\",\"label\":\"Quickstart\"},{\"id\":\"video-guide\",\"label\":\"Video Guide\"},{\"id\":\"authentication\",\"label\":\"Authentication\"},{\"id\":\"plans\",\"label\":\"Plans \u0026 Limits\"},{\"id\":\"errors\",\"label\":\"Errors\"},{\"id\":\"endpoints\",\"label\":\"Endpoints\",\"children\":[{\"id\":\"endpoint-humanize\",\"label\":\"POST /v1/humanize\"},{\"id\":\"endpoint-usage\",\"label\":\"GET /v1/usage\"},{\"id\":\"endpoint-detect\",\"label\":\"POST /v1/detect\"}]},{\"id\":\"code-examples\",\"label\":\"Code Examples\"},{\"id\":\"languages\",\"label\":\"Languages\"},{\"id\":\"use-cases\",\"label\":\"Use Cases\"},{\"id\":\"support\",\"label\":\"Support\"}]}]}],[\"$\",\"article\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"section\",null,{\"id\":\"quickstart\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Quickstart\"}],[\"$\",\"$L2e\",null,{\"text\":\"$31\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],\"$L32\",\"$L33\",\"$L34\",\"$L35\"]}],\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\",\"$L3e\",\"$L3f\",\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\"]}]]}]}]}]\n48:I[398072,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1f\"],\"default\"]\n68:I[593676,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1f\"],\"default\"]\n98:I[697717,[\"$4\",\"$5\",\"$6\",\"$7\",\"$8\",\"$9\",\"$1f\"],\"default\"]\n32:[\"$\",\"p\",null,{\"className\":\"mt-2 text-gray-600\",\"children\":\"Get up and running in under a minute.\"}]\n33:[\"$\",\"div\",null,{\"className\":\"mt-8 flex gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[#af72d5]/10 text-sm font-bold text-[#af72d5]\",\"children\":\"1\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-semibold text-gray-900\",\"children\":\"Get your API key\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-gray-600\",\"children\":[\"Sign up or log in at\",\" \",[\"$\",\"$L20\",null,{\"href\":\"/\",\"className\":\"font-medium text-[#af72d5] hover:underline\",\"children\":\"finix-wh.earnwithdigital.online\"}],\", purchase an\",\" \",[\"$\",\"$L20\",null,{\"href\":\"/api#pricing\",\"className\":\"font-medium text-[#af72d5] hover:underline\",\"children\":\"API subscription\"}],\", and create your key from the\",\" \",[\"$\",\"$L20\",null,{\"href\":\"/api/dashboard\",\"className\":\"font-medium text-[#af72d5] hover:underline\",\"children\":\"dashboard\"}],\".\"]}]]}]]}]\n34:[\"$\",\"div\",null,{\"className\":\"mt-8 flex gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[#af72d5]/10 text-sm font-bold text-[#af72d5]\",\"children\":\"2\"}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-semibold text-gray-900\",\"children\":\"Make your first request\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-gray-600\",\"children\":\"Install an official SDK, or call the REST API directly:\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 flex flex-wrap gap-2\",\"children\":[[\"$\",\"code\",\"@writehuman/sdk\",{\"className\":\"rounded bg-gray-100 px-2 py-1 text-sm font-mono font-medium text-gray-800\",\"children\":\"npm install @writehuman/sdk\"}],[\"$\",\"code\",\"writehuman\",{\"className\":\"rounded bg-gray-100 px-2 py-1 text-sm font-mono font-medium text-gray-800\",\"children\":\"pip install writehuman\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-3\",\"children\":[\"$\",\"$L48\",null,{\"tabs\":[{\"key\":\"typescript-sdk\",\"label\":\"TypeScript\",\"code\":[[\"$\",\"span\",null,{\"className\":\"text-gray-500\",\"children\":\"// npm install @writehuman/sdk\"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"import\"}],\" \",\"{\",\" WriteHuman \",\"}\",\" \",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"from\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"@writehuman/sdk\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\";\"}],\"\\n\",\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"const\"}],\" wh \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"new\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"WriteHuman\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],\"{\",\" \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"apiKey\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"wh_live_your_api_key_here\\\"\"}],\" \",\"}\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\");\"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"const\"}],\" out \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"await\"}],\" wh\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"humanize\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\");\"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"console\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"log\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],\"out\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],\"results\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"[\"}],\"0\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"]);\"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"console\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"log\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],\"out\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],\"words_remaining\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],\"total\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"words left\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\");\"}]],\"raw\":\"// npm install @writehuman/sdk\\nimport { WriteHuman } from \\\"@writehuman/sdk\\\";\\n\\nconst wh = new WriteHuman({ apiKey: \\\"wh_live_your_api_key_here\\\" });\\nconst out = await wh.humanize(\\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\");\\nconsole.log(out.results[0]);\\nconsole.log(out.words_remaining.total, \\\"words left\\\");\"},{\"key\":\"python-sdk\",\"label\":\"Python\",\"code\":[[\"$\",\"span\",null,{\"className\":\"text-gray-500\",\"children\":\"# pip install writehuman\"}],\"\\n\",\"$L49\",\" writehuman \",\"$L4a\",\" WriteHuman\",\"\\n\",\"\\n\",\"wh \",\"$L4b\",\" \",\"$L4c\",\"$L4d\",\"$L4e\",\"$L4f\",\"\\n\",\"out \",\"$L50\",\" wh\",\"$L51\",\"$L52\",\"$L53\",\"$L54\",\"$L55\",\"\\n\",\"$L56\",\"$L57\",\"out\",\"$L58\",\"$L59\",\"$L5a\",\"0\",\"$L5b\",\"\\n\",\"$L5c\",\"$L5d\",\"out\",\"$L5e\",\"$L5f\",\"$L60\",\"$L61\",\"$L62\",\" \",\"$L63\",\"$L64\"],\"raw\":\"# pip install writehuman\\nfrom writehuman import WriteHuman\\n\\nwh = WriteHuman(\\\"wh_live_your_api_key_here\\\")\\nout = wh.humanize(\\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\")\\nprint(out[\\\"results\\\"][0])\\nprint(out[\\\"words_remaining\\\"][\\\"total\\\"], \\\"words left\\\")\"},{\"key\":\"curl\",\"label\":\"cURL\",\"code\":\"$L65\",\"raw\":\"curl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\\\\n  -H \\\"Authorization: Bearer wh_live_your_api_key_here\\\" \\\\\\n  -H \\\"Content-Type: application/json\\\" \\\\\\n  -d '{\\\"text\\\": \\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"}'\"},{\"key\":\"python\",\"label\":\"Python (HTTP)\",\"code\":\"$L66\",\"raw\":\"import requests\\n\\nr = requests.post(\\n    \\\"https://api.finix-wh.earnwithdigital.online/v1/humanize\\\",\\n    headers={\\\"Authorization\\\": \\\"Bearer wh_live_your_api_key_here\\\"},\\n    json={\\\"text\\\": \\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"},\\n)\\nprint(r.json())\"},{\"key\":\"javascript\",\"label\":\"JavaScript (HTTP)\",\"code\":\"$L67\",\"raw\":\"const resp = await fetch(\\\"https://api.finix-wh.earnwithdigital.online/v1/humanize\\\", {\\n  method: \\\"POST\\\",\\n  headers: {\\n    \\\"Authorization\\\": \\\"Bearer wh_live_your_api_key_here\\\",\\n    \\\"Content-Type\\\": \\\"application/json\\\",\\n  },\\n  body: JSON.stringify({\\n    text: \\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\",\\n  }),\\n});\\n\\nconsole.log(await resp.json());\"}]}]}]]}]]}]\n35:[\"$\",\"div\",null,{\"className\":\"mt-8 flex gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[#af72d5]/10 text-sm font-bold text-[#af72d5]\",\"children\":\"3\"}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-semibold text-gray-900\",\"children\":\"See the response\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 mb-3 text-gray-600\",\"children\":\"Standard plans return a single result. Premium plans return 3 variations with human-likeness scores.\"}],[\"$\",\"$L68\",null,{\"examples\":[{\"key\":\"standard\",\"label\":\"Standard\",\"json\":\"{\\n  \\\"id\\\": \\\"hum_a1b2c3d4e5f6\\\",\\n  \\\"created\\\": 1778533901580,\\n  \\\"results\\\": [\\n    \\\"AI has changed how we create content and communicate online.\\\"\\n  ],\\n  \\\"scores\\\": null,\\n  \\\"input_words\\\": 14,\\n  \\\"words_remaining\\\": {\\n    \\\"included\\\": 124986,\\n    \\\"topup\\\": 0,\\n    \\\"total\\\": 124986\\n  }\\n}\"},{\"key\":\"premium\",\"label\":\"Premium\",\"json\":\"{\\n  \\\"id\\\": \\\"hum_a1b2c3d4e5f6\\\",\\n  \\\"created\\\": 1778533901580,\\n  \\\"results\\\": [\\n    \\\"Artificial intelligence has changed the game in content creation and communication.\\\",\\n    \\\"The role of artificial intelligence in transforming content creation and online communication is unprecedented.\\\",\\n    \\\"The use of artificial intelligence has changed the way we think about content creation and online communication.\\\"\\n  ],\\n  \\\"scores\\\": [0.82, 0.81, 0.79],\\n  \\\"input_words\\\": 14,\\n  \\\"words_remaining\\\": {\\n    \\\"included\\\": 399986,\\n    \\\"topup\\\": 0,\\n    \\\"total\\\": 399986\\n  }\\n}\"}]}]]}]]}]\n36:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n37:[\"$\",\"section\",null,{\"id\":\"video-guide\",\"className\":\"scroll-mt-24\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Video Guide\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-gray-600 leading-relaxed\",\"children\":\"A step-by-step walkthrough of authentication and setup, followed by three real integrations: calling the API directly with Python, wiring it into a Lovable app, and using it with Claude.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 overflow-hidden rounded-2xl border border-gray-200 bg-gray-900 shadow-sm\",\"children\":[\"$\",\"iframe\",null,{\"className\":\"aspect-video w-full\",\"src\":\"https://www.youtube-nocookie.com/embed/AUAI5kWrKIk\",\"title\":\"How to Integrate the WriteHuman AI Humanizer API\",\"loading\":\"lazy\",\"allow\":\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\",\"referrerPolicy\":\"strict-origin-when-cross-origin\",\"allowFullScreen\":true}]}]]}]\n38:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n69:T5ad,## Authentication — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nEvery request to the WriteHuman API (`https://api.finix-wh.earnwithdigital.online`) must include a Bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer wh_live_your_api_key_here\n```\n\n- Keys use the prefix `wh_live_` followed by a unique token.\n- Create and manage keys from the WriteHuman dashboard (up to 5 keys; revoke any key at any time).\n- Treat keys like passwords — keep them server-side and never expose them in client code.39:[\"$\",\"section\",null,{\"id\":\"authentication\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Authentication\"}],[\"$\",\"$L2e\",null,{\"text\":\"$69\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-gray-600 leading-relaxed\",\"children\":[\"All API requests require a Bearer token in the\",\" \",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"Authorization\"}],\" \",\"header. You can create and manage API keys from your\",\" \",[\"$\",\"$L20\",null,{\"href\":\"/api/dashboard\",\"className\":\"font-medium text-[#af72d5] hover:underline\",\"children\":\"dashboard\"}],\".\"]}],[\"$\",\"div\",null,{\"className\":\"mt-5 rounded-xl border-l-4 border-[#af72d5] bg-[#af72d5]/5 p-4\",\"children\":[\"$\",\"p\",null,{\"className\":\"font-mono text-sm text-gray-800\",\"children\":\"Authorization: Bearer wh_live_your_api_key_here\"}]}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm text-gray-500\",\"children\":[\"Keys use the prefix \",[\"$\",\"code\",null,{\"className\":\"font-mono text-xs\",\"children\":\"wh_live_\"}],\" followed by a unique token. Keep your keys secret — treat them like passwords. You can create up to 5 keys and revoke any key at any time.\"]}]]}]\n3a:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n3b:[\"$\",\"section\",null,{\"id\":\"plans\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Plans \u0026 Limits\"}],[\"$\",\"$L2e\",null,{\"text\":\"## Plans \u0026 Limits — WriteHuman API\\n\\n| Limit | Standard | Premium |\\n| --- | --- | --- |\\n| Monthly words | 125,000 | 400,000 – 3,000,000 |\\n| Max words per request | 2,000 | 4,000 – 6,000 |\\n| Output variations | 1 | 3 |\\n| Human-likeness scores | No | Yes |\\n| Rate limit | 40 req/min | 120 – 160 req/min |\\n\\nPremium plans automatically return 3 output variations per request with human-likeness scores. Standard plans return a single result without scores. Usage is tracked by input-text word count. Words are deducted from your subscription first, then any top-up credits. Top-up packs (100,000 words each) never expire. Premium is available in four monthly word sizes: 400K, 800K, 1.5M, and 3M. Premium 400K allows 4,000 words per request and 120 requests per minute; 800K and up allow 6,000 and 160.\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-3 mb-6 text-gray-600 leading-relaxed\",\"children\":\"Choose a plan that fits your usage. All plans include monthly word allowances that reset each billing cycle.\"}],[[\"$\",\"div\",null,{\"className\":\"hidden sm:block overflow-hidden rounded-2xl border border-gray-200/80 bg-white shadow-md shadow-purple-500/5\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full text-sm\",\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"className\":\"border-b border-gray-100\",\"children\":[[\"$\",\"th\",null,{\"className\":\"px-6 py-4 text-left font-medium text-gray-500\"}],[\"$\",\"th\",null,{\"className\":\"px-6 py-4 text-center font-semibold text-gray-900\",\"children\":\"Standard\"}],[\"$\",\"th\",null,{\"className\":\"px-6 py-4 text-center font-semibold text-[#af72d5] bg-[#af72d5]/5\",\"children\":\"Premium\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"Monthly words\",{\"className\":\"border-b border-gray-50\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-left font-medium text-gray-700\",\"children\":\"Monthly words\"}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600\",\"children\":[\"$\",\"span\",null,{\"children\":\"125,000\"}]}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5\",\"children\":[\"$\",\"span\",null,{\"children\":\"400,000 – 3,000,000\"}]}]]}],[\"$\",\"tr\",\"Max words per request\",{\"className\":\"border-b border-gray-50\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-left font-medium text-gray-700\",\"children\":\"Max words per request\"}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600\",\"children\":[\"$\",\"span\",null,{\"children\":\"2,000\"}]}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5\",\"children\":[\"$\",\"span\",null,{\"children\":\"4,000 – 6,000\"}]}]]}],[\"$\",\"tr\",\"Output variations\",{\"className\":\"border-b border-gray-50\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-left font-medium text-gray-700\",\"children\":\"Output variations\"}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600\",\"children\":[\"$\",\"span\",null,{\"children\":\"1\"}]}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5\",\"children\":[\"$\",\"span\",null,{\"children\":\"3\"}]}]]}],[\"$\",\"tr\",\"Human-likeness scores\",{\"className\":\"border-b border-gray-50\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-left font-medium text-gray-700\",\"children\":\"Human-likeness scores\"}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600\",\"children\":[\"$\",\"span\",null,{\"className\":\"mx-auto block h-0.5 w-4 rounded bg-gray-300\"}]}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5\",\"children\":[\"$\",\"svg\",null,{\"className\":\"mx-auto h-5 w-5 text-green-500\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2.5,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M4.5 12.75l6 6 9-13.5\"}]}]}]]}],\"$L6a\"]}]]}]}],\"$L6b\"],\"$L6c\"]}]\n3c:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n6d:T1543,## Errors — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nEvery non-2xx response is a JSON object with a stable machine-readable `code` and a human-readable `error` message. Branch on `code`; the wording of `error` may change. A 402 for an exhausted balance also carries `words_remaining`. Every 429, 503 and 504 carries a `Retry-After` header in seconds; wait at least that long before retrying. Those statuses leave nothing charged and are safe to retry. A 429, 503 or 504 without the JSON body and `code` came from a load balancer or proxy, not the API, and carries no such guarantee: handle it like a client-side timeout and do not resend a billed request automatically. Words are charged only on a 200, with one exception: a `500 billing_failed` is returned after a result was produced but the usage write failed part-way, and some of the request's words, from the included allowance and/or from top-up credits, may already have been charged. Check /v1/usage after one.\n\n| Status | `code` | Meaning | SDK class |\n| --- | --- | --- | --- |\n| 422 | `invalid_request` | The body failed validation (missing `text`, too short or too long). | `InvalidRequestError` |\n| 422 | `forbidden_param` | A parameter that is not available on the public API was sent. | `InvalidRequestError` |\n| 422 | `word_limit` | The input is over the per-request word cap for your plan. | `InvalidRequestError` |\n| 422 | `moderation_blocked` | Content moderation refused the input (`/v1/humanize` only). | `ModerationError` |\n| 401 | `missing_api_key` | No usable `Authorization: Bearer` header. | `AuthenticationError` |\n| 401 | `invalid_api_key` | The key is unknown or revoked. | `AuthenticationError` |\n| 402 | `no_subscription` | The key is valid but the account has no active API subscription. | `NoSubscriptionError` |\n| 402 | `insufficient_balance` | Not enough words left for this request; `words_remaining` is included. | `InsufficientBalanceError` |\n| 403 | `reverify_required` | The account must be re-verified by email. The account owner signs in at finix-wh.earnwithdigital.online to continue; then the account's newest key created after the check began works within about a minute; every other key stays disabled until the check ends, so create a new key. Not retried by the SDKs. | `ReverifyRequiredError` |\n| 429 | `rate_limited` | Over your plan's requests per minute. `Retry-After` is the time to the next window. | `RateLimitError` |\n| 429 | `auth_locked_out` | Too many failed authentications from this address. `Retry-After` is the remaining lockout. | `RateLimitError` |\n| 429 | `queue_full` | The admission queue is full. Retry after `Retry-After`. | `RateLimitError` |\n| 429 | `queue_timeout` | The request waited in the admission queue past its deadline. Retry after `Retry-After`. | `RateLimitError` |\n| 503 | `at_capacity` | Cluster-wide capacity shed. Retry after `Retry-After`. | `ServiceUnavailableError` |\n| 503 | `billing_unavailable` | The billing store is unreachable; the request was refused rather than served unmetered. Retry after `Retry-After`. | `ServiceUnavailableError` |\n| 503 | `detector_unavailable` | The detector, or the translation step before it, is unavailable (`/v1/detect` only). Retry after `Retry-After`. | `ServiceUnavailableError` |\n| 504 | `timeout` | Generation did not finish within the server deadline (`/v1/humanize` only). Nothing charged; retry after `Retry-After`. | `ServerTimeoutError` |\n| 500 | `processing_failed` | Generation raised an error. | `ProcessingError` |\n| 500 | `no_results` | Generation finished without a usable result. | `ProcessingError` |\n| 500 | `safety_limit` | Generation produced far more text than the input; discarded. | `ProcessingError` |\n| 500 | `billing_failed` | The result was produced but the usage write failed part-way; included and/or top-up words may already have been charged. Check `/v1/usage`. | `BillingError` |\n\nIn the official SDKs every failure is a subclass of `WriteHumanError` carrying `code`, `status` and the last `Retry-After` (`retry_after` in Python, `retryAfter` in TypeScript); `InsufficientBalanceError` adds `words_remaining` / `wordsRemaining`. The SDK class column names the one raised (Python) or thrown (TypeScript) for each `code`. A code the installed SDK version does not know becomes `APIError` with `code` preserved; a response that is not the contract's JSON, no response within the client timeout, or a failed connection becomes `ProtocolError`, `ClientTimeoutError` or `ConnectionError` with no `code`.3d:[\"$\",\"section\",null,{\"id\":\"errors\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Errors\"}],[\"$\",\"$L2e\",null,{\"text\":\"$6d\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],\"$L6e\",\"$L6f\"]}]\n3e:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n70:T3f62,## Endpoint Reference — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nThree REST endpoints, all authenticated with the same Bearer key.\n\n---\n\n## POST /v1/humanize\nRewrite AI-generated text so it reads as naturally human. Billed by input-text word count; words are deducted from your monthly subscription allowance first, then from purchased top-up credits. The public API accepts `text`, `tone`, and `language` only — `model`, `num_outputs`, and `sequence_id` are not available. A request that does not finish within 170 seconds returns 504 `timeout` with nothing charged.\n\n`POST https://api.finix-wh.earnwithdigital.online/v1/humanize`\n\n### Request body (application/json)\n- `text` (string, required) — The text to humanize. Constraints: \u003e= 30 characters, \u003c= 100,000 characters.\n- `tone` (string, optional) — Optional writing tone. Omit for default style. Constraints: Allowed: professional, academic, blog, casual, creative, scientific, technical.\n- `language` (string | null, optional) — Target language (e.g. English, Spanish, Chinese (Mandarin)). Auto-detected if omitted.\n\n### Response (200 — text humanized successfully)\n- `id` (string) — Unique identifier for this humanization request.\n- `created` (integer) — Unix timestamp (milliseconds) when the request was received.\n- `results` (string[]) — Humanized text variations, sorted by score (best first).\n- `scores` ((number | null)[] | null) — Human-likeness score for each result (0–1, higher = more human). Note: Premium plans only. `null` on Standard plans.\n- `input_words` (integer) — Number of words billed for this request.\n- `words_remaining` (object) — Your remaining word balance after this request. Constraints: Fields: included (integer), topup (integer), total (integer).\n\n#### Example response — Standard plan (single result, `scores: null`)\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"AI has changed how we create content and communicate online.\"\n  ],\n  \"scores\": null,\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 124986,\n    \"topup\": 0,\n    \"total\": 124986\n  }\n}\n```\n\n#### Example response — Premium plan (3 variations with human-likeness scores)\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"Artificial intelligence has changed the game in content creation and communication.\",\n    \"The role of artificial intelligence in transforming content creation and online communication is unprecedented.\",\n    \"The use of artificial intelligence has changed the way we think about content creation and online communication.\"\n  ],\n  \"scores\": [0.82, 0.81, 0.79],\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 399986,\n    \"topup\": 0,\n    \"total\": 399986\n  }\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header. Use: Bearer \u003capi_key\u003e\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription or insufficient word balance.\n  - No active subscription:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n  - Insufficient word balance:\n    ```json\n    {\n      \"error\": \"Insufficient word balance\",\n      \"code\": \"insufficient_balance\",\n      \"words_remaining\": {\n        \"included\": 12,\n        \"topup\": 0,\n        \"total\": 12\n      }\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **422** — Invalid input, forbidden parameters, over word limit, or content blocked by moderation.\n  - Invalid request body:\n    ```json\n    {\n      \"error\": \"Invalid request: ...\",\n      \"code\": \"invalid_request\"\n    }\n    ```\n  - `model` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The model parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - `num_outputs` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The num_outputs parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - `sequence_id` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The sequence_id parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - Over word limit:\n    ```json\n    {\n      \"error\": \"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\",\n      \"code\": \"word_limit\"\n    }\n    ```\n  - Content blocked:\n    ```json\n    {\n      \"error\": \"Content blocked: sexual\",\n      \"code\": \"moderation_blocked\"\n    }\n    ```\n- **429** — Rate limit, queue capacity, or too many failed auth attempts.\n  - Rate limited:\n    ```json\n    {\n      \"error\": \"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\",\n      \"code\": \"rate_limited\"\n    }\n    ```\n  - Too many failed auth attempts:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n  - Request queue full:\n    ```json\n    {\n      \"error\": \"Too many queued requests. Please retry shortly.\",\n      \"code\": \"queue_full\"\n    }\n    ```\n  - Queue wait timeout:\n    ```json\n    {\n      \"error\": \"Request waited too long for capacity. Please retry.\",\n      \"code\": \"queue_timeout\"\n    }\n    ```\n- **500** — Processing failure. No words charged, except that `billing_failed` may have charged some of the request's words (included and/or top-up) before the usage write failed.\n  - Generation failed:\n    ```json\n    {\n      \"error\": \"Processing failed\",\n      \"code\": \"processing_failed\"\n    }\n    ```\n  - Generation returned nothing usable:\n    ```json\n    {\n      \"error\": \"Processing returned no results\",\n      \"code\": \"no_results\"\n    }\n    ```\n  - Output exceeded the safety limit:\n    ```json\n    {\n      \"error\": \"Output exceeded safety limit\",\n      \"code\": \"safety_limit\"\n    }\n    ```\n  - Billing update failed after generation:\n    ```json\n    {\n      \"error\": \"Billing update failed\",\n      \"code\": \"billing_failed\"\n    }\n    ```\n- **503** — Service at capacity, or billing temporarily unavailable. No words charged.\n  - Service at capacity:\n    ```json\n    {\n      \"error\": \"Service is at capacity. Please retry shortly.\",\n      \"code\": \"at_capacity\"\n    }\n    ```\n  - Billing temporarily unavailable:\n    ```json\n    {\n      \"error\": \"Service temporarily unavailable, please retry shortly.\",\n      \"code\": \"billing_unavailable\"\n    }\n    ```\n- **504** — The request did not finish within the server deadline (170 seconds from request entry; generation is stopped once 10 seconds remain so that billing is never cut part-way). No words charged; safe to retry.\n  - Example:\n    ```json\n    {\n      \"error\": \"Processing did not finish within 160 seconds. Nothing was charged; please retry.\",\n      \"code\": \"timeout\"\n    }\n    ```\n\n### Example request (cURL)\n```bash\ncurl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\n  -H \"Authorization: Bearer wh_live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"}'\n```\n\n---\n\n## GET /v1/usage\nRetrieve your current word usage, plan tier, and API version. Read-only — it never deducts words. Remaining balance = `included_words − words_used_this_cycle + topup_balance`.\n\n`GET https://api.finix-wh.earnwithdigital.online/v1/usage`\n\n### Response (200 — usage returned)\n- `included_words` (integer) — Words included in your plan each billing cycle.\n- `words_used_this_cycle` (integer) — Words used so far in the current billing cycle.\n- `topup_balance` (integer) — Remaining top-up words. Top-up packs never expire.\n- `tier` (string) — Your plan: api_standard or api_premium.\n- `version` (string) — Current API version.\n\n#### Example response\n```json\n{\n  \"included_words\": 400000,\n  \"words_used_this_cycle\": 18311,\n  \"topup_balance\": 100000,\n  \"tier\": \"api_premium\",\n  \"version\": \"v1.1\"\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription (HTTP 402).\n  - Example:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **429** — Too many failed auth attempts.\n  - Example:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n\n---\n\n## POST /v1/detect\nScore text for AI authorship using WriteHuman's detection model. Billed per input word (the original text), the same way as /v1/humanize. Non-English input is automatically translated to English before scoring. Set `include_sentences` to `true` for a per-sentence breakdown. Note: `ai_probability` runs 0–1 where 1 = AI — the opposite orientation of the humanize `scores` field.\n\n`POST https://api.finix-wh.earnwithdigital.online/v1/detect`\n\n### Request body (application/json)\n- `text` (string, required) — The text to score for AI authorship. Constraints: \u003e= 10 characters, \u003c= 100,000 characters.\n- `language` (string | null, optional) — Language of the text. Auto-detected if omitted; non-English text is translated to English before scoring.\n- `include_sentences` (boolean, optional) — Return a per-sentence AI-probability breakdown. Constraints: Default: false.\n\n### Response (200 — text scored successfully)\n- `scanId` (string | null) — Unique identifier for this detection scan.\n- `version` (string | null) — Detector model version.\n- `versionID` (string | null) — Detector build identifier.\n- `ai_probability` (number | null) — Probability the text is AI-generated (0–1, where 1 = AI). Note: Opposite orientation from the /v1/humanize scores field, where higher = more human.\n- `predicted_class` (string | null) — Overall label: ai, human, or mixed.\n- `class_probabilities` (object) — Probability for each class. Constraints: Fields: ai, human, mixed.\n- `request_meta` (object) — Length of the scored text. Constraints: doc_length: { chars, tokens }.\n- `language` (string) — Detected (or supplied) language of the input.\n- `sentences` (array) — Per-sentence breakdown, each { text, ai_prob }. Note: Present only when include_sentences is true.\n\n#### Example response\n```json\n{\n  \"scanId\": \"20260609OMIOISUZ\",\n  \"version\": \"txtdetect-2026-05-14\",\n  \"versionID\": \"V1.1.1\",\n  \"ai_probability\": 0.94,\n  \"predicted_class\": \"ai\",\n  \"class_probabilities\": { \"ai\": 0.94, \"human\": 0.04, \"mixed\": 0.02 },\n  \"request_meta\": { \"doc_length\": { \"chars\": 642, \"tokens\": 98 } },\n  \"language\": \"English\",\n  \"sentences\": [\n    { \"text\": \"Artificial intelligence has rapidly transformed modern business.\", \"ai_prob\": 0.97 },\n    { \"text\": \"Many teams now depend on it every single day.\", \"ai_prob\": 0.61 }\n  ]\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription or insufficient word balance.\n  - No active subscription:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n  - Insufficient word balance:\n    ```json\n    {\n      \"error\": \"Insufficient word balance\",\n      \"code\": \"insufficient_balance\",\n      \"words_remaining\": {\n        \"included\": 12,\n        \"topup\": 0,\n        \"total\": 12\n      }\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **422** — Invalid input or over the per-request word limit.\n  - Invalid request body:\n    ```json\n    {\n      \"error\": \"Invalid request: ...\",\n      \"code\": \"invalid_request\"\n    }\n    ```\n  - Over word limit:\n    ```json\n    {\n      \"error\": \"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\",\n      \"code\": \"word_limit\"\n    }\n    ```\n- **429** — Rate limit or too many failed auth attempts.\n  - Rate limited:\n    ```json\n    {\n      \"error\": \"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\",\n      \"code\": \"rate_limited\"\n    }\n    ```\n  - Too many failed auth attempts:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n- **500** — Billing update failure after a successful scan. Some of the request's words (included and/or top-up) may already have been charged before the write failed.\n  - Example:\n    ```json\n    {\n      \"error\": \"Billing update failed\",\n      \"code\": \"billing_failed\"\n    }\n    ```\n- **503** — Detector unavailable or at capacity, translation failed, or billing temporarily unavailable. No words charged.\n  - Detector unavailable, at capacity, or translation failed:\n    ```json\n    {\n      \"error\": \"Detection service unavailable. Please retry.\",\n      \"code\": \"detector_unavailable\"\n    }\n    ```\n  - Billing temporarily unavailable:\n    ```json\n    {\n      \"error\": \"Service temporarily unavailable, please retry shortly.\",\n      \"code\": \"billing_unavailable\"\n    }\n    ```3f:[\"$\",\"section\",null,{\"id\":\"endpoints\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Endpoint Reference\"}],[\"$\",\"$L2e\",null,{\"text\":\"$70\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],\"$L71\",\"$L72\"]}]\n40:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n73:T1019,## Code Examples — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nFull working examples for `POST /v1/humanize`. Replace `wh_live_your_api_key_here` with your own key.\n\nOfficial SDKs: TypeScript / JavaScript `npm install @writehuman/sdk` (https://www.npmjs.com/package/@writehuman/sdk); Python `pip install writehuman` (https://pypi.org/project/writehuman/). Both follow the documented retry policy: a 429, 503 or 504 is retried after the API's `Retry-After`, at most 2 retries and only when the wait is 60 s or less (both defaults); a longer `Retry-After`, such as an authentication lockout, is not waited for and the error surfaces at once with it as `retry_after` / `retryAfter`. A request that may have been charged is never resent.\n\nOne method per endpoint; the Errors section maps every `code` to its class:\n- TypeScript / JavaScript: `wh.humanize(text, { tone, language })`, `wh.detect(text, { language, includeSentences })`, `wh.usage()`. Every failure throws a subclass of `WriteHumanError` with `code`, `status` and `retryAfter`; `InsufficientBalanceError` adds `wordsRemaining`.\n- Python: `wh.humanize(text, tone=None, language=None)`, `wh.detect(text, language=None, include_sentences=False)`, `wh.usage()`. Every failure raises a subclass of `WriteHumanError` with `code`, `status` and `retry_after`; `InsufficientBalanceError` adds `words_remaining`.\n\n### TypeScript (SDK)\n```typescript\n// npm install @writehuman/sdk\nimport { WriteHuman } from \"@writehuman/sdk\";\n\nconst wh = new WriteHuman({ apiKey: \"wh_live_your_api_key_here\" });\nconst out = await wh.humanize(\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\");\nconsole.log(out.results[0]);\nconsole.log(out.words_remaining.total, \"words left\");\n```\n\n### Python (SDK)\n```python\n# pip install writehuman\nfrom writehuman import WriteHuman\n\nwh = WriteHuman(\"wh_live_your_api_key_here\")\nout = wh.humanize(\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\")\nprint(out[\"results\"][0])\nprint(out[\"words_remaining\"][\"total\"], \"words left\")\n```\n\n### cURL\n```bash\ncurl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\n  -H \"Authorization: Bearer wh_live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"}'\n```\n\n### Python (HTTP)\n```python\nimport requests\n\nr = requests.post(\n    \"https://api.finix-wh.earnwithdigital.online/v1/humanize\",\n    headers={\"Authorization\": \"Bearer wh_live_your_api_key_here\"},\n    json={\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"},\n)\nprint(r.json())\n```\n\n### JavaScript (HTTP)\n```javascript\nconst resp = await fetch(\"https://api.finix-wh.earnwithdigital.online/v1/humanize\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer wh_live_your_api_key_here\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    text: \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\",\n  }),\n});\n\nconsole.log(await resp.json());\n```41:[\"$\",\"section\",null,{\"id\":\"code-examples\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Code Examples\"}],[\"$\",\"$L2e\",null,{\"text\":\"$73\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],\"$L74\",\"$L75\",\"$L76\",\"$L77\",\"$L78\",\"$L79\",\"$L7a\"]}]\n42:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n43:[\"$\",\"section\",null,{\"id\":\"languages\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Supported Languages\"}],[\"$\",\"$L2e\",null,{\"text\":\"## Supported Languages — WriteHuman API\\n\\nWriteHuman supports 40+ languages. Pass the language name as the `language` parameter (e.g. `\\\"language\\\": \\\"Spanish\\\"`), or omit it for automatic detection.\\n\\nSupported: English, Chinese (Mandarin), Chinese (Taiwan), French, Spanish, Vietnamese, Portuguese, Japanese, Ukrainian, Swedish, German, Russian, Italian, Arabic, Hindi, Bengali, Korean, Turkish, Dutch, Polish, Thai, Indonesian, Malay, Persian, Hebrew, Greek, Czech, Danish, Finnish, Norwegian, Romanian, Hungarian, Slovak, Bulgarian, Croatian, Serbian, Slovenian, Lithuanian, Latvian, Estonian, Urdu, Swahili, Tagalog, Afrikaans.\",\"variant\":\"section\",\"className\":\"mt-1.5 shrink-0\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-3 mb-5 text-gray-600\",\"children\":[\"WriteHuman supports 40+ languages. Pass the language name as the\",\" \",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"language\"}],\" \",\"parameter, or omit it for automatic detection.\"]}],[\"$\",\"div\",null,{\"className\":\"flex flex-wrap gap-2\",\"children\":[[\"$\",\"span\",\"English\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"English\"}],[\"$\",\"span\",\"Chinese (Mandarin)\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Chinese (Mandarin)\"}],[\"$\",\"span\",\"Chinese (Taiwan)\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Chinese (Taiwan)\"}],[\"$\",\"span\",\"French\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"French\"}],[\"$\",\"span\",\"Spanish\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Spanish\"}],[\"$\",\"span\",\"Vietnamese\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Vietnamese\"}],[\"$\",\"span\",\"Portuguese\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Portuguese\"}],[\"$\",\"span\",\"Japanese\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Japanese\"}],[\"$\",\"span\",\"Ukrainian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Ukrainian\"}],[\"$\",\"span\",\"Swedish\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Swedish\"}],[\"$\",\"span\",\"German\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"German\"}],[\"$\",\"span\",\"Russian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Russian\"}],[\"$\",\"span\",\"Italian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Italian\"}],[\"$\",\"span\",\"Arabic\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Arabic\"}],[\"$\",\"span\",\"Hindi\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Hindi\"}],[\"$\",\"span\",\"Bengali\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Bengali\"}],[\"$\",\"span\",\"Korean\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Korean\"}],[\"$\",\"span\",\"Turkish\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Turkish\"}],\"$L7b\",\"$L7c\",\"$L7d\",\"$L7e\",\"$L7f\",\"$L80\",\"$L81\",\"$L82\",\"$L83\",\"$L84\",\"$L85\",\"$L86\",\"$L87\",\"$L88\",\"$L89\",\"$L8a\",\"$L8b\",\"$L8c\",\"$L8d\",\"$L8e\",\"$L8f\",\"$L90\",\"$L91\",\"$L92\",\"$L93\",\"$L94\"]}]]}]\n44:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n45:[\"$\",\"section\",null,{\"id\":\"use-cases\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Common Use Cases\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3\",\"children\":[[\"$\",\"$L20\",\"Content Marketing\",{\"href\":\"/ai-humanizer-api-for-content-marketing\",\"className\":\"group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]\",\"children\":[\"$\",\"svg\",null,{\"className\":\"h-6 w-6\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":1.5,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 0 1-2.25 2.25M16.5 7.5V18a2.25 2.25 0 0 0 2.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 0 0 2.25 2.25h13.5M6 7.5h3v3H6v-3Z\"}]}]}],[\"$\",\"h3\",null,{\"className\":\"flex items-center justify-between text-sm font-semibold text-gray-900\",\"children\":[\"Content Marketing\",[\"$\",\"svg\",null,{\"className\":\"h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"}]}]]}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-sm text-gray-500 leading-relaxed\",\"children\":\"Generate blog posts, product descriptions, and ad copy with AI that reads indistinguishable from human writing.\"}]]}],[\"$\",\"$L20\",\"SEO Agencies\",{\"href\":\"/ai-humanizer-api-for-seo-agencies\",\"className\":\"group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]\",\"children\":[\"$\",\"svg\",null,{\"className\":\"h-6 w-6\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":1.5,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"}]}]}],[\"$\",\"h3\",null,{\"className\":\"flex items-center justify-between text-sm font-semibold text-gray-900\",\"children\":[\"SEO Agencies\",[\"$\",\"svg\",null,{\"className\":\"h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"}]}]]}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-sm text-gray-500 leading-relaxed\",\"children\":\"Produce high-volume content that passes AI detection checks before publication.\"}]]}],[\"$\",\"$L20\",\"SaaS Products\",{\"href\":\"/ai-humanizer-api-for-saas\",\"className\":\"group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]\",\"children\":[\"$\",\"svg\",null,{\"className\":\"h-6 w-6\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":1.5,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M14.25 9.75 16.5 12l-2.25 2.25m-4.5 0L7.5 12l2.25-2.25M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z\"}]}]}],[\"$\",\"h3\",null,{\"className\":\"flex items-center justify-between text-sm font-semibold text-gray-900\",\"children\":[\"SaaS Products\",[\"$\",\"svg\",null,{\"className\":\"h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2,\"stroke\":\"currentColor\",\"children\":\"$L95\"}]]}],\"$L96\"]}],\"$L97\"]}]]}]\n46:[\"$\",\"hr\",null,{\"className\":\"my-14 border-gray-100\"}]\n47:[\"$\",\"section\",null,{\"id\":\"support\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl sm:text-3xl font-bold text-gray-900\",\"children\":\"Support\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 sm:flex-row sm:gap-6\",\"children\":[[\"$\",\"$L98\",null,{\"className\":\"inline-flex items-center gap-2 text-sm font-medium text-[#af72d5] hover:underline\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"h-4 w-4\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75\"}]}],\"Contact Support\"]}],[\"$\",\"$L20\",null,{\"href\":\"/terms\",\"className\":\"inline-flex items-center gap-2 text-sm font-medium text-[#af72d5] hover:underline\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"h-4 w-4\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"}]}],\"Terms of Service\"]}]]}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm text-gray-500\",\"children\":[\"By using the WriteHuman API you agree to our\",\" \",[\"$\",\"$L20\",null,{\"href\":\"/terms\",\"className\":\"text-[#af72d5] hover:underline\",\"children\":\"Terms of Service\"}],\".\"]}]]}]\n49:[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"from\"}]\n4a:[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"import\"}]\n4b:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}]\n4c:[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"WriteHuman\"}]\n4d:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}]\n4e:[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"wh_live_your_api_key_here\\\"\"}]\n4f:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\")\"}]\n50:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}]\n51:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}]\n52:[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"humanize\"}]\n53:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}]\n54:[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"\"}]\n55:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\")\"}]\n56:[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"print\"}]\n57:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}]\n58:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"[\"}]\n59:[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"results\\\"\"}]\n5a:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"][\"}]\n5b:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"])\"}]\n5c:[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"print\"}]\n5d:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}]\n5e:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"[\"}]\n5f:[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"words_remaining\\\"\"}]\n60:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"][\"}]\n61:[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"total\\\"\"}]\n62:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"],\"}]\n63:[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"words left\\\"\"}]\n64:[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\")\"}]\n65:[[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"curl\"}],\" -X POST \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"https://api.finix-wh.earnwithdigital.online/v1/humanize\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-gray-500\",\"children\":\"\\\\\"}],\"\\n\",\"  \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"-H\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Authorization: Bearer wh_live_your_api_key_here\\\"\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-gray-500\",\"children\":\"\\\\\"}],\"\\n\",\"  \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"-H\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Content-Type: application/json\\\"\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-gray-500\",\"children\":\"\\\\\"}],\"\\n\",\"  \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"-d\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":[\"'\",\"{\",\"\\\"text\\\": \\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"\",\"}\",\"'\"]}]]\n66:[[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"import\"}],\" requests\",\"\\n\",\"\\n\",\"r \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}],\" requests\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"post\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],\"\\n\",\"    \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"https://api.finix-wh.earnwithdigital.online/v1/humanize\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"    \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"headers\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}],\"{\",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Authorization\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Bearer wh_live_your_api_key_here\\\"\"}],\"}\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"    \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"json\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}],\"{\",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"text\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"\"}],\"}\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\")\"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"print\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],\"r\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"json\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"())\"}]]\n67:[[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"const\"}],\" resp \",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"=\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"await\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"fetch\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"https://api.finix-wh.earnwithdigital.online/v1/humanize\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\" \",\"{\",\"\\n\",\"  \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"method\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"POST\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"  \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"headers\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",\"{\",\"\\n\",\"    \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Authorization\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Bearer wh_live_your_api_key_here\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"    \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Content-Type\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"application/json\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"  \",\"}\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"  \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"body\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"JSON\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"stringify\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],\"{\",\"\\n\",\"    \",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"text\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\":\"}],\" \",[\"$\",\"span\",null,{\"className\":\"text-green-400\",\"children\":\"\\\"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\\\"\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\",\"}],\"\\n\",\"  \",\"}\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"),\"}],\"\\n\",\"}\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\");\"}],\"\\n\",\"\\n\",[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"console\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"log\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"(\"}],[\"$\",\"span\",null,{\"className\":\"text-purple-400\",\"children\":\"await\"}],\" resp\",[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\".\"}],[\"$\",\"span\",null,{\"className\":\"text-sky-300\",\"children\":\"json\"}],[\"$\",\"span\",null,{\"className\":\"text-gray-400\",\"children\":\"());\"}]]\n6a:[\"$\",\"tr\",\"Rate limit\",{\"className\":\"\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-left font-medium text-gray-700\",\"children\":\"Rate limit\"}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600\",\"children\":[\"$\",\"span\",null,{\"children\":\"40 req/min\"}]}],[\"$\",\"td\",null,{\"className\":\"px-6 py-3.5 text-center text-gray-600 bg-[#af72d5]/5\",\"children\":[\"$\",\"span\",null,{\"children\":\"120 – 160 req/min\"}]}]]}]\n6b:[\"$\",\"div\",null,{\"className\":\"sm:hidden space-y-4\",\"children\":[[\"$\",\"div\",\"standard\",{\"className\":\"rounded-2xl border p-5 border-gray-200 bg-white\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-4 text-center text-lg font-bold text-gray-900\",\"children\":\"Standard\"}],[\"$\",\"div\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"div\",\"Monthly words\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Monthly words\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"125,000\"}]}]]}],[\"$\",\"div\",\"Max words per request\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Max words per request\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"2,000\"}]}]]}],[\"$\",\"div\",\"Output variations\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Output variations\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"1\"}]}]]}],[\"$\",\"div\",\"Human-likeness scores\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Human-likeness scores\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"className\":\"mx-auto block h-0.5 w-4 rounded bg-gray-300\"}]}]]}],[\"$\",\"div\",\"Rate limit\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Rate limit\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"40 req/min\"}]}]]}]]}]]}],[\"$\",\"div\",\"premium\",{\"className\":\"rounded-2xl border p-5 border-[#af72d5]/30 bg-[#af72d5]/5 shadow-md shadow-[#af72d5]/10\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-4 text-center text-lg font-bold text-[#af72d5]\",\"children\":\"Premium\"}],[\"$\",\"div\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"div\",\"Monthly words\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Monthly words\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"400,000 – 3,000,000\"}]}]]}],[\"$\",\"div\",\"Max words per request\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Max words per request\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"4,000 – 6,000\"}]}]]}],[\"$\",\"div\",\"Output variations\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Output variations\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"3\"}]}]]}],[\"$\",\"div\",\"Human-likeness scores\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Human-likeness scores\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"svg\",null,{\"className\":\"mx-auto h-5 w-5 text-green-500\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2.5,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M4.5 12.75l6 6 9-13.5\"}]}]}]]}],[\"$\",\"div\",\"Rate limit\",{\"className\":\"flex items-center justify-between text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-gray-600\",\"children\":\"Rate limit\"}],[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"$\",\"span\",null,{\"children\":\"120 – 160 req/min\"}]}]]}]]}]]}]]}]\n6c:[\"$\",\"p\",null,{\"className\":\"mt-5 text-sm text-gray-500 leading-relaxed\",\"children\":\"Premium plans automatically return 3 output variations per request with human-likeness scores. Standard plans return a single result without scores. Usage is tracked by input-text word count. Words are deducted from your subscription first, then any top-up credits. Top-up packs (100,000 words each) never expire. Premium is available in four monthly word sizes: 400K, 800K, 1.5M, and 3M. Premium 400K allows 4,000 words per request and 120 requests per minute; 800K and up allow 6,000 and 160.\"}]\n6e:[\"$\",\"p\",null,{\"className\":\"mt-3 mb-6 text-gray-600 leading-relaxed\",\"children\":[[\"$\",\"span\",\"0\",{\"children\":\"Every non-2xx response is a JSON object with a stable machine-readable \"}],[\"$\",\"code\",\"1\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"code\"}],[\"$\",\"span\",\"2\",{\"children\":\" and a human-readable \"}],[\"$\",\"code\",\"3\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"error\"}],[\"$\",\"span\",\"4\",{\"children\":\" message. Branch on \"}],[\"$\",\"code\",\"5\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"code\"}],[\"$\",\"span\",\"6\",{\"children\":\"; the wording of \"}],[\"$\",\"code\",\"7\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"error\"}],[\"$\",\"span\",\"8\",{\"children\":\" may change. A 402 for an exhausted balance also carries \"}],[\"$\",\"code\",\"9\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"words_remaining\"}],[\"$\",\"span\",\"10\",{\"children\":\". Every 429, 503 and 504 carries a \"}],[\"$\",\"code\",\"11\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"Retry-After\"}],[\"$\",\"span\",\"12\",{\"children\":\" header in seconds; wait at least that long before retrying. Those statuses leave nothing charged and are safe to retry. A 429, 503 or 504 without the JSON body and \"}],[\"$\",\"code\",\"13\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"code\"}],[\"$\",\"span\",\"14\",{\"children\":\" came from a load balancer or proxy, not the API, and carries no such guarantee: handle it like a client-side timeout and do not resend a billed request automatically. Words are charged only on a 200, with one exception: a \"}],[\"$\",\"code\",\"15\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"500 billing_failed\"}],[\"$\",\"span\",\"16\",{\"children\":\" is returned after a result was produced but the usage write failed part-way, and some of the request's words, from the included allowance and/or from top-up credits, may already have been charged. Check /v1/usage after one.\"}]]}]\n6f:[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-2xl border border-gray-200/80 bg-white shadow-md shadow-purple-500/5\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full text-sm\",\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"className\":\"border-b border-gray-100 text-left\",\"children\":[[\"$\",\"th\",null,{\"className\":\"px-4 py-3 font-semibold text-gray-900 w-20\",\"children\":\"Status\"}],[\"$\",\"th\",null,{\"className\":\"px-4 py-3 font-semibold text-gray-900 w-48\",\"children\":[\"$\",\"code\",null,{\"className\":\"font-mono\",\"children\":\"code\"}]}],[\"$\",\"th\",null,{\"className\":\"px-4 py-3 font-semibold text-gray-900\",\"children\":\"Meaning\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"invalid_request\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":422}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"invalid_request\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The body failed validation (missing `text`, too short or too long).\"}]]}],[\"$\",\"tr\",\"forbidden_param\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":422}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"forbidden_param\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"A parameter that is not available on the public API was sent.\"}]]}],[\"$\",\"tr\",\"word_limit\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":422}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"word_limit\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The input is over the per-request word cap for your plan.\"}]]}],[\"$\",\"tr\",\"moderation_blocked\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":422}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"moderation_blocked\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Content moderation refused the input (`/v1/humanize` only).\"}]]}],[\"$\",\"tr\",\"missing_api_key\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":401}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"missing_api_key\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"No usable `Authorization: Bearer` header.\"}]]}],[\"$\",\"tr\",\"invalid_api_key\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":401}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"invalid_api_key\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The key is unknown or revoked.\"}]]}],[\"$\",\"tr\",\"no_subscription\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":402}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"no_subscription\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The key is valid but the account has no active API subscription.\"}]]}],[\"$\",\"tr\",\"insufficient_balance\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":402}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"insufficient_balance\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Not enough words left for this request; `words_remaining` is included.\"}]]}],\"$L99\",\"$L9a\",\"$L9b\",\"$L9c\",\"$L9d\",\"$L9e\",\"$L9f\",\"$La0\",\"$La1\",\"$La2\",\"$La3\",\"$La4\",\"$La5\"]}]]}]}]\n71:[\"$\",\"p\",null,{\"className\":\"mt-3 text-gray-600 leading-relaxed\",\"children\":\"Three REST endpoints, one base URL, and one Bearer key. All requests authenticate the same way.\"}]\na6:T2203,## POST /v1/humanize — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nRewrite AI-generated text so it reads as naturally human. Billed by input-text word count; words are deducted from your monthly subscription allowance first, then from purchased top-up credits. The public API accepts `text`, `tone`, and `language` only — `model`, `num_outputs`, and `sequence_id` are not available. A request that does not finish within 170 seconds returns 504 `timeout` with nothing charged.\n\n`POST https://api.finix-wh.earnwithdigital.online/v1/humanize`\n\n### Request body (application/json)\n- `text` (string, required) — The text to humanize. Constraints: \u003e= 30 characters, \u003c= 100,000 characters.\n- `tone` (string, optional) — Optional writing tone. Omit for default style. Constraints: Allowed: professional, academic, blog, casual, creative, scientific, technical.\n- `language` (string | null, optional) — Target language (e.g. English, Spanish, Chinese (Mandarin)). Auto-detected if omitted.\n\n### Response (200 — text humanized successfully)\n- `id` (string) — Unique identifier for this humanization request.\n- `created` (integer) — Unix timestamp (milliseconds) when the request was received.\n- `results` (string[]) — Humanized text variations, sorted by score (best first).\n- `scores` ((number | null)[] | null) — Human-likeness score for each result (0–1, higher = more human). Note: Premium plans only. `null` on Standard plans.\n- `input_words` (integer) — Number of words billed for this request.\n- `words_remaining` (object) — Your remaining word balance after this request. Constraints: Fields: included (integer), topup (integer), total (integer).\n\n#### Example response — Standard plan (single result, `scores: null`)\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"AI has changed how we create content and communicate online.\"\n  ],\n  \"scores\": null,\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 124986,\n    \"topup\": 0,\n    \"total\": 124986\n  }\n}\n```\n\n#### Example response — Premium plan (3 variations with human-likeness scores)\n```json\n{\n  \"id\": \"hum_a1b2c3d4e5f6\",\n  \"created\": 1778533901580,\n  \"results\": [\n    \"Artificial intelligence has changed the game in content creation and communication.\",\n    \"The role of artificial intelligence in transforming content creation and online communication is unprecedented.\",\n    \"The use of artificial intelligence has changed the way we think about content creation and online communication.\"\n  ],\n  \"scores\": [0.82, 0.81, 0.79],\n  \"input_words\": 14,\n  \"words_remaining\": {\n    \"included\": 399986,\n    \"topup\": 0,\n    \"total\": 399986\n  }\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header. Use: Bearer \u003capi_key\u003e\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription or insufficient word balance.\n  - No active subscription:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n  - Insufficient word balance:\n    ```json\n    {\n      \"error\": \"Insufficient word balance\",\n      \"code\": \"insufficient_balance\",\n      \"words_remaining\": {\n        \"included\": 12,\n        \"topup\": 0,\n        \"total\": 12\n      }\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **422** — Invalid input, forbidden parameters, over word limit, or content blocked by moderation.\n  - Invalid request body:\n    ```json\n    {\n      \"error\": \"Invalid request: ...\",\n      \"code\": \"invalid_request\"\n    }\n    ```\n  - `model` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The model parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - `num_outputs` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The num_outputs parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - `sequence_id` is not available on the public API:\n    ```json\n    {\n      \"error\": \"The sequence_id parameter is not available\",\n      \"code\": \"forbidden_param\"\n    }\n    ```\n  - Over word limit:\n    ```json\n    {\n      \"error\": \"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\",\n      \"code\": \"word_limit\"\n    }\n    ```\n  - Content blocked:\n    ```json\n    {\n      \"error\": \"Content blocked: sexual\",\n      \"code\": \"moderation_blocked\"\n    }\n    ```\n- **429** — Rate limit, queue capacity, or too many failed auth attempts.\n  - Rate limited:\n    ```json\n    {\n      \"error\": \"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\",\n      \"code\": \"rate_limited\"\n    }\n    ```\n  - Too many failed auth attempts:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n  - Request queue full:\n    ```json\n    {\n      \"error\": \"Too many queued requests. Please retry shortly.\",\n      \"code\": \"queue_full\"\n    }\n    ```\n  - Queue wait timeout:\n    ```json\n    {\n      \"error\": \"Request waited too long for capacity. Please retry.\",\n      \"code\": \"queue_timeout\"\n    }\n    ```\n- **500** — Processing failure. No words charged, except that `billing_failed` may have charged some of the request's words (included and/or top-up) before the usage write failed.\n  - Generation failed:\n    ```json\n    {\n      \"error\": \"Processing failed\",\n      \"code\": \"processing_failed\"\n    }\n    ```\n  - Generation returned nothing usable:\n    ```json\n    {\n      \"error\": \"Processing returned no results\",\n      \"code\": \"no_results\"\n    }\n    ```\n  - Output exceeded the safety limit:\n    ```json\n    {\n      \"error\": \"Output exceeded safety limit\",\n      \"code\": \"safety_limit\"\n    }\n    ```\n  - Billing update failed after generation:\n    ```json\n    {\n      \"error\": \"Billing update failed\",\n      \"code\": \"billing_failed\"\n    }\n    ```\n- **503** — Service at capacity, or billing temporarily unavailable. No words charged.\n  - Service at capacity:\n    ```json\n    {\n      \"error\": \"Service is at capacity. Please retry shortly.\",\n      \"code\": \"at_capacity\"\n    }\n    ```\n  - Billing temporarily unavailable:\n    ```json\n    {\n      \"error\": \"Service temporarily unavailable, please retry shortly.\",\n      \"code\": \"billing_unavailable\"\n    }\n    ```\n- **504** — The request did not finish within the server deadline (170 seconds from request entry; generation is stopped once 10 seconds remain so that billing is never cut part-way). No words charged; safe to retry.\n  - Example:\n    ```json\n    {\n      \"error\": \"Processing did not finish within 160 seconds. Nothing was charged; please retry.\",\n      \"code\": \"timeout\"\n    }\n    ```\n\n### Example request (cURL)\n```bash\ncurl -X POST https://api.finix-wh.earnwithdigital.online/v1/humanize \\\n  -H \"Authorization: Bearer wh_live_your_api_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"Artificial intelligence has revolutionized the way we approach content creation and digital communication.\"}'\n```72:[\"$\",\"div\",null,{\"className\":\"mt-8 space-y-12\",\"children\":[[\"$\",\"div\",null,{\"id\":\"endpoint-humanize\",\"className\":\"scroll-mt-28\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"rounded-md px-3 py-1.5 text-xs font-bold uppercase bg-green-100 text-green-800\",\"children\":\"POST\"}],[\"$\",\"code\",null,{\"className\":\"font-mono text-lg font-semibold text-gray-900 break-all\",\"children\":\"/v1/humanize\"}],[\"$\",\"$L2e\",null,{\"text\":\"$a6\",\"variant\":\"section\",\"className\":\"ml-auto\"}]]}],\"$La7\",\"$La8\",\"$La9\",\"$Laa\",\"$Lab\"]}],\"$Lac\",\"$Lad\",\"$Lae\",\"$Laf\"]}]\n74:[\"$\",\"p\",null,{\"className\":\"mt-3 text-gray-600\",\"children\":\"Full working examples in popular languages. Replace the API key with your own to get started.\"}]\n75:[\"$\",\"p\",null,{\"className\":\"mt-3 text-gray-600\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-semibold text-gray-900\",\"children\":\"Official SDKs:\"}],\" \",[[\"$\",\"span\",\"@writehuman/sdk\",{\"children\":[\"\",\"TypeScript / JavaScript\",\" \",[\"$\",\"a\",null,{\"href\":\"https://www.npmjs.com/package/@writehuman/sdk\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"font-medium text-[#af72d5] hover:underline\",\"children\":[\"$\",\"code\",null,{\"className\":\"font-mono text-sm\",\"children\":\"@writehuman/sdk\"}]}]]}],[\"$\",\"span\",\"writehuman\",{\"children\":[\" and \",\"Python\",\" \",[\"$\",\"a\",null,{\"href\":\"https://pypi.org/project/writehuman/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"font-medium text-[#af72d5] hover:underline\",\"children\":[\"$\",\"code\",null,{\"className\":\"font-mono text-sm\",\"children\":\"writehuman\"}]}]]}]],\". \",[[\"$\",\"span\",\"0\",{\"children\":\"Both follow the documented retry policy: a 429, 503 or 504 is retried after the API's \"}],[\"$\",\"code\",\"1\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"Retry-After\"}],[\"$\",\"span\",\"2\",{\"children\":\", at most 2 retries and only when the wait is 60 s or less (both defaults); a longer \"}],[\"$\",\"code\",\"3\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"Retry-After\"}],[\"$\",\"span\",\"4\",{\"children\":\", such as an authentication lockout, is not waited for and the error surfaces at once with it as \"}],[\"$\",\"code\",\"5\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"retry_after\"}],[\"$\",\"span\",\"6\",{\"children\":\" / \"}],[\"$\",\"code\",\"7\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"retryAfter\"}],[\"$\",\"span\",\"8\",{\"children\":\". A request that may have been charged is never resent.\"}]]]}]\n76:[\"$\",\"ul\",null,{\"className\":\"mt-3 mb-6 space-y-2 text-sm text-gray-600\",\"children\":[[\"$\",\"li\",\"@writehuman/sdk\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"TypeScript / JavaScript\",\":\"]}],\" \",[[\"$\",\"span\",\"wh.humanize(text, { tone, language })\",{\"children\":[\"\",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800\",\"children\":\"wh.humanize(text, { tone, language })\"}]]}],[\"$\",\"span\",\"wh.detect(text, { language, includeSentences })\",{\"children\":[\", \",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800\",\"children\":\"wh.detect(text, { language, includeSentences })\"}]]}],[\"$\",\"span\",\"wh.usage()\",{\"children\":[\", \",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800\",\"children\":\"wh.usage()\"}]]}]],\". \",[[\"$\",\"span\",\"0\",{\"children\":\"Every failure throws a subclass of \"}],[\"$\",\"code\",\"1\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"WriteHumanError\"}],[\"$\",\"span\",\"2\",{\"children\":\" with \"}],[\"$\",\"code\",\"3\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"code\"}],[\"$\",\"span\",\"4\",{\"children\":\", \"}],[\"$\",\"code\",\"5\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"status\"}],[\"$\",\"span\",\"6\",{\"children\":\" and \"}],[\"$\",\"code\",\"7\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"retryAfter\"}],[\"$\",\"span\",\"8\",{\"children\":\"; \"}],[\"$\",\"code\",\"9\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"InsufficientBalanceError\"}],[\"$\",\"span\",\"10\",{\"children\":\" adds \"}],[\"$\",\"code\",\"11\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"wordsRemaining\"}],[\"$\",\"span\",\"12\",{\"children\":\".\"}]]]}],[\"$\",\"li\",\"writehuman\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"font-medium text-gray-900\",\"children\":[\"Python\",\":\"]}],\" \",[[\"$\",\"span\",\"wh.humanize(text, tone=None, language=None)\",{\"children\":[\"\",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800\",\"children\":\"wh.humanize(text, tone=None, language=None)\"}]]}],[\"$\",\"span\",\"wh.detect(text, language=None, include_sentences=False)\",{\"children\":[\", \",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800\",\"children\":\"wh.detect(text, language=None, include_sentences=False)\"}]]}],[\"$\",\"span\",\"wh.usage()\",{\"children\":[\", \",[\"$\",\"code\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 font-mono font-medium text-gray-800\",\"children\":\"wh.usage()\"}]]}]],\". \",[[\"$\",\"span\",\"0\",{\"children\":\"Every failure raises a subclass of \"}],[\"$\",\"code\",\"1\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"WriteHumanError\"}],[\"$\",\"span\",\"2\",{\"children\":\" with \"}],[\"$\",\"code\",\"3\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"code\"}],[\"$\",\"span\",\"4\",{\"children\":\", \"}],[\"$\",\"code\",\"5\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"status\"}],[\"$\",\"span\",\"6\",{\"children\":\" and \"}],[\"$\",\"code\",\"7\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"retry_after\"}],[\"$\",\"span\",\"8\",{\"children\":\"; \"}],[\"$\",\"code\",\"9\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"InsufficientBalanceError\"}],[\"$\",\"span\",\"10\",{\"children\":\" adds \"}],[\"$\",\"code\",\"11\",{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-sm font-mono font-medium text-gray-800\",\"children\":\"words_remaining\"}],[\"$\",\"span\",\"12\",{\"children\":\".\"}]]]}]]}]\n77:[\"$\",\"$L48\",null,{\"tabs\":\"$34:props:children:1:props:children:3:props:children:props:tabs\"}]\n78:[\"$\",\"h3\",null,{\"className\":\"mt-8 text-lg font-semibold text-gray-900\",\"children\":\"Response\"}]\n79:[\"$\",\"p\",null,{\"className\":\"mt-1 mb-3 text-sm text-gray-600\",\"children\":\"The response format depends on your plan.\"}]\n7a:[\"$\",\"$L68\",null,{\"examples\":\"$35:props:children:1:props:children:2:props:examples\"}]\n7b:[\"$\",\"span\",\"Dutch\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Dutch\"}]\n7c:[\"$\",\"span\",\"Polish\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Polish\"}]\n7d:[\"$\",\"span\",\"Thai\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Thai\"}]\n7e:[\"$\",\"span\",\"Indonesian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Indonesian\"}]\n7f:[\"$\",\"span\",\"Malay\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Malay\"}]\n80:[\"$\",\"span\",\"Persian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Persian\"}]\n81:[\"$\",\"span\",\"Hebrew\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Hebrew\"}]\n82:[\"$\",\"span\",\"Greek\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Greek\"}]\n83:[\"$\",\"span\",\"Czech\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Czech\"}]\n84:[\"$\",\"span\",\"Danish\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Danish\"}]\n85:[\"$\",\"span\",\"Finnish\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Finnish\"}]\n86:[\"$\",\"span\",\"Norwegian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Norwegian\"}]\n87:[\"$\",\"span\",\"Romanian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Romanian\"}]\n88:[\"$\",\"span\",\"Hungarian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Hungarian\"}]\n89:[\"$\",\"span\",\"Slovak\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Slovak\"}]\n8a:[\"$\",\"span\",\"Bulgarian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Bulgarian\"}]\n8b:[\"$\",\"span\",\"Croatian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Croatian\"}]\n8c:[\"$\",\"span\",\"Serbian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Serbian\"}]\n8d:[\"$\",\"span\",\"Slovenian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Slovenian\"}]\n8e:[\"$\",\"span\",\"Lithuanian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Lithuanian\"}]\n8f:[\"$\",\"span\",\"Latvian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Latvian\"}]\n90:[\"$\",\"span\",\"Estonian\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Estonian\"}]\n91:[\"$\",\"span\",\"Urdu\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Urdu\"}]\n92:[\"$\",\"span\",\"Swahili\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Swahili\"}]\n93:[\"$\",\"span\",\"Tagalog\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Tagalog\"}]\n94:[\"$\",\"span\",\"Afrikaans\",{\"className\":\"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700\",\"children\":\"Afrikaans\"}]\n95:[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"}]\n96:[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-sm text-gray-500 leading-relaxed\",\"children\":\"AI writing features where the final output needs to be indistinguishable from human writing.\"}]\n97:[\"$\",\"$L20\",\"Enterprise Teams\",{\"href\":\"/ai-humanizer-api-for-enterprise\",\"className\":\"group rounded-2xl border border-gray-200 bg-white p-5 shadow-sm transition hover:shadow-md hover:border-[#af72d5]/40\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 flex h-10 w-10 items-center justify-center rounded-xl bg-[#af72d5]/10 text-[#af72d5]\",\"children\":[\"$\",\"svg\",null,{\"className\":\"h-6 w-6\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":1.5,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21\"}]}]}],[\"$\",\"h3\",null,{\"className\":\"flex items-center justify-between text-sm font-semibold text-gray-900\",\"children\":[\"Enterprise Teams\",[\"$\",\"svg\",null,{\"className\":\"h-4 w-4 text-gray-300 transition group-hover:translate-x-0.5 group-hover:text-[#af72d5]\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"strokeWidth\":2,\"stroke\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"}]}]]}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-sm text-gray-500 leading-relaxed\",\"children\":\"Process internal communications, reports, and documentation generated by large language models.\"}]]}]\n99:[\"$\",\"tr\",\"reverify_required\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":403}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"reverify_required\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The account must be re-verified by email. The account owner signs in at finix-wh.earnwithdigital.online to continue; then the account's newest key created after the check began works within about a minute; every other key stays disabled until the check ends, so create a new key. Not retried by the SDKs.\"}]]}]\n9a:[\"$\",\"tr\",\"rate_limited\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":429}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"rate_limited\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Over your plan's requests per minute. `Retry-After` is the time to the next window.\"}]]}]\n9b:[\"$\",\"tr\",\"auth_locked_out\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":429}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"auth_locked_out\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Too many failed authentications from this address. `Retry-After` is the remaining lockout.\"}]]}]\n9c:[\"$\",\"tr\",\"queue_full\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":429}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"queue_full\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The admission queue is full. Retry after `Retry-After`.\"}]]}]\n9d:[\"$\",\"tr\",\"queue_timeout\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":429}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"queue_timeout\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The request waited in the admission queue past its deadline. Retry after `Retry-After`.\"}]]}]\n9e:[\"$\",\"tr\",\"at_capacity\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":503}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"at_capacity\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Cluster-wide capacity shed. Retry after `Retry-After`.\"}]]}]\n9f:[\"$\",\"tr\",\"billing_unavailable\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":503}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"billing_unavailable\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The billing store is unreachable; the request was refused rather than served unmetered. Retry after `Retry-After`.\"}]]}]\na0:[\"$\",\"tr\",\"detector_unavailable\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":503}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"detector_unavailable\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The detector, or the translation step before it, is unavailable (`/v1/detect` only). Retry after `Retry-After`.\"}]]}]\na1:[\"$\",\"tr\",\"timeout\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":504}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"timeout\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Generation did not finish within the server deadline (`/v1/humanize` only). Nothing charged; retry after `Retry-After`.\"}]]}]\na2:[\"$\",\"tr\",\"processing_failed\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":500}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"processing_failed\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Generation raised an error.\"}]]}]\na3:[\"$\",\"tr\",\"no_results\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":500}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"no_results\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Generation finished without a usable result.\"}]]}]\na4:[\"$\",\"tr\",\"safety_limit\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":500}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"safety_limit\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"Generation produced far more text than the input; discarded.\"}]]}]\na5:[\"$\",\"tr\",\"billing_failed\",{\"className\":\"border-b border-gray-50 last:border-0 align-top\",\"children\":[[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-gray-700\",\"children\":500}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 font-mono text-purple-700 break-all\",\"children\":\"billing_failed\"}],[\"$\",\"td\",null,{\"className\":\"px-4 py-2.5 text-gray-600 leading-relaxed\",\"children\":\"The result was produced but the usage write failed part-way; included and/or top-up words may already have been charged. Check `/v1/usage`.\"}]]}]\na7:[\"$\",\"p\",null,{\"className\":\"mt-2 font-mono text-sm text-gray-500\",\"children\":[\"https://api.finix-wh.earnwithdigital.online\",\"/v1/humanize\"]}]\na8:[\"$\",\"div\",null,{\"className\":\"mt-4 text-gray-600 leading-relaxed\",\"children\":[\"Rewrite AI-generated text to sound naturally human. Deducts input words from your balance. Usage is tracked by input text word count. Words are deducted from your monthly subscription allowance first, then from any purchased top-up credits. The public API accepts\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"text\"}],\", \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"tone\"}],\", and\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"language\"}],\" only —\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"model\"}],\", \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"num_outputs\"}],\", and\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"sequence_id\"}],\" are not available.\"]}]\na9:[\"$\",\"div\",null,{\"id\":\"endpoint-humanize-request-body\",\"className\":\"scroll-mt-28\",\"children\":[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Request Body — application/json\"}],[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-xl border border-gray-200 bg-white\",\"children\":[[\"$\",\"div\",\"text\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"text\"}],[\"$\",\"span\",null,{\"className\":\"rounded bg-red-50 px-1.5 py-0.5 text-[10px] font-bold uppercase text-red-600\",\"children\":\"required\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"The text to humanize.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"\u003e= 30 characters, \u003c= 100,000 characters\"}],\"$undefined\"]}]]}],[\"$\",\"div\",\"tone\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"tone\"}],[\"$\",\"span\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500\",\"children\":\"optional\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Optional writing tone. Omit for default style.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"Allowed: professional, academic, blog, casual, creative, scientific, technical\"}],\"$undefined\"]}]]}],[\"$\",\"div\",\"language\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 \",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"language\"}],[\"$\",\"span\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500\",\"children\":\"optional\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Target language (e.g. English, Spanish, Chinese (Mandarin)). Auto-detected if omitted.\"}],\"$undefined\",\"$undefined\"]}]]}]]}]]}]}]\naa:[\"$\",\"div\",null,{\"id\":\"endpoint-humanize-response\",\"className\":\"mt-8 scroll-mt-28\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 mb-1\",\"children\":[[\"$\",\"span\",null,{\"className\":\"rounded-md bg-green-100 px-2 py-0.5 text-xs font-bold text-green-700\",\"children\":\"200\"}],[\"$\",\"span\",null,{\"className\":\"text-sm font-medium text-gray-700\",\"children\":\"Text humanized successfully\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Response Body — application/json\"}],[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-xl border border-gray-200 bg-white\",\"children\":[[\"$\",\"div\",\"id\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"id\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Unique identifier for this humanization request.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"created\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"created\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"integer\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Unix timestamp (milliseconds) when the request was received.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"results\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"results\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string[]\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Humanized text variations, sorted by score (best first).\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"scores\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"scores\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"(number | null)[] | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Human-likeness score for each result (0–1, higher = more human).\"}],\"$undefined\",[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs font-medium text-[#af72d5]\",\"children\":\"Premium plans only. `null` on Standard plans.\"}]]}]]}],[\"$\",\"div\",\"input_words\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"input_words\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"integer\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Number of words billed for this request.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"words_remaining\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 \",\"children\":[\"$Lb0\",\"$Lb1\"]}]]}]]}],\"$undefined\"]}]\nab:[\"$\",\"div\",null,{\"id\":\"endpoint-humanize-errors\",\"className\":\"mt-8 scroll-mt-28\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-4 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Error Responses\"}],[\"$\",\"div\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"div\",\"401\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":401}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Missing or invalid API key.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Invalid API key\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Invalid API key\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Invalid API key\\\",\\n  \\\"code\\\": \\\"invalid_api_key\\\"\\n}\"}]]}],[\"$\",\"div\",\"Missing Authorization header\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Missing Authorization header\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Missing or invalid Authorization header. Use: Bearer \u003capi_key\u003e\\\",\\n  \\\"code\\\": \\\"missing_api_key\\\"\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"402\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":402}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"No active subscription or insufficient word balance.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"No active subscription\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"No active subscription\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"No active subscription\\\",\\n  \\\"code\\\": \\\"no_subscription\\\"\\n}\"}]]}],[\"$\",\"div\",\"Insufficient word balance\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Insufficient word balance\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Insufficient word balance\\\",\\n  \\\"code\\\": \\\"insufficient_balance\\\",\\n  \\\"words_remaining\\\": {\\n    \\\"included\\\": 12,\\n    \\\"topup\\\": 0,\\n    \\\"total\\\": 12\\n  }\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"403\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":403}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"The account must be re-verified by email before its keys are served again (HTTP 403).\\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\\naccount's newest key created after the check began then works within about a minute;\\nevery other key stays disabled until the check ends, so create a new key on the\\ndashboard. Nothing is charged. Do not retry automatically.\\n\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\\\",\\n  \\\"code\\\": \\\"reverify_required\\\"\\n}\"}]]}]]}]]}]]}]}],\"$Lb2\",\"$Lb3\",\"$Lb4\",\"$Lb5\",\"$Lb6\"]}]]}]\nac:[\"$\",\"hr\",null,{\"className\":\"border-gray-100\"}]\nb7:Tc11,## GET /v1/usage — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nRetrieve your current word usage, plan tier, and API version. Read-only — it never deducts words. Remaining balance = `included_words − words_used_this_cycle + topup_balance`.\n\n`GET https://api.finix-wh.earnwithdigital.online/v1/usage`\n\n### Response (200 — usage returned)\n- `included_words` (integer) — Words included in your plan each billing cycle.\n- `words_used_this_cycle` (integer) — Words used so far in the current billing cycle.\n- `topup_balance` (integer) — Remaining top-up words. Top-up packs never expire.\n- `tier` (string) — Your plan: api_standard or api_premium.\n- `version` (string) — Current API version.\n\n#### Example response\n```json\n{\n  \"included_words\": 400000,\n  \"words_used_this_cycle\": 18311,\n  \"topup_balance\": 100000,\n  \"tier\": \"api_premium\",\n  \"version\": \"v1.1\"\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription (HTTP 402).\n  - Example:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **429** — Too many failed auth attempts.\n  - Example:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```ad:[\"$\",\"div\",null,{\"id\":\"endpoint-usage\",\"className\":\"scroll-mt-28\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"rounded-md px-3 py-1.5 text-xs font-bold uppercase bg-sky-100 text-sky-800\",\"children\":\"GET\"}],[\"$\",\"code\",null,{\"className\":\"font-mono text-lg font-semibold text-gray-900 break-all\",\"children\":\"/v1/usage\"}],[\"$\",\"$L2e\",null,{\"text\":\"$b7\",\"variant\":\"section\",\"className\":\"ml-auto\"}]]}],\"$Lb8\",\"$Lb9\",\"$undefined\",\"$Lba\",\"$Lbb\"]}]\nae:[\"$\",\"hr\",null,{\"className\":\"border-gray-100\"}]\nbc:T18ac,## POST /v1/detect — WriteHuman API\n\nContext — WriteHuman API:\n- Base URL: `https://api.finix-wh.earnwithdigital.online`\n- API version: v1.1\n- Auth: send `Authorization: Bearer \u003capi_key\u003e` on every request. Keys are prefixed `wh_live_`.\n- Content type: `application/json` for POST request bodies.\n- Errors: any non-2xx response returns `{ \"error\": \"\u003cmessage\u003e\", \"code\": \"\u003cstable_code\u003e\" }` as JSON; branch on `code`. Every 429, 503 and 504 from the API carries a `Retry-After` header (seconds) and is safe to retry; one without the JSON body and `code` came from a load balancer or proxy and must not trigger an automatic resend of a billed request.\n- Billing: usage is counted by input-text word count; words are deducted from the monthly plan allowance first, then from never-expiring top-up credits.\n- Official SDKs: TypeScript / JavaScript `npm install @writehuman/sdk`; Python `pip install writehuman`. Each client has one method per endpoint (humanize, detect, usage) and typed errors by `code`; see Code Examples and Errors.\n\nScore text for AI authorship using WriteHuman's detection model. Billed per input word (the original text), the same way as /v1/humanize. Non-English input is automatically translated to English before scoring. Set `include_sentences` to `true` for a per-sentence breakdown. Note: `ai_probability` runs 0–1 where 1 = AI — the opposite orientation of the humanize `scores` field.\n\n`POST https://api.finix-wh.earnwithdigital.online/v1/detect`\n\n### Request body (application/json)\n- `text` (string, required) — The text to score for AI authorship. Constraints: \u003e= 10 characters, \u003c= 100,000 characters.\n- `language` (string | null, optional) — Language of the text. Auto-detected if omitted; non-English text is translated to English before scoring.\n- `include_sentences` (boolean, optional) — Return a per-sentence AI-probability breakdown. Constraints: Default: false.\n\n### Response (200 — text scored successfully)\n- `scanId` (string | null) — Unique identifier for this detection scan.\n- `version` (string | null) — Detector model version.\n- `versionID` (string | null) — Detector build identifier.\n- `ai_probability` (number | null) — Probability the text is AI-generated (0–1, where 1 = AI). Note: Opposite orientation from the /v1/humanize scores field, where higher = more human.\n- `predicted_class` (string | null) — Overall label: ai, human, or mixed.\n- `class_probabilities` (object) — Probability for each class. Constraints: Fields: ai, human, mixed.\n- `request_meta` (object) — Length of the scored text. Constraints: doc_length: { chars, tokens }.\n- `language` (string) — Detected (or supplied) language of the input.\n- `sentences` (array) — Per-sentence breakdown, each { text, ai_prob }. Note: Present only when include_sentences is true.\n\n#### Example response\n```json\n{\n  \"scanId\": \"20260609OMIOISUZ\",\n  \"version\": \"txtdetect-2026-05-14\",\n  \"versionID\": \"V1.1.1\",\n  \"ai_probability\": 0.94,\n  \"predicted_class\": \"ai\",\n  \"class_probabilities\": { \"ai\": 0.94, \"human\": 0.04, \"mixed\": 0.02 },\n  \"request_meta\": { \"doc_length\": { \"chars\": 642, \"tokens\": 98 } },\n  \"language\": \"English\",\n  \"sentences\": [\n    { \"text\": \"Artificial intelligence has rapidly transformed modern business.\", \"ai_prob\": 0.97 },\n    { \"text\": \"Many teams now depend on it every single day.\", \"ai_prob\": 0.61 }\n  ]\n}\n```\n\n### Errors\n- **401** — Missing or invalid API key.\n  - Invalid API key:\n    ```json\n    {\n      \"error\": \"Invalid API key\",\n      \"code\": \"invalid_api_key\"\n    }\n    ```\n  - Missing Authorization header:\n    ```json\n    {\n      \"error\": \"Missing or invalid Authorization header\",\n      \"code\": \"missing_api_key\"\n    }\n    ```\n- **402** — No active subscription or insufficient word balance.\n  - No active subscription:\n    ```json\n    {\n      \"error\": \"No active subscription\",\n      \"code\": \"no_subscription\"\n    }\n    ```\n  - Insufficient word balance:\n    ```json\n    {\n      \"error\": \"Insufficient word balance\",\n      \"code\": \"insufficient_balance\",\n      \"words_remaining\": {\n        \"included\": 12,\n        \"topup\": 0,\n        \"total\": 12\n      }\n    }\n    ```\n- **403** — The account must be re-verified by email before its keys are served again (HTTP 403).\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\naccount's newest key created after the check began then works within about a minute;\nevery other key stays disabled until the check ends, so create a new key on the\ndashboard. Nothing is charged. Do not retry automatically.\n\n  - Example:\n    ```json\n    {\n      \"error\": \"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\",\n      \"code\": \"reverify_required\"\n    }\n    ```\n- **422** — Invalid input or over the per-request word limit.\n  - Invalid request body:\n    ```json\n    {\n      \"error\": \"Invalid request: ...\",\n      \"code\": \"invalid_request\"\n    }\n    ```\n  - Over word limit:\n    ```json\n    {\n      \"error\": \"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\",\n      \"code\": \"word_limit\"\n    }\n    ```\n- **429** — Rate limit or too many failed auth attempts.\n  - Rate limited:\n    ```json\n    {\n      \"error\": \"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\",\n      \"code\": \"rate_limited\"\n    }\n    ```\n  - Too many failed auth attempts:\n    ```json\n    {\n      \"error\": \"Too many failed authentication attempts\",\n      \"code\": \"auth_locked_out\"\n    }\n    ```\n- **500** — Billing update failure after a successful scan. Some of the request's words (included and/or top-up) may already have been charged before the write failed.\n  - Example:\n    ```json\n    {\n      \"error\": \"Billing update failed\",\n      \"code\": \"billing_failed\"\n    }\n    ```\n- **503** — Detector unavailable or at capacity, translation failed, or billing temporarily unavailable. No words charged.\n  - Detector unavailable, at capacity, or translation failed:\n    ```json\n    {\n      \"error\": \"Detection service unavailable. Please retry.\",\n      \"code\": \"detector_unavailable\"\n    }\n    ```\n  - Billing temporarily unavailable:\n    ```json\n    {\n      \"error\": \"Service temporarily unavailable, please retry shortly.\",\n      \"code\": \"billing_unavailable\"\n    }\n    ```af:[\"$\",\"div\",null,{\"id\":\"endpoint-detect\",\"className\":\"scroll-mt-28\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"rounded-md px-3 py-1.5 text-xs font-bold uppercase bg-green-100 text-green-800\",\"children\":\"POST\"}],[\"$\",\"code\",null,{\"className\":\"font-mono text-lg font-semibold text-gray-900 break-all\",\"children\":\"/v1/detect\"}],[\"$\",\"$L2e\",null,{\"text\":\"$bc\",\"variant\":\"section\",\"className\":\"ml-auto\"}]]}],\"$Lbd\",\"$Lbe\",\"$Lbf\",\"$Lc0\",\"$Lc1\"]}]\nb0:[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"words_remaining\"}],false]}]\nb1:[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"object\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Your remaining word balance after this request.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"Fields: included (integer), topup (integer), total (integer)\"}],\"$undefined\"]}]\nb2:[\"$\",\"div\",\"422\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":422}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Invalid input, forbidden parameters, over word limit, or content blocked by moderation.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Invalid request body\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Invalid request body\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Invalid request: ...\\\",\\n  \\\"code\\\": \\\"invalid_request\\\"\\n}\"}]]}],[\"$\",\"div\",\"`model` is not available on the public API\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"`model` is not available on the public API\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"The model parameter is not available\\\",\\n  \\\"code\\\": \\\"forbidden_param\\\"\\n}\"}]]}],[\"$\",\"div\",\"`num_outputs` is not available on the public API\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"`num_outputs` is not available on the public API\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"The num_outputs parameter is not available\\\",\\n  \\\"code\\\": \\\"forbidden_param\\\"\\n}\"}]]}],[\"$\",\"div\",\"`sequence_id` is not available on the public API\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"`sequence_id` is not available on the public API\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"The sequence_id parameter is not available\\\",\\n  \\\"code\\\": \\\"forbidden_param\\\"\\n}\"}]]}],[\"$\",\"div\",\"Over word limit\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Over word limit\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\\\",\\n  \\\"code\\\": \\\"word_limit\\\"\\n}\"}]]}],[\"$\",\"div\",\"Content blocked\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Content blocked\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Content blocked: sexual\\\",\\n  \\\"code\\\": \\\"moderation_blocked\\\"\\n}\"}]]}]]}]]}]]}]}]\nb3:[\"$\",\"div\",\"429\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":429}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Rate limit, queue capacity, or too many failed auth attempts.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Rate limited\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Rate limited\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\\\",\\n  \\\"code\\\": \\\"rate_limited\\\"\\n}\"}]]}],[\"$\",\"div\",\"Too many failed auth attempts\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Too many failed auth attempts\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Too many failed authentication attempts\\\",\\n  \\\"code\\\": \\\"auth_locked_out\\\"\\n}\"}]]}],[\"$\",\"div\",\"Request queue full\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Request queue full\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Too many queued requests. Please retry shortly.\\\",\\n  \\\"code\\\": \\\"queue_full\\\"\\n}\"}]]}],[\"$\",\"div\",\"Queue wait timeout\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Queue wait timeout\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Request waited too long for capacity. Please retry.\\\",\\n  \\\"code\\\": \\\"queue_timeout\\\"\\n}\"}]]}]]}]]}]]}]}]\nb4:[\"$\",\"div\",\"500\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-gray-800 text-gray-200\",\"children\":500}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Processing failure. No words charged, except that `billing_failed` may have charged some of the request's words (included and/or top-up) before the usage write failed.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Generation failed\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Generation failed\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Processing failed\\\",\\n  \\\"code\\\": \\\"processing_failed\\\"\\n}\"}]]}],[\"$\",\"div\",\"Generation returned nothing usable\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Generation returned nothing usable\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Processing returned no results\\\",\\n  \\\"code\\\": \\\"no_results\\\"\\n}\"}]]}],[\"$\",\"div\",\"Output exceeded the safety limit\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Output exceeded the safety limit\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Output exceeded safety limit\\\",\\n  \\\"code\\\": \\\"safety_limit\\\"\\n}\"}]]}],[\"$\",\"div\",\"Billing update failed after generation\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Billing update failed after generation\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Billing update failed\\\",\\n  \\\"code\\\": \\\"billing_failed\\\"\\n}\"}]]}]]}]]}]]}]}]\nb5:[\"$\",\"div\",\"503\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":503}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Service at capacity, or billing temporarily unavailable. No words charged.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Service at capacity\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Service at capacity\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Service is at capacity. Please retry shortly.\\\",\\n  \\\"code\\\": \\\"at_capacity\\\"\\n}\"}]]}],[\"$\",\"div\",\"Billing temporarily unavailable\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Billing temporarily unavailable\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Service temporarily unavailable, please retry shortly.\\\",\\n  \\\"code\\\": \\\"billing_unavailable\\\"\\n}\"}]]}]]}]]}]]}]}]\nb6:[\"$\",\"div\",\"504\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-gray-800 text-gray-200\",\"children\":504}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"The request did not finish within the server deadline (170 seconds from request entry; generation is stopped once 10 seconds remain so that billing is never cut part-way). No words charged; safe to retry.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Processing did not finish within 160 seconds. Nothing was charged; please retry.\\\",\\n  \\\"code\\\": \\\"timeout\\\"\\n}\"}]]}]]}]]}]]}]}]\nb8:[\"$\",\"p\",null,{\"className\":\"mt-2 font-mono text-sm text-gray-500\",\"children\":[\"https://api.finix-wh.earnwithdigital.online\",\"/v1/usage\"]}]\nb9:[\"$\",\"div\",null,{\"className\":\"mt-4 text-gray-600 leading-relaxed\",\"children\":[\"Retrieve your current word usage, plan tier, and API version. Read-only — it never deducts words. Remaining balance =\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"included_words − words_used_this_cycle + topup_balance\"}],\".\"]}]\nba:[\"$\",\"div\",null,{\"id\":\"endpoint-usage-response\",\"className\":\"mt-8 scroll-mt-28\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 mb-1\",\"children\":[[\"$\",\"span\",null,{\"className\":\"rounded-md bg-green-100 px-2 py-0.5 text-xs font-bold text-green-700\",\"children\":\"200\"}],[\"$\",\"span\",null,{\"className\":\"text-sm font-medium text-gray-700\",\"children\":\"Usage returned\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Response Body — application/json\"}],[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-xl border border-gray-200 bg-white\",\"children\":[[\"$\",\"div\",\"included_words\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"included_words\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"integer\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Words included in your plan each billing cycle.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"words_used_this_cycle\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"words_used_this_cycle\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"integer\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Words used so far in the current billing cycle.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"topup_balance\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"topup_balance\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"integer\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Remaining top-up words. Top-up packs never expire.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"tier\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"tier\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Your plan: api_standard or api_premium.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"version\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 \",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"version\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Current API version.\"}],\"$undefined\",\"$undefined\"]}]]}]]}]]}],[\"$\",\"pre\",null,{\"className\":\"mt-4 overflow-x-auto rounded-xl bg-gray-900 p-4 font-mono text-[13px] leading-relaxed text-gray-200\",\"children\":\"{\\n  \\\"included_words\\\": 400000,\\n  \\\"words_used_this_cycle\\\": 18311,\\n  \\\"topup_balance\\\": 100000,\\n  \\\"tier\\\": \\\"api_premium\\\",\\n  \\\"version\\\": \\\"v1.1\\\"\\n}\"}]]}]\nbb:[\"$\",\"div\",null,{\"id\":\"endpoint-usage-errors\",\"className\":\"mt-8 scroll-mt-28\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-4 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Error Responses\"}],[\"$\",\"div\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"div\",\"401\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":401}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Missing or invalid API key.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Invalid API key\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Invalid API key\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Invalid API key\\\",\\n  \\\"code\\\": \\\"invalid_api_key\\\"\\n}\"}]]}],[\"$\",\"div\",\"Missing Authorization header\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Missing Authorization header\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Missing or invalid Authorization header\\\",\\n  \\\"code\\\": \\\"missing_api_key\\\"\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"402\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":402}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"No active subscription (HTTP 402).\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"No active subscription\\\",\\n  \\\"code\\\": \\\"no_subscription\\\"\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"403\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":403}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"The account must be re-verified by email before its keys are served again (HTTP 403).\\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\\naccount's newest key created after the check began then works within about a minute;\\nevery other key stays disabled until the check ends, so create a new key on the\\ndashboard. Nothing is charged. Do not retry automatically.\\n\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\\\",\\n  \\\"code\\\": \\\"reverify_required\\\"\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"429\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":429}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Too many failed auth attempts.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[\"$Lc2\"]}]]}]]}]}]]}]]}]\nbd:[\"$\",\"p\",null,{\"className\":\"mt-2 font-mono text-sm text-gray-500\",\"children\":[\"https://api.finix-wh.earnwithdigital.online\",\"/v1/detect\"]}]\nbe:[\"$\",\"div\",null,{\"className\":\"mt-4 text-gray-600 leading-relaxed\",\"children\":[\"Score text for AI authorship using WriteHuman's detection model. Billed per input word (the original text), the same way as \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"/v1/humanize\"}],\". Non-English input is automatically translated to English before scoring. Set\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"include_sentences\"}],\" to \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"true\"}],\" for a per-sentence breakdown. Note: \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"ai_probability\"}],\" runs 0–1 where\",\" \",[\"$\",\"strong\",null,{\"children\":\"1 = AI\"}],\" — the opposite orientation of the humanize\",\" \",[\"$\",\"code\",null,{\"className\":\"text-sm\",\"children\":\"scores\"}],\" field.\"]}]\nbf:[\"$\",\"div\",null,{\"id\":\"endpoint-detect-request-body\",\"className\":\"scroll-mt-28\",\"children\":[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Request Body — application/json\"}],[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-xl border border-gray-200 bg-white\",\"children\":[[\"$\",\"div\",\"text\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"text\"}],[\"$\",\"span\",null,{\"className\":\"rounded bg-red-50 px-1.5 py-0.5 text-[10px] font-bold uppercase text-red-600\",\"children\":\"required\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"The text to score for AI authorship.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"\u003e= 10 characters, \u003c= 100,000 characters\"}],\"$undefined\"]}]]}],[\"$\",\"div\",\"language\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"language\"}],[\"$\",\"span\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500\",\"children\":\"optional\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Language of the text. Auto-detected if omitted; non-English text is translated to English before scoring.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"include_sentences\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 \",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"include_sentences\"}],[\"$\",\"span\",null,{\"className\":\"rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-gray-500\",\"children\":\"optional\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"boolean\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Return a per-sentence AI-probability breakdown.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"Default: false\"}],\"$undefined\"]}]]}]]}]]}]}]\nc0:[\"$\",\"div\",null,{\"id\":\"endpoint-detect-response\",\"className\":\"mt-8 scroll-mt-28\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 mb-1\",\"children\":[[\"$\",\"span\",null,{\"className\":\"rounded-md bg-green-100 px-2 py-0.5 text-xs font-bold text-green-700\",\"children\":\"200\"}],[\"$\",\"span\",null,{\"className\":\"text-sm font-medium text-gray-700\",\"children\":\"Text scored successfully\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-6\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-3 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Response Body — application/json\"}],[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-xl border border-gray-200 bg-white\",\"children\":[[\"$\",\"div\",\"scanId\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"scanId\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Unique identifier for this detection scan.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"version\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"version\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Detector model version.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"versionID\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"versionID\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Detector build identifier.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"ai_probability\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"ai_probability\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"number | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Probability the text is AI-generated (0–1, where 1 = AI).\"}],\"$undefined\",[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs font-medium text-[#af72d5]\",\"children\":\"Opposite orientation from the /v1/humanize scores field, where higher = more human.\"}]]}]]}],[\"$\",\"div\",\"predicted_class\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"predicted_class\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string | null\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Overall label: ai, human, or mixed.\"}],\"$undefined\",\"$undefined\"]}]]}],[\"$\",\"div\",\"class_probabilities\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[\"$Lc3\",\"$Lc4\"]}],\"$Lc5\",\"$Lc6\",\"$Lc7\"]}]]}],\"$Lc8\"]}]\nc1:[\"$\",\"div\",null,{\"id\":\"endpoint-detect-errors\",\"className\":\"mt-8 scroll-mt-28\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-4 text-xs font-semibold uppercase tracking-wider text-gray-400\",\"children\":\"Error Responses\"}],[\"$\",\"div\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"div\",\"401\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":401}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Missing or invalid API key.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Invalid API key\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Invalid API key\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Invalid API key\\\",\\n  \\\"code\\\": \\\"invalid_api_key\\\"\\n}\"}]]}],[\"$\",\"div\",\"Missing Authorization header\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Missing Authorization header\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Missing or invalid Authorization header\\\",\\n  \\\"code\\\": \\\"missing_api_key\\\"\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"402\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":402}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"No active subscription or insufficient word balance.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"No active subscription\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"No active subscription\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"No active subscription\\\",\\n  \\\"code\\\": \\\"no_subscription\\\"\\n}\"}]]}],[\"$\",\"div\",\"Insufficient word balance\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Insufficient word balance\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Insufficient word balance\\\",\\n  \\\"code\\\": \\\"insufficient_balance\\\",\\n  \\\"words_remaining\\\": {\\n    \\\"included\\\": 12,\\n    \\\"topup\\\": 0,\\n    \\\"total\\\": 12\\n  }\\n}\"}]]}]]}]]}]]}]}],[\"$\",\"div\",\"403\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":403}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"The account must be re-verified by email before its keys are served again (HTTP 403).\\nThe account owner signs in at finix-wh.earnwithdigital.online and follows the emailed link. The\\naccount's newest key created after the check began then works within about a minute;\\nevery other key stays disabled until the check ends, so create a new key on the\\ndashboard. Nothing is charged. Do not retry automatically.\\n\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"This account must be re-verified by email. The account owner should sign in at finix-wh.earnwithdigital.online to continue.\\\",\\n  \\\"code\\\": \\\"reverify_required\\\"\\n}\"}]]}]]}]]}]]}]}],\"$Lc9\",\"$Lca\",\"$Lcb\",\"$Lcc\"]}]]}]\nc2:[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Too many failed authentication attempts\\\",\\n  \\\"code\\\": \\\"auth_locked_out\\\"\\n}\"}]]}]\nc3:[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"class_probabilities\"}],false]}]\nc4:[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"object\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Probability for each class.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"Fields: ai, human, mixed\"}],\"$undefined\"]}]\nc5:[\"$\",\"div\",\"request_meta\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"request_meta\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"object\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Length of the scored text.\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs text-gray-400\",\"children\":\"doc_length: { chars, tokens }\"}],\"$undefined\"]}]]}]\nc6:[\"$\",\"div\",\"language\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 border-b border-gray-100\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"language\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"string\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Detected (or supplied) language of the input.\"}],\"$undefined\",\"$undefined\"]}]]}]\nc7:[\"$\",\"div\",\"sentences\",{\"className\":\"flex flex-col gap-1 px-4 py-3.5 sm:flex-row sm:items-start sm:gap-4 \",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 sm:w-48 shrink-0\",\"children\":[[\"$\",\"code\",null,{\"className\":\"font-mono text-[13px] font-semibold text-gray-900\",\"children\":\"sentences\"}],false]}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-xs text-[#af72d5]\",\"children\":\"array\"}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 text-sm text-gray-600 leading-relaxed\",\"children\":\"Per-sentence breakdown, each { text, ai_prob }.\"}],\"$undefined\",[\"$\",\"p\",null,{\"className\":\"mt-1 text-xs font-medium text-[#af72d5]\",\"children\":\"Present only when include_sentences is true.\"}]]}]]}]\nc8:[\"$\",\"pre\",null,{\"className\":\"mt-4 overflow-x-auto rounded-xl bg-gray-900 p-4 font-mono text-[13px] leading-relaxed text-gray-200\",\"children\":\"{\\n  \\\"scanId\\\": \\\"20260609OMIOISUZ\\\",\\n  \\\"version\\\": \\\"txtdetect-2026-05-14\\\",\\n  \\\"versionID\\\": \\\"V1.1.1\\\",\\n  \\\"ai_probability\\\": 0.94,\\n  \\\"predicted_class\\\": \\\"ai\\\",\\n  \\\"class_probabilities\\\": { \\\"ai\\\": 0.94, \\\"human\\\": 0.04, \\\"mixed\\\": 0.02 },\\n  \\\"request_meta\\\": { \\\"doc_length\\\": { \\\"chars\\\": 642, \\\"tokens\\\": 98 } },\\n  \\\"language\\\": \\\"English\\\",\\n  \\\"sentences\\\": [\\n    { \\\"text\\\": \\\"Artificial intelligence has rapidly transformed modern business.\\\", \\\"ai_prob\\\": 0.97 },\\n    { \\\"text\\\": \\\"Many teams now depend on it every single day.\\\", \\\"ai_prob\\\": 0.61 }\\n  ]\\n}\"}]\nc9:[\"$\",\"div\",\"422\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-red-100 text-red-700\",\"children\":422}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Invalid input or over the per-request word limit.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Invalid request body\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Invalid request body\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Invalid request: ...\\\",\\n  \\\"code\\\": \\\"invalid_request\\\"\\n}\"}]]}],[\"$\",\"div\",\"Over word limit\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Over word limit\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Input exceeds per-request limit of 2000 words for your plan. Received ~2500 words.\\\",\\n  \\\"code\\\": \\\"word_limit\\\"\\n}\"}]]}]]}]]}]]}]}]\nca:[\"$\",\"div\",\"429\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":429}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Rate limit or too many failed auth attempts.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Rate limited\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Rate limited\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Rate limit exceeded for your plan (api_standard -\u003e 40/min). api_standard: 40/min | api_premium: 120/min | api_premium 800K+: 160/min\\\",\\n  \\\"code\\\": \\\"rate_limited\\\"\\n}\"}]]}],[\"$\",\"div\",\"Too many failed auth attempts\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Too many failed auth attempts\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Too many failed authentication attempts\\\",\\n  \\\"code\\\": \\\"auth_locked_out\\\"\\n}\"}]]}]]}]]}]]}]}]\ncb:[\"$\",\"div\",\"500\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-gray-800 text-gray-200\",\"children\":500}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Billing update failure after a successful scan. Some of the request's words (included and/or top-up) may already have been charged before the write failed.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Example\",{\"children\":[false,[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Billing update failed\\\",\\n  \\\"code\\\": \\\"billing_failed\\\"\\n}\"}]]}]]}]]}]]}]}]\ncc:[\"$\",\"div\",\"503\",{\"className\":\"rounded-xl border border-gray-200 bg-white p-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-start gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"shrink-0 rounded-md px-2.5 py-1 text-xs font-bold bg-amber-100 text-amber-700\",\"children\":503}],[\"$\",\"div\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-medium text-gray-900\",\"children\":\"Detector unavailable or at capacity, translation failed, or billing temporarily unavailable. No words charged.\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 space-y-2\",\"children\":[[\"$\",\"div\",\"Detector unavailable, at capacity, or translation failed\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Detector unavailable, at capacity, or translation failed\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Detection service unavailable. Please retry.\\\",\\n  \\\"code\\\": \\\"detector_unavailable\\\"\\n}\"}]]}],[\"$\",\"div\",\"Billing temporarily unavailable\",{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-1 text-xs font-medium text-gray-500\",\"children\":\"Billing temporarily unavailable\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-gray-50 p-3 font-mono text-xs text-gray-700 leading-relaxed\",\"children\":\"{\\n  \\\"error\\\": \\\"Service temporarily unavailable, please retry shortly.\\\",\\n  \\\"code\\\": \\\"billing_unavailable\\\"\\n}\"}]]}]]}]]}]]}]}]\n"])</script></body></html>