Typos as a Service
Add realistic, physics-based typing errors to any text with a simple REST API. Integrate human-like imperfection into your content pipeline, testing suite, or creative tools.
Simple REST Interface
Send text in, get realistic typos back. JSON in, JSON out. Two endpoints, zero complexity.
Device-Aware Errors
Keyboard, phone tap, phone swipe, or tablet — each device produces distinct error patterns based on real touch physics.
Deterministic Seeds
Pass a seed for reproducible results. Same input + same seed = same output, every time. Ideal for testing pipelines.
Full Control
Profile, device, layout, error rate, seed, and individual error weights. Every parameter from the generator, available via API.
Fast & Lightweight
Lightweight processing with minimal overhead. No heavy dependencies, no bloated payloads. Built for production use.
No Data Retention
Your text is processed and returned. Nothing is stored, logged, or used for training. Stateless by design.
API Reference
Authentication
All API requests require a Bearer token in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Generate Typos
POST https://api.likelytypo.com/api/generate
Send text and get back realistic typing errors.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | The text to add typos to (1 – 10,000 characters) |
profile | string | No | subtle, typing-fast, or angry-typing |
device | string | No | keyboard, phone-tap, phone-swipe, or tablet |
layout | string | No | qwerty, azerty, or qwertz |
errorRate | number | No | Per-character error probability (0 – 1). Overrides profile default |
errorCount | integer | No | Exact number of errors to introduce. Overrides errorRate |
seed | integer | No | Seed for deterministic output. Same input + seed = same result |
preserveDigits | boolean | No | Keep digit tokens unchanged (default: true) |
errorWeights | object | No | Partial override of error type weights (see below) |
Example Request
curl -X POST https://api.likelytypo.com/api/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "The quick brown fox jumps over the lazy dog",
"profile": "typing-fast",
"device": "phone-tap",
"layout": "qwerty",
"seed": 42
}'
Example Response
{
"original": "The quick brown fox jumps over the lazy dog",
"modified": "The quikc brown fox jumsp over teh lazy dog",
"errors": [
{
"original": "quick",
"modified": "quikc",
"errorType": "adjacentKey",
"position": 4,
"category": "character"
}
],
"deterministic": true,
"errorCount": 3
}
List Options
GET https://api.likelytypo.com/api/options
Returns available devices, profiles, layouts, and error weight keys.
Example Response
{
"devices": ["keyboard", "phone-tap", "phone-swipe", "tablet"],
"profiles": ["subtle", "typing-fast", "angry-typing"],
"layouts": ["qwerty", "azerty", "qwertz"],
"errorWeightKeys": [
"adjacentKey", "handConfusion", "doubledKey", "skippedKey",
"diacritics", "capitalization", "fingerStretch",
"repeatedWord", "wordOmission", "partialDuplication",
"multipleSpaces", "missingSpace", "irregularSpacing",
"missingPunctuation", "wrongPunctuation", "doubledPunctuation"
]
}
Error Responses
| Status | Meaning |
|---|---|
400 | Invalid request body or unknown profile/device |
401 | Missing, invalid, or revoked API key |
405 | Wrong HTTP method |
Request an API Key
Tell us about your use case and we'll send you an API key.