# Sema Translation API - Curl Commands ## 🌐 Base URL ```bash # Production API_URL="https://sematech-sema-api.hf.space" # Local development # API_URL="http://localhost:8000" ``` ## 🏥 Health Check Endpoints ### Basic Health Check ```bash curl -X GET "$API_URL/status" ``` ### Detailed Health Check ```bash curl -X GET "$API_URL/health" ``` ### Metrics (if enabled) ```bash curl -X GET "$API_URL/metrics" ``` ## 🌍 Translation Endpoints ### Basic Translation (Auto-detect source language) ```bash curl -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{ "text": "Habari ya asubuhi", "target_language": "eng_Latn" }' ``` ### Translation with Specified Source Language ```bash curl -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{ "text": "Good morning", "source_language": "eng_Latn", "target_language": "swh_Latn" }' ``` ### Translation with Versioned Endpoint ```bash curl -X POST "$API_URL/api/v1/translate" \ -H "Content-Type: application/json" \ -d '{ "text": "Wĩ mwega?", "source_language": "kik_Latn", "target_language": "eng_Latn" }' ``` ## � Language Detection Endpoints ### Detect Language of Text ```bash curl -X POST "$API_URL/detect-language" \ -H "Content-Type: application/json" \ -d '{ "text": "Habari ya asubuhi" }' ``` ### Detect Language (English Text) ```bash curl -X POST "$API_URL/detect-language" \ -H "Content-Type: application/json" \ -d '{ "text": "Good morning, how are you today?" }' ``` ### Detect Language (French Text) ```bash curl -X POST "$API_URL/detect-language" \ -H "Content-Type: application/json" \ -d '{ "text": "Bonjour, comment allez-vous?" }' ``` ### Detect Language (Versioned Endpoint) ```bash curl -X POST "$API_URL/api/v1/detect-language" \ -H "Content-Type: application/json" \ -d '{ "text": "Hola, ¿cómo estás?" }' ``` ## �🗣️ Language Information Endpoints ### Get All Supported Languages ```bash curl -X GET "$API_URL/languages" ``` ### Get Popular Languages ```bash curl -X GET "$API_URL/languages/popular" ``` ### Get African Languages ```bash curl -X GET "$API_URL/languages/african" ``` ### Get Languages by Region ```bash # European languages curl -X GET "$API_URL/languages/region/Europe" # Asian languages curl -X GET "$API_URL/languages/region/Asia" # African languages curl -X GET "$API_URL/languages/region/Africa" ``` ### Search Languages ```bash # Search for Swahili curl -X GET "$API_URL/languages/search?q=Swahili" # Search for Chinese curl -X GET "$API_URL/languages/search?q=Chinese" # Search by language code curl -X GET "$API_URL/languages/search?q=eng" ``` ### Get Language Statistics ```bash curl -X GET "$API_URL/languages/stats" ``` ### Get Specific Language Information ```bash # Swahili curl -X GET "$API_URL/languages/swh_Latn" # English curl -X GET "$API_URL/languages/eng_Latn" # Chinese (Simplified) curl -X GET "$API_URL/languages/cmn_Hans" ``` ## 📚 Documentation Endpoints ### Swagger UI (Open in browser) ```bash open "$API_URL/" # or curl -X GET "$API_URL/" ``` ### ReDoc Documentation (Open in browser) ```bash open "$API_URL/redoc" # or curl -X GET "$API_URL/redoc" ``` ### OpenAPI JSON Schema ```bash curl -X GET "$API_URL/openapi.json" ``` ## 🧪 Test Scenarios ### Complete Translation Workflow ```bash # 1. Check API health echo "1. Health Check:" curl -s "$API_URL/status" | jq '.status' # 2. Get popular languages echo "2. Popular Languages:" curl -s "$API_URL/languages/popular" | jq '.total_count' # 3. Validate language code echo "3. Validate Swahili:" curl -s "$API_URL/languages/swh_Latn" | jq '.name' # 4. Perform translation echo "4. Translation:" curl -s -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "Habari ya asubuhi", "target_language": "eng_Latn"}' \ | jq '.translated_text' ``` ### Error Testing ```bash # Test invalid language code curl -X GET "$API_URL/languages/invalid_code" # Test empty translation text curl -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "", "target_language": "eng_Latn"}' # Test invalid search query curl -X GET "$API_URL/languages/search?q=x" ``` ## 🔧 Advanced Usage ### Pretty Print JSON Response ```bash curl -s "$API_URL/languages/popular" | jq '.' ``` ### Save Response to File ```bash curl -s "$API_URL/languages" > all_languages.json ``` ### Check Response Headers (Including Timing) ```bash curl -I "$API_URL/health" ``` ### View Response Headers with Translation ```bash curl -v -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "Hello", "target_language": "swh_Latn"}' ``` ### Extract Timing Headers Only ```bash curl -s -D - -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "Hello", "target_language": "swh_Latn"}' \ | grep -E "X-Response-Time|X-Request-ID" ``` ### Measure Response Time ```bash curl -w "@curl-format.txt" -s -o /dev/null "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "Hello", "target_language": "swh_Latn"}' ``` ### Multiple Translations (Batch Testing) ```bash # Test multiple translations for text in "Hello" "Good morning" "Thank you" "Goodbye"; do echo "Translating: $text" curl -s -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d "{\"text\": \"$text\", \"target_language\": \"swh_Latn\"}" \ | jq -r '.translated_text' echo "---" done ``` ## 📊 Performance Testing ### Simple Load Test ```bash # Run 10 concurrent requests for i in {1..10}; do curl -s -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "Hello world", "target_language": "swh_Latn"}' & done wait ``` ### Rate Limit Testing ```bash # Test rate limiting (should hit 60 req/min limit) for i in {1..65}; do echo "Request $i:" curl -s -X POST "$API_URL/translate" \ -H "Content-Type: application/json" \ -d '{"text": "Test", "target_language": "swh_Latn"}' \ | jq -r '.translated_text // .detail' sleep 0.5 done ``` ## 💡 Tips ### Create curl-format.txt for timing ```bash cat > curl-format.txt << 'EOF' time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n ----------\n time_total: %{time_total}\n EOF ``` ### Set API URL as environment variable ```bash export API_URL="https://sematech-sema-api.hf.space" # Now you can use $API_URL in all commands ```