API та MCP-сервер
Створюйте та керуйте короткими посиланнями прямо з власного коду — через REST API або через MCP-сервер у вашому AI-асистенті.
cutty має публічний API та MCP-сервер. Перший дає змогу створювати й змінювати посилання з коду; другий працює просто з AI-асистента, який володіє протоколом MCP. Обидва використовують один і той самий ключ API.
Ключ API
Автентифікуйте кожен запит за допомогою заголовка:
Authorization: Bearer ck_your_key
Де взяти ключ: увійдіть, відкрийте панель → API keys → Create key. Повний ключ (починається з ck_) показується лише раз, під час створення — одразу збережіть його в надійному місці. Ліміт — 120 запитів за хвилину на ключ.
Базова URL
Усі REST-ендпоінти доступні за адресою https://cutty.dev/api/v1. Запити та відповіді — у форматі JSON.
Створення посилання
POST /api/v1/links — у тілі JSON потрібен щонайменше url. Решта — необов'язкова:
url— адреса призначення (обов'язково)slug— власне закінчення, 3–40 символів; пропустіть, щоб отримати випадковеexpiresAt— дата завершення у форматі ISO 8601maxHits— ліміт кліків (1–1 000 000)password— пароль для захисту посиланняtags— мітки через кому для впорядкування в панеліfolder— назва теки, до якої потрапляє посиланняutmSource,utmMedium,utmCampaign— UTM-параметри, що додаються під час перенаправлення
У відповідь ви отримуєте slug, shortUrl і target.
curl -X POST https://cutty.dev/api/v1/links \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/a/very/long/address","slug":"offer","tags":"campaign,summer"}'
Список і окреме посилання
GET /api/v1/links повертає всі ваші посилання. GET /api/v1/links/{slug} — деталі одного.
curl https://cutty.dev/api/v1/links/offer \
-H "Authorization: Bearer ck_your_key"
Оновлення та видалення
PATCH /api/v1/links/{slug} оновлює передані поля, DELETE /api/v1/links/{slug} видаляє посилання.
curl -X PATCH https://cutty.dev/api/v1/links/offer \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"maxHits":500}'
Через PATCH можна задати, зокрема: targetUrl, expiresAt, maxHits, status, password, tags, folder, а також розширені поля нижче. Поле зі значенням null (або порожній рядок) очищає цю властивість.
Таргетинг, A/B та розширені поля
Те саме, що є в редакторі посилань, доступне й через API:
rules— масив правил перенаправлення за країною чи пристроєм, напр.[{"kind":"country","match":"PL","url":"https://shop.pl"},{"kind":"device","match":"ios","url":"https://apps.apple.com/..."}]abUrls— ротація A/B: масив[{"url":"https://a.com","weight":1},{"url":"https://b.com","weight":1}]; використовується, коли жодне правило не підходитьstartsAt— дата (ISO 8601), коли посилання стає активним; до неї посилання повертає 425webhookUrl— адреса, що отримує сповіщенняPOSTпри кожному кліку (fire-and-forget)serveOgразом ізogTitle,ogDescription,ogImageUrl— власна картка попереднього перегляду для ботів соцмереж (люди все одно потрапляють на перенаправлення)
curl -X PATCH https://cutty.dev/api/v1/links/offer \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"rules":[{"kind":"country","match":"DE","url":"https://example.de"}]}'
Масові операції
POST /api/v1/bulk створює багато посилань одним запитом. Передайте масив links (кожен елемент — як звичайне створення), до 500 за раз. У відповідь повертається результат для кожного рядка.
curl -X POST https://cutty.dev/api/v1/bulk \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"links":[{"url":"https://a.com"},{"url":"https://b.com","slug":"b"}]}'
Статистика посилання
GET /api/v1/links/{slug}/stats повертає зведення кліків: загальну кількість, розбивку за пристроями та браузерами і розподіл за останні 24 години.
curl https://cutty.dev/api/v1/links/offer/stats \
-H "Authorization: Bearer ck_your_key"
MCP-сервер
Якщо ви працюєте з AI-асистентом, можете під'єднати cutty через MCP (Model Context Protocol) і просити його скорочувати й упорядковувати посилання просто в розмові. Сервер працює за адресою https://mcp.cutty.dev/mcp через Streamable HTTP, а автентифікація — тим самим ключем API через заголовок Authorization: Bearer ck_....
Повний список інструментів, готові сніпети підключення та приклади — на окремій сторінці: MCP-сервер cutty.
Щось не працює?
Напишіть на [email protected] — відповідаю того ж дня.