Getting Started
Our API is designed to be simple and easy to use. Follow the instructions below to get started.
https://api.culturaltranslate.com/v1
All endpoints are versioned and return JSON. Use HTTPS.
Note: All API requests must be made over HTTPS. Requests over HTTP will fail.
Authentication
Authenticate your API requests using Bearer tokens. You can generate API keys from your dashboard.
curl -X POST https://api.culturaltranslate.com/v1/translate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Hello", "target_language": "ar"}'
await fetch('https://api.culturaltranslate.com/v1/translate', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ text: 'Hello', target_language: 'ar' })
});
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.culturaltranslate.com']);
$res = $client->post('/v1/translate', [
'headers' => [ 'Authorization' => 'Bearer YOUR_API_KEY' ],
'json' => [ 'text' => 'Hello', 'target_language' => 'ar' ]
]);
echo $res->getBody();
Translation API
Translate Text
Translate text from one language to another with cultural adaptation.
POST /v1/translate
Rate limit: 60 req/min
{
"text": "Hello, world!",
"source_language": "en",
"target_language": "ar",
"ai_model": "gpt-4",
"cultural_adaptation": true,
"preserve_brand_voice": true,
"formal_tone": false
}
Response
{
"success": true,
"data": {
"translated_text": "مرحباً بالعالم!",
"source_language": "en",
"target_language": "ar",
"characters_used": 13,
"quality_score": 0.95
}
}
Batch Translation
POST /v1/translate/batch
{
"texts": ["Hello", "Goodbye", "Thank you"],
"source_language": "en",
"target_language": "ar"
}
Voice Translation
Speech-to-Text
POST /v1/voice/speech-to-text
{
"audio_url": "https://example.com/audio.mp3",
"source_language": "en"
}
Text-to-Speech
POST /v1/voice/text-to-speech
{
"text": "Hello, world!",
"language": "en",
"voice": "male",
"cultural_tone": true
}
Visual Translation
Translate Image
POST /v1/visual/translate-image
{
"image_url": "https://example.com/image.jpg",
"target_language": "ar",
"preserve_layout": true
}
Translate Document
POST /v1/visual/translate-document
{
"document_url": "https://example.com/doc.pdf",
"target_language": "ar",
"format": "pdf"
}
Error Handling
Our API uses standard HTTP status codes to indicate the success or failure of a request.
Rate Limits: 60 requests/min per API key by default. 429 indicates throttling. Contact support to raise limits.
$signature = request()->header('X-Signature');
$secret = env('WEBHOOK_SECRET');
$expected = hash_hmac('sha256', request()->getContent(), $secret);
abort_unless(hash_equals($expected, $signature), 401);
All webhook payloads are signed with HMAC-SHA256. Reject mismatches.