Everything you need to integrate TAO's translation API
Generate an API key from your dashboard
Dashboard → Settings → API Keys → Generate New Key
Send a translation request with your API key
POST /api/v1/translate
Authorization: Bearer YOUR_API_KEY
curl -X POST https://api.tao-translate.com/api/v1/translate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_language": "en",
"target_language": "es",
"text": "Welcome to our new product launch!"
}'
TAO uses Bearer token authentication. Include your API key in the Authorization header of every request.
Authorization: Bearer YOUR_API_KEY
Method | Use Case | Example |
---|---|---|
API Key | Server-to-server integration | Bearer sk_live_... |
JWT Token | Web application sessions | Bearer eyJhbGc... |
Never expose your API key in client-side code or public repositories. Use environment variables to store sensitive credentials.
TAO supports 113 languages with auto-detection capability. Language availability depends on your subscription tier.
Tier | Languages | Characters/Month | AI Refinement |
---|---|---|---|
Discovery | 6 core languages (en, es, fr, de, it, pt) | 5,000 | None |
Professional | All 113 languages | 1,000,000 | Smart AI refinement |
Enterprise | All 113 languages | 8,000,000 | Premium AI refinement |
Set source_language: "auto"
to automatically detect the source language. The API will identify the language and proceed with translation.
{
"source_language": "auto",
"target_language": "es",
"text": "This will be automatically detected as English"
}
Free tier users attempting to translate non-supported languages will receive a 403 error with upgrade instructions.
/api/v1/translate
Translate a single text with optional glossary and control vocabulary.
{
"source_language": "en", // Required: ISO 639-1 code or "auto"
"target_language": "es", // Required: ISO 639-1 code
"text": "Your text to translate", // Required: 1-50,000 characters
"mode": "technical", // Optional: domain-specific mode
"strategy": "meta_optional", // Optional: processing strategy
"cv_version_ids": ["glcv_set_123"], // Optional: glossary/control vocab IDs
"policies": { // Optional: processing policies
"min_gain": 0.25,
"edit_budget": {
"max_edits": 10,
"max_chars_pct": 12
}
}
}
{
"request_id": "req_abc123",
"translated_text": "Tu texto traducido",
"quality_tier": "premium",
"premium_processing": false,
"glossary_hits": 3,
"dnt_hits": 1,
"processing_time_ms": 1247,
"characters_processed": 28,
"timestamp": "2025-09-01T10:30:00Z"
}
/api/v1/translate/batch
Translate multiple texts in a single request. Maximum 32 texts per batch for Professional/Enterprise tiers.
{
"source_language": "en",
"target_language": "es",
"texts": [
"First text to translate",
"Second text to translate",
"Third text to translate"
],
"mode": "technical",
"cv_version_ids": ["glcv_set_123"]
}
{
"batch_id": "batch_xyz789",
"translations": [
{
"index": 0,
"translated_text": "Primer texto traducido",
"success": true
},
{
"index": 1,
"translated_text": "Segundo texto traducido",
"success": true
},
{
"index": 2,
"translated_text": "Tercer texto traducido",
"success": true
}
],
"total_items": 3,
"successful": 3,
"failed": 0,
"processing_time_ms": 2341
}
/api/v1/glcv/sets
List all your GLCV sets
/api/v1/glcv/sets
Create a new GLCV set
/api/v1/glcv/sets/{set_id}
Get a specific GLCV set
/api/v1/glcv/sets/{set_id}
Update a GLCV set
/api/v1/glcv/sets/{set_id}/terms
Add a term to a GLCV set
/api/v1/glcv/terms/{term_id}
Delete a term from a GLCV set
/api/v1/glcv/sets/{set_id}/bulk-upload
Bulk upload terms from CSV or JSON file
/api/v1/glcv/sets/{set_id}/export?format=json
Export GLCV set as JSON or CSV
POST /api/v1/glcv/sets/set_123/terms
{
"term": "Azure DevOps",
"target_language": "es",
"target_text": "Azure DevOps",
"is_dnt": true,
"term_priority": 100,
"notes": "Product name - do not translate"
}
POST /api/v1/glcv/sets/set_123/bulk-upload
Content-Type: multipart/form-data
CSV Format:
term,target_language,target_text,is_dnt,term_priority,notes
Azure DevOps,es,Azure DevOps,true,100,Product name
Kubernetes,es,Kubernetes,true,100,Technology name
dashboard,es,panel de control,false,50,UI term
GET /api/v1/glcv/sets/set_123/export?format=csv
Response: CSV file download
term,target_language,target_text,is_dnt,term_priority,notes
Azure DevOps,es,Azure DevOps,true,100,Product name
Kubernetes,es,Kubernetes,true,100,Technology name
dashboard,es,panel de control,false,50,UI term
/api/v1/usage/current
Get current usage statistics
/api/v1/usage/limits
Get your rate limits
/api/v1/history
Get translation history
Rate limits are applied per API key and vary by subscription tier.
Tier | Requests/Min | Requests/Hour | Requests/Day | Concurrent |
---|---|---|---|---|
Discovery | 10 | 100 | 500 | 1 |
Professional | 60 | 1,000 | 10,000 | 3 |
Enterprise | 300 | 10,000 | 100,000 | 10 |
Every response includes rate limit information in headers:
X-RateLimit-Limit
- Your rate limitX-RateLimit-Remaining
- Requests remainingX-RateLimit-Reset
- When the limit resets (Unix timestamp)TAO uses standard HTTP status codes and returns detailed error messages in JSON format.
{
"error": "rate_limit_exceeded",
"message": "You have exceeded your rate limit of 60 requests per minute",
"details": {
"limit": 60,
"remaining": 0,
"reset_at": "2025-09-01T10:31:00Z"
}
}
Status | Error Code | Description |
---|---|---|
400 |
invalid_request | Invalid request parameters |
401 |
unauthorized | Invalid or missing API key |
402 |
quota_exceeded | Monthly word quota exceeded |
403 |
forbidden | Access denied to resource |
429 |
rate_limit_exceeded | Too many requests |
500 |
internal_server_error | Server error, please retry |
import requests
import json
# Your API configuration
API_KEY = "YOUR_API_KEY"
API_URL = "https://api.tao-translate.com/api/v1/translate"
def translate_text(text, source_lang="en", target_lang="es"):
"""Translate text using TAO API"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"source_language": source_lang,
"target_language": target_lang,
"text": text,
"strategy": "meta_optional"
}
response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code == 200:
return response.json()["translated_text"]
else:
print(f"Error: {response.status_code}")
print(response.json())
return None
# Example usage
result = translate_text(
"Welcome to our new product launch!",
source_lang="en",
target_lang="es"
)
print(result) # "¡Bienvenido a nuestro nuevo lanzamiento de producto!"
Official and community SDKs make it easy to integrate TAO into your applications.
pip install tao-translate
npm install @tao-translate/sdk
composer require tao-translate/sdk
gem install tao_translate
go get github.com/tao-translate/go-sdk
Check out our GitHub repositories for examples and documentation. Join our developer community for support and discussions.
Enterprise customers can configure webhooks to receive real-time notifications about translation events.
translation.completed
- Translation request completed successfullytranslation.failed
- Translation request failedbatch.completed
- Batch translation completedquota.warning
- 80% of monthly quota consumedquota.exceeded
- Monthly quota exceeded{
"event": "translation.completed",
"timestamp": "2025-09-01T10:30:00Z",
"data": {
"request_id": "req_abc123",
"source_language": "en",
"target_language": "es",
"character_count": 150,
"processing_time_ms": 1247,
"quality_tier": "premium"
}
}