Skip to main content

WriteHuman API: Getting Started, Keys, and Common Errors

The basics of the WriteHuman API, where the docs and key live, why API and dashboard results can differ, and how to fix common errors.

Written by Ivan Jackson

This article helps developers get started with the WriteHuman API. It covers where to find the docs and your API key, how the API relates to the web app, and how to fix the most common errors.

What the WriteHuman API is

The WriteHuman API lets you humanize text programmatically from your own application. It is a completely separate product from the web subscription, with its own plans and its own pricing. You can have one, the other, or both: an API plan does not give you web access, and a web plan does not give you API access. You can browse plans at writehuman.ai/api and read the full documentation at writehuman.ai/api/docs.

  • It uses a single REST endpoint, so you send your text to one place and get humanized text back.

  • It supports 40+ languages.

  • The API plan does not limit humanization quality. Every API plan runs the full humanization process.

API plans and pricing

API plans are billed by input word count and are separate from any web subscription. See writehuman.ai/api for current details.

  • Standard: $29 per month. About 125,000 words per month, up to 2,000 words per call, 40 requests per minute.

  • Premium: $69 per month. About 400,000 words per month, up to 4,000 words per call, returns a best-of-3 scored result, 120 requests per minute.

  • Enterprise: custom pricing (contact sales through writehuman.ai/api).

If you need more words, top-up packs of 125,000 words are available for $25 each (up to 10 per purchase). Top-up words do not expire, and they are used after your monthly allowance runs out.

Where the docs and your API key live

Full setup instructions, request and response formats, and parameter details are documented at writehuman.ai/api/docs. Start there when you are wiring up your first request.

You create an API key from your dashboard at writehuman.ai, and it works instantly. Each account supports up to 5 keys, and any key can be revoked. Keep your keys private.

Authenticate every request with a Bearer token in the Authorization header. Your keys start with wh_live_. Send the correct key with each call.

Making a request

Send a POST request to https://api.writehuman.ai/v1/humanize. The request takes a required text field and an optional tone field. Allowed tones are professional, academic, blog, casual, creative, scientific, and technical. You can also set an optional language field, which is auto-detected if you leave it out. More than 40 languages are supported.

Two other endpoints are available: POST /v1/detect to check text, and GET /v1/usage to review your usage. Full request and response formats are in the docs at writehuman.ai/api/docs.

Rate limits

The API limits how many requests you can send per minute, based on your plan. This limit is separate from your monthly word allowance.

  • Standard: up to 40 requests per minute.

  • Premium: up to 120 requests per minute.

  • Enterprise: custom, higher limits (contact sales).

If you go over your limit, the API returns a 429 response, which means the rate limit was exceeded. To stay within it, spread your requests out rather than sending them all at once. If you do receive a 429, pause briefly and retry, ideally using exponential backoff (increasing the wait time between attempts). If you regularly need higher throughput, the Premium or Enterprise plans raise the limit.

Does the API match the web app?

The API uses the same humanization model as the WriteHuman web app, so you can expect the same quality and comparable results for the same input. Because the model is generative, the exact wording of an output can vary a little from one run to the next, but that is normal model variation, not a difference in engine or quality between the API and the web app.

Common errors and how to fix them

The API returns standard HTTP status codes. These are the ones you are most likely to see, and how to resolve them.

  • 401: your API key is invalid or missing. Check that you are sending the correct key in the Authorization header.

  • 402: no active subscription or insufficient word balance. Confirm your API plan is active and, if needed, add a top-up pack. Also make sure you are sending the correct key.

  • 422: invalid input. This covers an invalid request, a forbidden parameter, the word limit being exceeded, or text blocked by content moderation. If your text was blocked, reword any sensitive passages and retry.

  • 429: rate limit exceeded. Slow your request rate to stay within your plan's requests per minute.

  • 503: the service is temporarily at capacity. Wait a moment and try again.

  • 500: a processing failure on our side. Retry the request, and contact support if it keeps happening.

If you see a subscription or balance error, check that your API plan is active and that you are sending the correct key. If you see a content-blocked error, reword the sensitive text and retry. If it still fails after these checks, reach out to support with the email linked to your account so we can look into it.

Output is still detected as AI

If your humanized output is still flagged by a detector, try the following:

  • Remember that third-party detectors change their algorithms often, so results can fluctuate over time.

  • Review our general AI score troubleshooting guidance for more ways to improve results, since the same tips that help in the dashboard also apply to API output.

The WriteHuman models are trained to work against major AI detectors in general rather than being tuned for any single one. If a specific piece of text keeps getting flagged, sending it back through again, or trying a different tone setting, is a good first step.

Where to go next

For plans and pricing, see writehuman.ai/api. For endpoint details, parameters, and code examples, see the full documentation at writehuman.ai/api/docs. You can also review the app at writehuman.ai and the FAQ.

Still need help?

If you are still stuck, email us at [email protected] or use the in-app chat. Please include the email linked to your account. Our team replies during business hours and is happy to help.

Did this answer your question?