Worker API

Создавайте платёжные ссылки через HTTP-запросы. Подходит для интеграции с ворк-софтом, автоматизацией и собственными скриптами.

v1 Bearer Auth JSON TTL 48ч

Введение

Базовый URL API:

https://tipapi.eu.cc/api/v1

Все запросы (кроме каталога) требуют персональный API-токен. Получить токен можно в Telegram-боте: Профиль → API.

Для создания ссылки укажите код страны (country) и код сервиса (service) из таблицы каталога ниже.

Аутентификация

Передайте токен в заголовке каждого запроса:

Header
Authorization: Bearer apt_ваш_токен_здесь

⚠ Важно: Токен команды (team token) нельзя использовать для Worker API — только персональный токен.

GET /me — информация о пользователе

GET https://tipapi.eu.cc/api/v1/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);

Создание ссылки

POST https://tipapi.eu.cc/api/v1/links
ПолеТипОписание
country *stringКод страны: HU, PL, DE…
service *stringСервис доставки: DPD, GLS…
item_namestringНазвание товара
pricefloatЦена
currencystringВалюта (по умолчанию EUR)
full_namestringФИО получателя
addressstringАдрес доставки
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.

POST https://tipapi.eu.cc/api/v1/links/from-url
ПолеТипОписание
url *stringСсылка на объявление OLX.pl или Vinted
servicestringСервис доставки. Обязателен для 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"
}

Список ссылок

GET https://tipapi.eu.cc/api/v1/links?page=0&per_page=20
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);

Детали ссылки

GET https://tipapi.eu.cc/api/v1/links/{order_id}
curl -X GET "https://tipapi.eu.cc/api/v1/links/ORDER_UUID" \
  -H "Authorization: Bearer apt_YOUR_TOKEN"

Удаление ссылки

DELETE https://tipapi.eu.cc/api/v1/links/{order_id}
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 в документации нет: набор зависит от страны, сервиса и настроек админки.

GET https://tipapi.eu.cc/api/v1/mailers
ПараметрТипОписание
country *stringКод страны, например PL
service *stringСервис доставки из каталога, например InPost
provider_typestringemail или 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 для той же страны и сервиса.

POST https://tipapi.eu.cc/api/v1/mailers/{mailer_id}/send
ПолеТипОписание
order_id *string (UUID)ID ссылки = поле id при создании
victim_contact *stringEmail или телефон получателя

В 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

По странам

🇵🇱 Польша (PL)
OLX INPOST DPD POSTA ALLEGRO VINTED OLXVERIFY GLS

Коды ошибок

HTTPОписание
401Отсутствует или неверный токен
403Использован team token вместо персонального
400Неизвестная комбинация country + service / невалидные данные майлера
404Ссылка или майлер не найдены