type TranslationRequest struct {
SourceLanguage string `json:"sourceLanguage"`
TargetLanguage string `json:"targetLanguage"`
Text string `json:"text"`
type TranslationResponse struct {
Status string `json:"status"`
Timestamp string `json:"timestamp"`
Text string `json:"text"`
Language string `json:"language"`
Name string `json:"name"`
func NewClient(apiKey string) *Client {
BaseURL: "https://platform.algebras.ai/api/v1",
HTTPClient: &http.Client{},
func (c *Client) GetLanguages() ([]Language, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/translation/languages", c.BaseURL), nil)
req.Header.Set("X-Api-Key", c.APIKey)
resp, err := c.HTTPClient.Do(req)
Status string `json:"status"`
Timestamp string `json:"timestamp"`
Data []Language `json:"data"`
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
func (c *Client) TranslateText(text, targetLanguage, sourceLanguage string) (*TranslationResponse, error) {
reqBody := TranslationRequest{
SourceLanguage: sourceLanguage,
TargetLanguage: targetLanguage,
bodyBytes, err := json.Marshal(reqBody)
req, err := http.NewRequest("POST", fmt.Sprintf("%s/translation/translate", c.BaseURL), bytes.NewBuffer(bodyBytes))
req.Header.Set("X-Api-Key", c.APIKey)
req.Header.Set("Content-Type", "application/json")
resp, err := c.HTTPClient.Do(req)
var translationResp TranslationResponse
if err := json.NewDecoder(resp.Body).Decode(&translationResp); err != nil {
return &translationResp, nil
client := NewClient("your_api_key_here")
languages, err := client.GetLanguages()
fmt.Printf("Supported languages: %+v\n", languages)
translation, err := client.TranslateText("Hello, world!", "de", "auto")
fmt.Printf("Translation: %+v\n", translation)