# Отправка целевого события/достижение цели

Цель — это действие пользователя в боте, например продажа. Graspil имеет несколько уже созданных "целей", вы можете увидеть их в своем личном кабинете в разделе [конверсии](https://app.graspil.com/targets). Там же вы можете создавать свои цели.

Каждая цель имеет свой **триггер** — некую логику при наступлении которой будет создано целевое событие (достижение цели), его вы и уведите в статистике.

"Цели" можно активировать через API. Ниже представлен метод, который описывает как передать целевое событие.

## Отправка данных <a href="#aacdba4ac5" id="aacdba4ac5"></a>

За одну отправку запроса вы можете передать от 1 до 100 событий. Данные отправляются в `json` формате. Предпочтительней отправлять события в момент их появления.

{% hint style="info" %}
Не забудьте добавить заголовок для авторизации запроса. Подробней в [этом](/ru/api/auth.md) разделе
{% endhint %}

#### **HTTPS Request**

```
POST https://api.graspil.com/v1/send-target
```

#### Передаваемые параметры <a href="#a35acec451" id="a35acec451"></a>

<table><thead><tr><th width="131">Параметр</th><th width="113">Type</th><th width="149">Обязательный</th><th>Описание</th></tr></thead><tbody><tr><td>target_id</td><td>integer</td><td>да</td><td>ID цели, вы можете найти ID в <a href="https://app.graspil.com/targets">настройках</a></td></tr><tr><td>user_id</td><td>integer</td><td>да</td><td>Telegram ID пользователя, кому принадлежит событие. Перед сохранением данных будет проверенно соответствует ли id пользователю вашего бота.</td></tr><tr><td>date</td><td>RFC 3339 (<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 860</a>)</td><td>нет</td><td>Дата и время когда произошло событие, если оставить пустым будет установленно текущее время. Формат времени должен содержать миллисекунды и часовой пояс.<br>Пример: <code>2024-08-03T20:00:00.123+02:00</code></td></tr><tr><td>value</td><td>float</td><td>нет</td><td>Общая цена (число с плавающей запятой).</td></tr><tr><td>unit</td><td>string(3)</td><td>да, если есть value</td><td>Код валюты, максимальная длинна строки 3. <em>Аналогично</em> <a href="https://core.telegram.org/bots/payments#supported-currencies"><em>валютам в TG Api</em></a><em>.</em></td></tr></tbody></table>

**Передавать можно как один объект:**

```json
{
    "target_id": 1,
    "user_id": 5842703839,
    "date": "2023-12-31T20:00:00+01:00",
    "value": 10,
    "unit": "usd"
}
```

**Так и массив объектов:**

```json
[
    {
        "target_id": 1,
        "user_id": 5842703839,
        "date": "2023-12-31T20:00:00+01:00",
        "value": 10,
        "unit": "usd"
    },
    {
        "target_id": 1,
        "user_id": 5842703839,
        "date": "2023-12-31T20:00:00+01:00",
        "value": 10,
        "unit": "usd"
    }
]
```

#### Примеры кода <a href="#e9d7bdd838" id="e9d7bdd838"></a>

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

```php
$url = "https://api.graspil.com/v1/send-target";
$api_key = ""; // your API key
$data = json_encode([
    "target_id": 1,
    "user_id": 5842703839,
    "date": "2023-12-31T20:00:00+01:00",
    "value": 10,
    "unit": "usd"
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Api-Key: ' . $api_key,
    'Content-Type: application/json;'
)];
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$response = curl_exec($ch);
curl_close($ch);
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = "https://api.graspil.com/v1/send-target"
api_key = ""  # your API key

payload = json.dumps({
  "target_id": 1,
  "user_id": 5842703839,
  "date": "2023-12-31T20:00:00+01:00",
  "value": 10,
  "unit": "usd"
})

headers = {
    "Api-Key": api_key,
    "Content-Type": "application/json"
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
```

{% endtab %}
{% endtabs %}

## Ответ

Пример успешного ответа:

```json
{
  "ok": true
}
```

## **Ошибки**

{% hint style="info" %}
При полученнии данных API проверяет только базовые параметры, остальные проверки происходят позже при обработке данных. Все возникшие ошибки вы можете найти в разделе “[ошибки бота](https://app.graspil.com/bot_errors)”
{% endhint %}

В случае возникновения ошибок при валидировании данных, ответ будет содержать информацию об ошибке

```json
{
  "ok": false,
  "error": {
      "target_id": [
          "Unknown target_id"
      ],
      "user_id": [
          "The user with this id was not found"
      ]
  }
}
```


---

# 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://docs.graspil.com/ru/api/send-event.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.
