Skip to content

API Usage

The examples below use Javascript, but you can use any programming language. Language bindings for many programming languages are also available.

Request:

const res = await fetch("https://libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: "Hello!",
source: "en",
target: "es",
api_key: "xxxxxx" // can be optional with self-hosting
}),
headers: { "Content-Type": "application/json" },
});
console.log(await res.json());

Response:

{
"translatedText": "¡Hola!"
}

Request:

const res = await fetch("https://libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: "Bonjour!",
source: "auto",
target: "en",
api_key: "xxxxxx"
}),
headers: { "Content-Type": "application/json" },
});
console.log(await res.json());

Response:

{
"detectedLanguage": {
"confidence": 90.0,
"language": "fr"
},
"translatedText": "Hello!"
}

Request:

const res = await fetch("https://libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: '<p class="green">Hello!</p>',
source: "en",
target: "es",
format: "html",
api_key: "xxxxxx"
}),
headers: { "Content-Type": "application/json" },
});
console.log(await res.json());

Response:

{
"translatedText": "<p class=\"green\">¡Hola!</p>"
}

Request:

const res = await fetch("https://libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: "Hello",
source: "en",
target: "it",
format: "text",
alternatives: 3,
api_key: "xxxxxx"
}),
headers: { "Content-Type": "application/json" },
});
console.log(await res.json());

Response:

{
"alternatives": [
"Salve",
"Pronto"
],
"translatedText": "Ciao"
}

Request:

const res = await fetch("https://libretranslate.com/detect", {
method: "POST",
body: JSON.stringify({
q: "Bonjour!",
}),
headers: { "Content-Type": "application/json" },
});
console.log(await res.json());

Response:

[{
"confidence": 90.0,
"language": "fr"
}]

https://libretranslate.com/languages

You can use the LibreTranslate API using the following bindings: