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

ParameterTypeRequiredDescription
textstringYesThe text to add typos to (1 – 10,000 characters)
profilestringNosubtle, typing-fast, or angry-typing
devicestringNokeyboard, phone-tap, phone-swipe, or tablet
layoutstringNoqwerty, azerty, or qwertz
errorRatenumberNoPer-character error probability (0 – 1). Overrides profile default
errorCountintegerNoExact number of errors to introduce. Overrides errorRate
seedintegerNoSeed for deterministic output. Same input + seed = same result
preserveDigitsbooleanNoKeep digit tokens unchanged (default: true)
errorWeightsobjectNoPartial 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

StatusMeaning
400Invalid request body or unknown profile/device
401Missing, invalid, or revoked API key
405Wrong HTTP method

Request an API Key

Tell us about your use case and we'll send you an API key.

Please enter your name.
Please enter a valid email address.
Thank you! We'll reach out when your access is ready.
Something went wrong. Please try again.