Base URL
https://api.wiabraille.com

🔐 Authentication

All API endpoints (except /health) require API key authentication via Bearer token.

Authorization: Bearer YOUR_API_KEY

API Key Format

Environment Format
Production wia_live_sk_{64_char_hex}
Testing wia_test_sk_{64_char_hex}

📡 Endpoints

GET /health Health check (no auth required)

Check if the API is running.

Response

{
  "status": "healthy",
  "service": "WIA Braille API",
  "version": "1.0.0",
  "timestamp": "2025-12-10T12:00:00.000Z"
}
POST /api/v1/convert Convert text to braille

Convert any text to braille using the WIA Braille system.

Request Body

Field Type Required Description
text string Yes Text to convert (max 10,000 chars)
language string No ISO 639-1 code (default: "en")
format string No "unicode", "ascii", or "dots" (default: "unicode")

Response

{
  "success": true,
  "data": {
    "original": "Hello World",
    "braille": "⠓⠑⠇⠇⠕ ⠺⠕⠗⠇⠙",
    "ipa": "[həˈloʊ wɜːrld]",
    "language": "en",
    "format": "unicode"
  },
  "usage": {
    "requests_used": 1,
    "requests_remaining": 999,
    "tier": "free"
  }
}
GET /api/v1/languages Get supported languages

Get list of all 211 supported languages.

Response

{
  "success": true,
  "data": {
    "total": 211,
    "languages": [
      { "code": "en", "name": "English" },
      { "code": "ko", "name": "Korean" },
      ...
    ]
  }
}

Rate Limits

Rate limits are enforced per API key based on your subscription tier.

Free
1,000
requests/month
Startup
50,000
requests/month
Business
1,000,000
requests/month
Enterprise
Unlimited
requests/month

Rate Limit Headers

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1702224000
Retry-After: 3600

💻 Code Examples

curl -X POST https://api.wiabraille.com/api/v1/convert \
  -H "Authorization: Bearer wia_live_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello World",
    "language": "en"
  }'
const response = await fetch('https://api.wiabraille.com/api/v1/convert', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer wia_live_sk_...',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    text: 'Hello World',
    language: 'en'
  })
});

const data = await response.json();
console.log(data.data.braille); // ⠓⠑⠇⠇⠕ ⠺⠕⠗⠇⠙
import requests

response = requests.post(
    'https://api.wiabraille.com/api/v1/convert',
    headers={
        'Authorization': 'Bearer wia_live_sk_...',
        'Content-Type': 'application/json'
    },
    json={
        'text': 'Hello World',
        'language': 'en'
    }
)

result = response.json()
print(result['data']['braille'])  # ⠓⠑⠇⠇⠕ ⠺⠕⠗⠇⠙

⚠️ Error Codes

Code Description
400 Bad Request - Invalid parameters
401 Unauthorized - Missing API key
403 Forbidden - Invalid API key
429 Too Many Requests - Rate limit exceeded
500 Internal Server Error

Error Response Format

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Please upgrade your plan."
  }
}

📦 SDKs & Resources

Official SDKs and resources to help you get started.