# Products

### Details

<mark style="color:blue;">`GET`</mark> `https://api.earnbit.com/api/v1/public/products`

<details>

<summary>CURL Example</summary>

```javascript
curl -X GET "https://api.earnbit.com/api/v1/public/products" -H "accept: application/json"
```

</details>

{% tabs %}
{% tab title="200: OK Successful" %}
**Response parameters:**

|    Name    |  Type  | Description            |
| :--------: | :----: | ---------------------- |
|     id     | STRING | Pair name              |
| fromSymbol | STRING | 1st ticker of the pair |
|  toSymbol  | STRING | 2nd ticker of the pair |

**Response example:**

```javascript
{
    "code": 200,
    "success": true,
    "message": "",
    "result": [
        {
            "id": "SUSHI_BTC",
            "fromSymbol": "SUSHI",
            "toSymbol": "BTC"
        },
        ...
    ]
}
```

{% endtab %}

{% tab title="400: Bad Request " %}
**Response example:**

```javascript
<html>

<head>
	<title>400 Bad Request</title>
</head>

<body>
	<center>
		<h1>400 Bad Request</h1>
	</center>
	<hr>
	<center>nginx</center>
</body>

</html>
```

**This error occurs in the following cases:**

* Invalid URL
* Request contains invalid headers
  {% endtab %}

{% tab title="404: Not Found " %}
**Response example:**

```javascript
{
    "timestamp": 1660766043722,
    "status": 404,
    "error": "Not Found",
    "message": "",
    "path": "/api/v1/public/products-test"
}
```

**This error occurs in the following cases:**

* The requested URL was not found. Please check the endpoint and try again
  {% endtab %}
  {% endtabs %}

### With Authentication

This public endpoint can also be used as a `POST` request with [authentication](/earnbit/developers/exchange-api-documentation/private-endpoints-or-http/authentication-and-api-keys.md) (similar to [private endpoints](/earnbit/developers/exchange-api-documentation/private-endpoints-or-http.md)) to allow you to access more data.

<mark style="color:green;">`POST`</mark> `https://api.earnbit.com/api/v1/public/products`

#### Headers

| Name                                              | Type   | Description                                                                                                               |
| ------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| X-TXC-APIKEY<mark style="color:red;">\*</mark>    | STRING | Public [API key](/earnbit/developers/exchange-api-documentation/private-endpoints-or-http/authentication-and-api-keys.md) |
| X-TXC-PAYLOAD<mark style="color:red;">\*</mark>   | STRING | Сonverted Base64 string containing body JSON                                                                              |
| X-TXC-SIGNATURE<mark style="color:red;">\*</mark> | STRING | Encrypted HmacSHA512 string containing body JSON with a API secret key                                                    |

#### Request Body

<table><thead><tr><th>Name</th><th width="169">Type</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>request<mark style="color:red;">*</mark></td><td>STRING</td><td>A request path without the domain name</td><td>/api/v1/public/products</td></tr><tr><td>nonce<mark style="color:red;">*</mark></td><td>NUMERIC</td><td>A 13-character number that must always be greater than the nonce of the previous completed request (we suggest generating a nonce as the UNIX timestamp in milliseconds)</td><td>1704070810000</td></tr></tbody></table>

<details>

<summary>CURL Example</summary>

```javascript
curl --location --request POST 'https://api.earnbit.com/api/v1/public/products' \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: 0000000000XXXXXXXXXXXXXXXXX' \
--header 'X-TXC-PAYLOAD: 0000000000XXXXXXXXXXXXXXXXX' \
--header 'X-TXC-SIGNATURE: 0000000000XXXXXXXXXXXXXXXXX' \
--data-raw '{"request":"/api/v1/public/products","nonce":1704070810000}'
```

</details>

{% tabs %}
{% tab title="200: OK Successful" %}
**Response example:**

```javascript
{
    "code": 200,
    "success": true,
    "message": "",
    "result": [
        {
            "id": "SUSHI_BTC",
            "fromSymbol": "SUSHI",
            "toSymbol": "BTC"
        },
        ...
    ]
}
```

{% endtab %}

{% tab title="400: Authentication Failure  " %}
**Response example:**

```javascript
{
    "code": 400,
    "success": false,
    "message": "authentication failure",
    "result": []
}
```

**This error occurs in the following cases:**

* The request was signed incorrectly.
* Some of the provided parameters are incorrect.
* Provided [nonce](/earnbit/developers/exchange-api-documentation/private-endpoints-or-http/authentication-and-api-keys.md) is incorrect or less than on previous completed request
* The base URL or path is incorrect.
* The API keys are not [activated](/earnbit/developers/exchange-api-documentation/private-endpoints-or-http/authentication-and-api-keys.md).
  {% endtab %}

{% tab title="404: Not Found " %}
**Response example:**

```javascript
{    
    "timestamp": 1727100906,
    "status": 404,
    "error": "Not Found",
    "message": "",
    "path": "/api/v1/public/public/test"
}
```

**This error occurs in the following cases:**

* The request was made with undefined data and the service cannot find the data for response.
  {% endtab %}
  {% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://earnbit.gitbook.io/earnbit/developers/exchange-api-documentation/public-endpoints-or-http/products.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
