Detect languages for up to 100 texts
Detects the language of up to 100 texts in one call.
Request
POSThttps://language-detection.p.apihiver.com/v1/detect/batch
JSON object. Required: texts.
Request Body
Edit the values below to test different scenarios.
Parameters and body structure are inherited from this endpoint's definition. Changes here only apply to this test run.
Language
Client
1curl --request POST \
2 --url https://language-detection.p.apihiver.com/v1/detect/batch \
3 --header 'Accept: application/json' \
4 --header 'Content-Type: application/json' \
5 --header 'X-API-Key: YOUR_API_KEY' \
6 --data '{
7 "texts": [
8 "Hello world",
9 "Hola amigo"
10 ]
11}'Detect languages for up to 100 texts: Language Detection & Transliteration API reference
Detects the language of up to 100 texts in one call. This endpoint is part of the Language Detection & Transliteration API: Detect the language of any text (55 languages), transliterate Indian scripts (नमस्ते → namaste) and identify writing scripts.
Detect languages for up to 100 texts: example requests in every language
POST /v1/detect/batch in Shell (cURL)
curl --request POST \
--url https://language-detection.p.apihiver.com/v1/detect/batch \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"texts": [
"Hello world",
"Hola amigo"
]
}'POST /v1/detect/batch in Shell (HTTPie)
echo '{
"texts": [
"Hello world",
"Hola amigo"
]
}' | \
http POST https://language-detection.p.apihiver.com/v1/detect/batch \
Accept:application/json \
Content-Type:application/json \
X-API-Key:YOUR_API_KEYPOST /v1/detect/batch in Shell (Wget)
wget --quiet \
--method POST \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--body-data '{\n "texts": [\n "Hello world",\n "Hola amigo"\n ]\n}' \
--output-document \
- https://language-detection.p.apihiver.com/v1/detect/batchPOST /v1/detect/batch in Node.js (http)
const http = require('https');
const options = {
method: 'POST',
hostname: 'language-detection.p.apihiver.com',
port: null,
path: '/v1/detect/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({texts: ['Hello world', 'Hola amigo']}));
req.end();POST /v1/detect/batch in Node.js (Request)
const request = require('request');
const options = {
method: 'POST',
url: 'https://language-detection.p.apihiver.com/v1/detect/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: {texts: ['Hello world', 'Hola amigo']},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});POST /v1/detect/batch in Node.js (Unirest)
const unirest = require('unirest');
const req = unirest('POST', 'https://language-detection.p.apihiver.com/v1/detect/batch');
req.headers({
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
});
req.type('json');
req.send({
texts: [
'Hello world',
'Hola amigo'
]
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});POST /v1/detect/batch in Node.js (Axios)
const axios = require('axios').default;
const options = {
method: 'POST',
url: 'https://language-detection.p.apihiver.com/v1/detect/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {texts: ['Hello world', 'Hola amigo']}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/detect/batch in Node.js (Fetch)
const fetch = require('node-fetch');
const url = 'https://language-detection.p.apihiver.com/v1/detect/batch';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"texts":["Hello world","Hola amigo"]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/detect/batch in JavaScript (XMLHttpRequest)
const data = JSON.stringify({
texts: [
'Hello world',
'Hola amigo'
]
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('POST', 'https://language-detection.p.apihiver.com/v1/detect/batch');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-API-Key', 'YOUR_API_KEY');
xhr.send(data);POST /v1/detect/batch in JavaScript (Axios)
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://language-detection.p.apihiver.com/v1/detect/batch',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {texts: ['Hello world', 'Hola amigo']}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/detect/batch in JavaScript (Fetch)
const url = 'https://language-detection.p.apihiver.com/v1/detect/batch';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"texts":["Hello world","Hola amigo"]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/detect/batch in JavaScript (jQuery)
const settings = {
async: true,
crossDomain: true,
url: 'https://language-detection.p.apihiver.com/v1/detect/batch',
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
processData: false,
data: '{\n "texts": [\n "Hello world",\n "Hola amigo"\n ]\n}'
};
$.ajax(settings).done(function (response) {
console.log(response);
});POST /v1/detect/batch in Python (http.client)
import http.client
conn = http.client.HTTPSConnection("language-detection.p.apihiver.com")
payload = "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}"
headers = {
'Content-Type': "application/json",
'Accept': "application/json",
'X-API-Key': "YOUR_API_KEY"
}
conn.request("POST", "/v1/detect/batch", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))POST /v1/detect/batch in Python (Requests)
import requests
url = "https://language-detection.p.apihiver.com/v1/detect/batch"
payload = { "texts": ["Hello world", "Hola amigo"] }
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())POST /v1/detect/batch in PHP (cURL)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://language-detection.p.apihiver.com/v1/detect/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'texts' => [
'Hello world',
'Hola amigo'
]
]),
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: YOUR_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}POST /v1/detect/batch in PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://language-detection.p.apihiver.com/v1/detect/batch', [
'body' => '{
"texts": [
"Hello world",
"Hola amigo"
]
}',
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
],
]);
echo $response->getBody();POST /v1/detect/batch in PHP (PECL HTTP v1)
<?php
$request = new HttpRequest();
$request->setUrl('https://language-detection.p.apihiver.com/v1/detect/batch');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$request->setContentType('application/json');
$request->setBody(json_encode([
'texts' => [
'Hello world',
'Hola amigo'
]
]));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}POST /v1/detect/batch in PHP (PECL HTTP v2)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append(json_encode([
'texts' => [
'Hello world',
'Hola amigo'
]
]));
$request->setRequestUrl('https://language-detection.p.apihiver.com/v1/detect/batch');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();POST /v1/detect/batch in Java (AsyncHttp)
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("POST", "https://language-detection.p.apihiver.com/v1/detect/batch")
.setHeader("Content-Type", "application/json")
.setHeader("Accept", "application/json")
.setHeader("X-API-Key", "YOUR_API_KEY")
.setBody("{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();POST /v1/detect/batch in Java (java.net.http)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://language-detection.p.apihiver.com/v1/detect/batch"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());POST /v1/detect/batch in Java (OkHttp)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}");
Request request = new Request.Builder()
.url("https://language-detection.p.apihiver.com/v1/detect/batch")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();POST /v1/detect/batch in Java (Unirest)
HttpResponse<String> response = Unirest.post("https://language-detection.p.apihiver.com/v1/detect/batch")
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.body("{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}")
.asString();POST /v1/detect/batch in C# (HttpClient)
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://language-detection.p.apihiver.com/v1/detect/batch"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "YOUR_API_KEY" },
},
Content = new StringContent("{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}POST /v1/detect/batch in C# (RestSharp)
var client = new RestClient("https://language-detection.p.apihiver.com/v1/detect/batch");
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("X-API-Key", "YOUR_API_KEY");
request.AddParameter("application/json", "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}", ParameterType.RequestBody);
var response = client.Execute(request);POST /v1/detect/batch in Go (NewRequest)
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://language-detection.p.apihiver.com/v1/detect/batch"
payload := strings.NewReader("{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}POST /v1/detect/batch in Ruby (net::http)
require 'uri'
require 'net/http'
url = URI("https://language-detection.p.apihiver.com/v1/detect/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'YOUR_API_KEY'
request.body = "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}"
response = http.request(request)
puts response.read_bodyPOST /v1/detect/batch in Swift (NSURLSession)
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
]
let parameters = ["texts": ["Hello world", "Hola amigo"]] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://language-detection.p.apihiver.com/v1/detect/batch")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()POST /v1/detect/batch in Objective-C (NSURLSession)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"Content-Type": @"application/json",
@"Accept": @"application/json",
@"X-API-Key": @"YOUR_API_KEY" };
NSDictionary *parameters = @{ @"texts": @[ @"Hello world", @"Hola amigo" ] };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://language-detection.p.apihiver.com/v1/detect/batch"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];POST /v1/detect/batch in Kotlin (OkHttp)
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}")
val request = Request.Builder()
.url("https://language-detection.p.apihiver.com/v1/detect/batch")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()POST /v1/detect/batch in C (libcurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://language-detection.p.apihiver.com/v1/detect/batch");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "X-API-Key: YOUR_API_KEY");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);POST /v1/detect/batch in Clojure (clj-http)
(require '[clj-http.client :as client])
(client/post "https://language-detection.p.apihiver.com/v1/detect/batch" {:headers {:X-API-Key "YOUR_API_KEY"}
:content-type :json
:form-params {:texts ["Hello world" "Hola amigo"]}
:accept :json})POST /v1/detect/batch in OCaml (CoHTTP)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://language-detection.p.apihiver.com/v1/detect/batch" in
let headers = Header.add_list (Header.init ()) [
("Content-Type", "application/json");
("Accept", "application/json");
("X-API-Key", "YOUR_API_KEY");
] in
let body = Cohttp_lwt_body.of_string "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)POST /v1/detect/batch in R (httr)
library(httr)
url <- "https://language-detection.p.apihiver.com/v1/detect/batch"
payload <- "{\n \"texts\": [\n \"Hello world\",\n \"Hola amigo\"\n ]\n}"
encode <- "json"
response <- VERB("POST", url, body = payload, add_headers('X-API-Key' = 'YOUR_API_KEY'), content_type("application/json"), accept("application/json"), encode = encode)
content(response, "text")POST /v1/detect/batch in PowerShell (Invoke-WebRequest)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-WebRequest -Uri 'https://language-detection.p.apihiver.com/v1/detect/batch' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"texts": [
"Hello world",
"Hola amigo"
]
}'POST /v1/detect/batch in PowerShell (Invoke-RestMethod)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-RestMethod -Uri 'https://language-detection.p.apihiver.com/v1/detect/batch' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"texts": [
"Hello world",
"Hola amigo"
]
}'POST /v1/detect/batch in HTTP (HTTP/1.1)
POST /v1/detect/batch HTTP/1.1
Content-Type: application/json
Accept: application/json
X-Api-Key: YOUR_API_KEY
Host: language-detection.p.apihiver.com
Content-Length: 56
{
"texts": [
"Hello world",
"Hola amigo"
]
}Example response (200, application/json)
Success.
1{
2 "results": [
3 {
4 "text": "Hello world",
5 "language": "en",
6 "reliable": false,
7 "candidates": [
8 {
9 "language": "en",
10 "confidence": 0.5714,
11 "language_name": "English"
12 },
13 {
14 "language": "nl",
15 "confidence": 0.4286,
16 "language_name": "Dutch"
17 }
18 ],
19 "confidence": 0.5714,
20 "language_name": "English"
21 },
22 {
23 "text": "Hola amigo",
24 "language": "so",
25 "reliable": false,
26 "candidates": [
27 {
28 "language": "so",
29 "confidence": 1,
30 "language_name": "Somali"
31 }
32 ],
33 "confidence": 1,
34 "language_name": "Somali"
35 }
36 ]
37}Errors
- 400 — A required parameter is missing or a value has the wrong format.
1{ 2 "error": { 3 "code": "INVALID_INPUT", 4 "message": "texts: Field required" 5 } 6}
Gateway errors (missing key, no subscription, rate limits) are listed in Error codes.
Other Language Detection & Transliteration API endpoints
- POSTDetect the language of a text
- GETSupported languages
- POSTTransliterate between Indian scripts and Latin (e.g. नमस्ते → namaste)
- POSTWhich writing systems (scripts) a text uses, with proportions
Language Detection & Transliteration API pricing →·Language Detection & Transliteration API overview →