# Reference

## Public Endpoints

## Status

<mark style="color:blue;">`GET`</mark> `https://api.weglot.com/public/status`

This endpoint is used as a health check. You can use it to check if the Weglot API is up and running.

{% tabs %}
{% tab title="200 " %}

```javascript
[]
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
No content is returned by this endpoint, you will only get a 200 status code if the service is up and running.
{% endhint %}

{% hint style="danger" %}
This is only a health check endpoint, don't spam it.
{% endhint %}

## List languages

<mark style="color:blue;">`GET`</mark> `https://api.weglot.com/public/languages`

This endpoint returns all availaible languages.

#### Headers

| Name         | Type   | Description      |
| ------------ | ------ | ---------------- |
| Content-Type | string | application/json |

{% tabs %}
{% tab title="200 " %}

```javascript
[
    {
        "code": "af",
        "local_name": "Afrikaans",
        "english_name": "Afrikaans"
    },
    {
        "code": "ar",
        "local_name": "العربية\u200f",
        "english_name": "Arabic"
    },
    {
        "code": "az",
        "local_name": "Azərbaycan dili",
        "english_name": "Azerbaijani"
    },
    {
        "code": "be",
        "local_name": "Беларуская",
        "english_name": "Belarusian"
    },
    {
        "code": "bg",
        "local_name": "български",
        "english_name": "Bulgarian"
    },
    ...
]    
```

{% endtab %}
{% endtabs %}

## Is language pair supported

<mark style="color:blue;">`GET`</mark> `https://api.weglot.com/public/languages/is-supported`

#### Query Parameters

| Name         | Type   | Description                           |
| ------------ | ------ | ------------------------------------- |
| languageTo   | string | The language you wish to translate to |
| languageFrom | string | The original language                 |

#### Headers

| Name         | Type   | Description      |
| ------------ | ------ | ---------------- |
| Content-Type | string | application/json |

{% tabs %}
{% tab title="200 " %}

```javascript
{
    "is_supported": true
}
```

{% endtab %}
{% endtabs %}

## Authenticated Endpoints <a href="#endpoints" id="endpoints"></a>

Weglot requires an API key to allow access to its endpoints. You can register and get a Weglot API Key at: [Register](https://dashboard.weglot.com/register).

The API key is to be included in all API requests to the server in the URL as the value of the `api_key` parameter, as follows:

`https://api.weglot.com/endpoint?api_key=my_api_key`

{% hint style="info" %}
Make sure to replace `my_api_key` with your Weglot API key.
{% endhint %}

## Translate

<mark style="color:green;">`POST`</mark> `https://api.weglot.com/translate?api_key=my_api_key`

This endpoint retrieves all translations. It takes an array of sentences in an original language in input and outputs the same array of sentences but translated in another language.\
The body is sent in the JSON format

#### Query Parameters

| Name     | Type   | Description         |
| -------- | ------ | ------------------- |
| api\_key | string | Your Weglot API Key |

#### Headers

| Name         | Type   | Description      |
| ------------ | ------ | ---------------- |
| Content-Type | string | application/json |

#### Request Body

| Name         | Type    | Description                                       |
| ------------ | ------- | ------------------------------------------------- |
| l\_from      | string  | ISO 639-1 code of the original language           |
| l\_to        | string  | ISO 639-1 code of the destination language        |
| words        | array   | Sentences in original language                    |
| words\[t]    | integer | Type of the word based on WordType resource       |
| words\[w]    | string  | Sentence to translate                             |
| bot          | integer | Link to user agent based on BotType resource      |
| request\_url | string  | URL where the request come from                   |
| title        | string  | Title of the page where these sentences come from |

{% tabs %}
{% tab title="200 Usual return with two basic sentences:" %}

```javascript
{  
   "l_from":"en",
   "l_to":"fr",
   "title":"My awesome page",
   "request_url":"https:\/\/www.website.com\/",
   "bot":0,
   "from_words":[  
      "This is a blue car",
      "This is a black car"
   ],
   "to_words":[  
      "C'est une voiture bleue",
      "C'est une voiture noire"
   ]
}
```

{% endtab %}
{% endtabs %}

You can find [WordType](#wordtype) and [BotType](#bottype) resources at the end of this document.

Here is a simple request example:

{% tabs %}
{% tab title="HTTP" %}

```http
POST /translate?api_key=my_api_key HTTP/1.1
Host: api.weglot.com
Content-Type: application/json

{  
   "l_from":"en",
   "l_to":"fr",
   "request_url":"https://www.website.com/",
   "words":[  
      {"w":"This is a blue car", "t": 1},
      {"w":"This is a black car", "t": 1}
   ]
}
```

{% endtab %}

{% tab title="cURL" %}

```bash
curl -X POST \
  'https://api.weglot.com/translate?api_key=my_api_key' \
  -H 'Content-Type: application/json' \
  -d '{  
   "l_from":"en",
   "l_to":"fr",
   "request_url":"https://www.website.com/",
   "words":[  
      {"w":"This is a blue car", "t": 1},
      {"w":"This is a black car", "t": 1}
   ]
}'
```

{% endtab %}
{% endtabs %}

## Resources <a href="#resources" id="resources"></a>

### BotType

Used to define the source of a request.

| **Short-Name** | **Value** | **Description**          |
| -------------- | --------- | ------------------------ |
| HUMAN          | 0         | Sent from human action   |
| OTHER          | 1         | Sent from unknown source |
| GOOGLE         | 2         | Sent from Google Bot     |
| BING           | 3         | Sent from Bing Bot       |
| YAHOO          | 4         | Sent from Yahoo Bot      |
| BAIDU          | 5         | Sent from Baidu Bot      |
| YANDEX         | 6         | Sent from Yandex Bot     |

### WordType <a href="#wordtype" id="wordtype"></a>

Used to provide context over where the text we wish to translate comes from. Any general text node is of WordType **1**. We use the WordType to classify translations on the admin dashboard.

| **Short name** | **Value** | **Description**                                    |
| -------------- | --------- | -------------------------------------------------- |
| OTHER          | 0         | None of the elements below (deprecated)            |
| TEXT           | 1         | General text (used most of the time)               |
| VALUE          | 2         | The value of an input tag's`value`attribute        |
| PLACEHOLDER    | 3         | The value of an input tag's `placeholder`attribute |
| META\_CONTENT  | 4         | The value of a `meta` tags' `content` attribute    |
| IFRAME\_SRC    | 5         | The `src` link to a page used in an `iframe`       |
| IMG\_SRC       | 6         | The `src`value of an `img`tag                      |
| IMG\_ALT       | 7         | The `alt` value of an `img`tag                     |
| PDF\_HREF      | 8         | A URL pointing to a PDF document                   |
| PAGE\_TITLE    | 9         | Text from title tag                                |
| EXTERNAL\_LINK | 10        | External links when dashboard option is enabled    |
