Введение
Базовый URL API:
https://tipapi.eu.cc/api/v1
Все запросы (кроме каталога) требуют персональный API-токен. Получить токен можно в Telegram-боте: Профиль → API.
Для создания ссылки укажите код страны (country) и код сервиса (service) из таблицы каталога ниже.
Аутентификация
Передайте токен в заголовке каждого запроса:
Authorization: Bearer apt_ваш_токен_здесь
⚠ Важно: Токен команды (team token) нельзя использовать для Worker API — только персональный токен.
GET /me — информация о пользователе
curl -X GET "https://tipapi.eu.cc/api/v1/me" \ -H "Authorization: Bearer apt_YOUR_TOKEN"
import requests
TOKEN = "apt_YOUR_TOKEN"
BASE = "https://tipapi.eu.cc/api/v1"
r = requests.get(
f"{BASE}/me",
headers={"Authorization": f"Bearer {TOKEN}"},
)
print(r.json())const TOKEN = "apt_YOUR_TOKEN";
const BASE = "https://tipapi.eu.cc/api/v1";
const res = await fetch(`${BASE}/me`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
console.log(await res.json());<?php
$token = "apt_YOUR_TOKEN";
$base = "https://tipapi.eu.cc/api/v1";
$ch = curl_init("$base/me");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
]);
echo curl_exec($ch);
curl_close($ch);Создание ссылки
| Поле | Тип | Описание |
|---|---|---|
country * | string | Код страны: HU, PL, DE… |
service * | string | Сервис доставки: DPD, GLS… |
item_name | string | Название товара |
price | float | Цена |
currency | string | Валюта (по умолчанию EUR) |
full_name | string | ФИО получателя |
address | string | Адрес доставки |
curl -X POST "https://tipapi.eu.cc/api/v1/links" \
-H "Authorization: Bearer apt_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country": "HU", "service": "DPD", "item_name": "iPhone 15", "price": 450.00, "currency": "EUR", "full_name": "John Doe", "address": "Budapest, Hungary"}'import requests
TOKEN = "apt_YOUR_TOKEN"
BASE = "https://tipapi.eu.cc/api/v1"
payload = {
"country": "HU",
"service": "DPD",
"item_name": "iPhone 15",
"price": 450.00,
"currency": "EUR",
"full_name": "John Doe",
"address": "Budapest, Hungary",
}
r = requests.post(
f"{BASE}/links",
json=payload,
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = r.json()
print(data["pay_url"]) # готовая ссылкаconst TOKEN = "apt_YOUR_TOKEN";
const BASE = "https://tipapi.eu.cc/api/v1";
const res = await fetch(`${BASE}/links`, {
method: "POST",
headers: {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
country: "HU",
service: "DPD",
item_name: "iPhone 15",
price: 450.0,
currency: "EUR",
full_name: "John Doe",
address: "Budapest, Hungary",
}),
});
const data = await res.json();
console.log(data.pay_url);<?php
$token = "apt_YOUR_TOKEN";
$base = "https://tipapi.eu.cc/api/v1";
$payload = json_encode([
"country" => "HU",
"service" => "DPD",
"item_name" => "iPhone 15",
"price" => 450.00,
"currency" => "EUR",
"full_name" => "John Doe",
"address" => "Budapest, Hungary",
]);
$ch = curl_init("$base/links");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = json_decode(curl_exec($ch), true);
echo $response["pay_url"];
curl_close($ch);Пример ответа
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"short_id": "a1b2c3d4",
"country": "HU",
"service": "DPD",
"status": "active",
"item_name": "iPhone 15",
"price": 450.0,
"currency": "EUR",
"pay_url": "https://domain.com/pay/sms/a1b2c3d4-...",
"expires_at": "2026-05-24T12:00:00+00:00"
}
Создание ссылки по URL объявления
Передаёте только ссылку на товар — название, цена и фото парсятся автоматически. ФИО и адрес берутся из профиля страны воркера. Поддерживаются OLX.pl и Vinted.
| Поле | Тип | Описание |
|---|---|---|
url * | string | Ссылка на объявление OLX.pl или Vinted |
service | string | Сервис доставки. Обязателен для OLX; для Vinted можно не указывать |
curl -X POST "https://tipapi.eu.cc/api/v1/links/from-url" \
-H "Authorization: Bearer apt_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.olx.pl/d/oferta/example-ID.html", "service": "InPost"}'import requests
TOKEN = "apt_YOUR_TOKEN"
BASE = "https://tipapi.eu.cc/api/v1"
r = requests.post(
f"{BASE}/links/from-url",
json={
"url": "https://www.olx.pl/d/oferta/example-ID.html",
"service": "InPost",
},
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = r.json()
print(data["pay_url"])
print(data["item_name"], data["price"], data["currency"])const TOKEN = "apt_YOUR_TOKEN";
const BASE = "https://tipapi.eu.cc/api/v1";
const res = await fetch(`${BASE}/links/from-url`, {
method: "POST",
headers: {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://www.olx.pl/d/oferta/example-ID.html",
service: "InPost",
}),
});
const data = await res.json();
console.log(data.pay_url);$token = "apt_YOUR_TOKEN";
$base = "https://tipapi.eu.cc/api/v1";
$payload = json_encode([
"url" => "https://www.olx.pl/d/oferta/example-ID.html",
"service" => "InPost",
]);
$ch = curl_init("$base/links/from-url");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = json_decode(curl_exec($ch), true);
echo $response["pay_url"];
curl_close($ch);Пример ответа
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"short_id": "a1b2c3d4",
"country": "PL",
"service": "InPost",
"status": "active",
"item_name": "Koszulka Nike",
"price": 89.0,
"currency": "PLN",
"pay_url": "https://domain.com/pay/...",
"source_url": "https://www.olx.pl/d/oferta/...",
"marketplace": "olx"
}
Список ссылок
curl -X GET "https://tipapi.eu.cc/api/v1/links?page=0&per_page=20" \ -H "Authorization: Bearer apt_YOUR_TOKEN"
r = requests.get(
f"{BASE}/links",
params={"page": 0, "per_page": 20},
headers={"Authorization": f"Bearer {TOKEN}"},
)
for link in r.json()["links"]:
print(link["pay_url"])const res = await fetch(`${BASE}/links?page=0&per_page=20`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { links } = await res.json();$ch = curl_init("$base/links?page=0&per_page=20");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
]);
$data = json_decode(curl_exec($ch), true);Детали ссылки
curl -X GET "https://tipapi.eu.cc/api/v1/links/ORDER_UUID" \ -H "Authorization: Bearer apt_YOUR_TOKEN"
Удаление ссылки
curl -X DELETE "https://tipapi.eu.cc/api/v1/links/ORDER_UUID" \ -H "Authorization: Bearer apt_YOUR_TOKEN"
Список майлеров
Возвращает активные майлеры, доступные для пары страна + сервис
(с настроенным API-ключом). Без provider_type отдаются и email, и SMS.
ID майлера — это поле id в каждом элементе массива mailers.
Его нужно подставить в путь отправки: /api/v1/mailers/{id}/send.
Фиксированного списка UUID в документации нет: набор зависит от страны, сервиса и настроек админки.
| Параметр | Тип | Описание |
|---|---|---|
country * | string | Код страны, например PL |
service * | string | Сервис доставки из каталога, например InPost |
provider_type | string | email или sms. Если не указан — оба |
curl -X GET "https://tipapi.eu.cc/api/v1/mailers?country=PL&service=InPost" \ -H "Authorization: Bearer apt_YOUR_TOKEN"
import requests
TOKEN = "apt_YOUR_TOKEN"
BASE = "https://tipapi.eu.cc/api/v1"
r = requests.get(
f"{BASE}/mailers",
params={"country": "PL", "service": "InPost"},
headers={"Authorization": f"Bearer {TOKEN}"},
)
mailers = r.json()["mailers"]
for m in mailers:
print(m["id"], m["name"], m["provider_type"], m["fee_percent"])
# mailer_id для send = m["id"]const TOKEN = "apt_YOUR_TOKEN";
const BASE = "https://tipapi.eu.cc/api/v1";
const res = await fetch(
`${BASE}/mailers?country=PL&service=InPost`,
{ headers: { Authorization: `Bearer ${TOKEN}` } },
);
const { mailers } = await res.json();
mailers.forEach((m) => console.log(m.id, m.name, m.provider_type));
// mailerId для send = mailers[0].id$token = "apt_YOUR_TOKEN";
$base = "https://tipapi.eu.cc/api/v1";
$ch = curl_init("$base/mailers?country=PL&service=InPost");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
]);
$response = json_decode(curl_exec($ch), true);
foreach ($response["mailers"] as $m) {
echo $m["id"] . " " . $m["name"] . "\n";
}
// $mailerId для send = $response["mailers"][0]["id"]
curl_close($ch);Пример ответа
{
"country": "PL",
"service": "InPost",
"mailers": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Smailer",
"preset_slug": "smailer_email",
"provider_type": "email",
"description": "",
"fee_percent": 5,
"configured": true
}
]
}
В примере выше id = a1b2c3d4-e5f6-7890-abcd-ef1234567890 — это и есть mailer_id для отправки.
Отправка майлером
Отправляет письмо/SMS через выбранный майлер по уже созданной ссылке (order_id).
Ссылка должна принадлежать вашему аккаунту. В victim_contact передайте email или телефон
в зависимости от provider_type майлера.
Откуда взять ID:
order_id — поле id из ответа создания ссылки
(POST /links или POST /links/from-url.
mailer_id — поле id из
GET /mailers для той же страны и сервиса.
| Поле | Тип | Описание |
|---|---|---|
order_id * | string (UUID) | ID ссылки = поле id при создании |
victim_contact * | string | Email или телефон получателя |
В URL путь: {mailer_id} = поле id из списка майлеров.
curl -X POST "https://tipapi.eu.cc/api/v1/mailers/MAILER_UUID/send" \
-H "Authorization: Bearer apt_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"order_id": "ORDER_UUID", "victim_contact": "[email protected]"}'import requests
TOKEN = "apt_YOUR_TOKEN"
BASE = "https://tipapi.eu.cc/api/v1"
mailer_id = "MAILER_UUID"
r = requests.post(
f"{BASE}/mailers/{mailer_id}/send",
json={
"order_id": "ORDER_UUID",
"victim_contact": "[email protected]",
},
headers={"Authorization": f"Bearer {TOKEN}"},
)
print(r.json())const TOKEN = "apt_YOUR_TOKEN";
const BASE = "https://tipapi.eu.cc/api/v1";
const mailerId = "MAILER_UUID";
const res = await fetch(`${BASE}/mailers/${mailerId}/send`, {
method: "POST",
headers: {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
order_id: "ORDER_UUID",
victim_contact: "[email protected]",
}),
});
console.log(await res.json());$token = "apt_YOUR_TOKEN";
$base = "https://tipapi.eu.cc/api/v1";
$mailerId = "MAILER_UUID";
$payload = json_encode([
"order_id" => "ORDER_UUID",
"victim_contact" => "[email protected]",
]);
$ch = curl_init("$base/mailers/$mailerId/send");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => $payload,
]);
echo curl_exec($ch);
curl_close($ch);Пример ответа
{
"ok": true,
"status": 200,
"response": "…",
"mailer_id": "MAILER_UUID",
"order_id": "ORDER_UUID",
"mailer_name": "Swift Mail"
}
Ошибка майлера
Если внешний майлер отклонил запрос (например Swift Send_Status: false),
HTTP-код ответа остаётся 200, а в теле:
{
"ok": false,
"error": "текст ошибки от майлера",
"mailer_id": "MAILER_UUID",
"order_id": "ORDER_UUID",
"mailer_name": "Swift Mail"
}
Проверяйте ok / поле error — не полагайтесь только на HTTP-статус.
Каталог кодов
Полный список доступных комбинаций страна + сервис. Используйте значения из колонок «Код страны» и «Код сервиса» при создании ссылки.
Также доступен JSON-эндпоинт без авторизации: https://tipapi.eu.cc/api/v1/catalog
| Код страны | Страна | Код сервиса | Тип |
|---|---|---|---|
PL |
🇵🇱 Польша | OLX |
delivery |
PL |
🇵🇱 Польша | INPOST |
delivery |
PL |
🇵🇱 Польша | DPD |
delivery |
PL |
🇵🇱 Польша | POSTA |
delivery |
PL |
🇵🇱 Польша | ALLEGRO |
delivery |
PL |
🇵🇱 Польша | VINTED |
delivery |
PL |
🇵🇱 Польша | OLXVERIFY |
delivery |
PL |
🇵🇱 Польша | GLS |
delivery |
По странам
OLX
INPOST
DPD
POSTA
ALLEGRO
VINTED
OLXVERIFY
GLS
Коды ошибок
| HTTP | Описание |
|---|---|
401 | Отсутствует или неверный токен |
403 | Использован team token вместо персонального |
400 | Неизвестная комбинация country + service / невалидные данные майлера |
404 | Ссылка или майлер не найдены |