| # 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 | |
| ``` | |