One endpoint, plain HTTP, JSON in and out. Every API key draws from its owner's monthly plan quota — the Free plan alone includes 100 requests every month, great for testing or light non-commercial use. Upgrade for a higher limit.
Pass your key as a bearer token. If your HTTP client can't send custom headers, an X-API-Key header or an api_key form field both work too.
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxx
| Method | URL |
|---|---|
| POST | https://textperfector.com/api/v1/correct |
| Name | Type | Required | Description |
|---|---|---|---|
text | string | Yes | Text to correct, up to 50,000 characters. |
correction_level | string | No | conservative, standard (default) or reformulate. |
translate_option | bool | No | Set to 1 to also translate the corrected text. |
target_language | string | If translating | 2-letter language code, e.g. fr, es, de. |
curl -X POST https://textperfector.com/api/v1/correct \ -H "Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxx" \ -d text="I has went to the store yesterday." \ -d correction_level=standard
{
"success": true,
"corrected_text": "I went to the store yesterday.",
"language_code": "en",
"language_name": "English",
"translated_text": null,
"plan_requests_remaining": 99
}
| Status | error | Meaning |
|---|---|---|
| 401 | missing_api_key / invalid_api_key | No key provided, or the key is invalid/revoked. |
| 400 | missing_text / text_too_long | Request body is invalid. |
| 402 | insufficient_quota | Monthly plan quota used — upgrade your plan. |
| 500 | server_error | Something went wrong on our end — please retry. |
Requests made through the API are tied to your account (that's how quota and billing work), but your text itself is 100% confidential and never stored in the cloud, exactly like the website — never shared, sold, or used to train AI models. See our privacy policy for details.