Перефразування, перевірка граматики, стислий виклад, переклад і перевірка на плагіат 56 мовами, зокрема українською. Простий REST з периферії Cloudflare.
Той самий origin
Запити зі сторінок adeptwrite.com не потребують ключа. Для власних застосунків ключі API дають платні плани, починаючи з Pro: створіть ключ у акаунті й надсилайте його в заголовку Authorization: Bearer. Без ключа API призначений лише для самого сайту.
Коротко
API AdeptWrite v1 має три робочі ендпоїнти. POST /api/v1/run приймає JSON із полями task, mode, lang і text (до 6 000 символів) та повертає звичайний текст від моделі Cloudflare Workers AI, обраної за мовою; POST /api/v1/plagiarism порівнює текст із відкритими джерелами й перелічує кожне перевірене джерело; GET /api/v1/health повертає стан сервісу. Текст не зберігається й не записується в журнали, а запити ШІ обмежено 30 на хвилину з однієї IP-адреси.
Основи
Базова адреса:https://adeptwrite.com/api/v1
Формат: запити й відповіді — JSON (Content-Type: application/json, UTF-8).
Автентифікація: для запитів зі сторінок adeptwrite.com (той самий origin) не потрібна; для власних застосунків — ключ API з платного плану в заголовку Authorization: Bearer.
Приватність: вміст поля text не зберігається й не записується в журнали; відповіді мають Cache-Control: no-store.
Версії: шлях /v1/ не зміниться несумісно; несумісні зміни вийдуть під /v2/.
POST/api/v1/run
Виконує одне ШІ-завдання над текстом і повертає результат звичайним текстом (без вступу й без блоків коду Markdown).
Запит
Field
Type
Required
Notes
task
string
✓
Назва завдання; див. перелік завдань нижче.
text
string
✓
Вхідний текст, від 1 до 6 000 символів.
lang
string
✓
Мова результату: один із 56 кодів мов сайту (uk, en, pl, pt-pt, zh-hant…; теги BCP 47, як-от pt-BR, зіставляються) або auto, тобто «та сама мова, що й у вхідного тексту».
mode
string
—
Режим, доступний для цього інструмента, наприклад Formal, Akademik, Ringkas, Poin-poin (назви режимів — індонезійські мітки реєстру). Для завдань без режимів ігнорується.
options
object
—
Параметри завдання: from / to для translate (будь-яка підтримувана мова на будь-яку; from може бути auto; sr-Cyrl просить сербську кирилицею), platform (instagram / tiktok / linkedin) для caption та необов’язкові підписані fields для bio, coverletter і meta. Інші ключі ігноруються.
POST /api/v1/run HTTP/1.1
Content-Type: application/json
{
"task": "paraphrase",
"mode": "Formal",
"lang": "uk",
"text": "Гарне письмо справді важливе для студентів.",
"options": {}
}
Відповідь
Статус 200 з ok: true, результат у output, модель, яка справді відповіла, у model (вона інша, якщо спрацювала резервна модель) і час обробки в мілісекундах. Якщо відповідь досягла ліміту довжини чи часу й була обрізана, додається truncated: true.
{
"ok": true,
"output": "Якісне письмо має велике значення для студентів.",
"model": "@cf/qwen/qwen3-30b-a3b-fp8",
"ms": 812
}
Приклад: curl
curl -X POST https://adeptwrite.com/api/v1/run \
-H "Content-Type: application/json" \
-d '{"task":"grammar","lang":"uk","text":"Я приймаю участь у конференції на протязі двох днів."}'
Приклад: JavaScript (fetch)
const res = await fetch('/api/v1/run', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ task: 'summarize', mode: 'Poin-poin', lang: 'uk', text }),
});
const data = await res.json();
if (!data.ok) throw new Error(data.error.code + ': ' + data.error.message);
console.log(data.output);
POST/api/v1/plagiarism
Добирає 4–8 характерних фраз із тексту, шукає їх у відкритих джерелах мовою тексту (Вікіпедія, Вікіджерела, повний текст Internet Archive, Europe PMC, DOAJ, arXiv; постачальник вебпошуку — лише якщо його налаштовано й запитано) та оцінює збіг. Сервер залишають тільки ці короткі фрази.
Запит
Field
Type
Required
Notes
text
string
✓
Не менше 30 слів і не більше 6 000 символів.
lang
string
✓
Код мови сайту або auto.
options
object
—
web: true додатково звертається до постачальника вебпошуку, якщо власник його налаштував; поле webSearched у відповіді показує, чи він справді відповів.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json
{ "text": "…не менше 30 слів…", "lang": "uk", "options": { "web": false } }
Відповідь
Статус 200 з score (збіжні слова ÷ слова, від 0 до 1), matches за джерелами з підсвіченими passages (зсуви в символах у вашому тексті), sourcesSearched (рівно ті джерела, чиї відповіді враховано в результаті), sourcesSkipped із причиною та webSearched. Це оцінка схожості на відкритих джерелах, а не вирок: закриті бази закладів освіти не охоплено.
curl -X POST https://adeptwrite.com/api/v1/plagiarism \
-H "Content-Type: application/json" \
-d '{"lang":"uk","text":"…не менше 30 слів…"}'
GET/api/v1/health
Повідомляє, які сервіси ввімкнено. Не має тіла запиту й не зараховується до квоти.
Відповідь
Статус 200. Поле ai дорівнює false, поки ввімкнено аварійний вимикач ШІ; plagiarism перелічує джерела, які може опитувати перевірка; aidetect описує серверний глибокий аналіз детектора ШІ, який ще не розгорнуто (POST /api/v1/aidetect відповідає 503 disabled; детектор на сайті працює у вашому браузері).
Короткі вірші; режими: Bebas (верлібр), Berima (з римою), Akrostik (акровірш), Haiku (хайку).
Обмеження
Довжина тексту
Не більше 6 000 символів на запит (вище — 413 too_long).
З однієї IP-адреси
30 запитів на хвилину.
Загальний ліміт
100 запитів на хвилину на весь сервіс, а також добова межа для ШІ-функцій.
Плагіат
5 перевірок на хвилину з однієї IP-адреси та 60 на хвилину на весь сервіс; мінімум 30 слів.
Результат
Бюджет довжини на кожне завдання, але не більше 2 048 токенів; обрізана відповідь має truncated: true.
Модель
Обирається за мовою: англійська та індонезійська працюють на @cf/aisingapore/gemma-sea-lion-v4-27b-it, усі інші мови, зокрема українська, — на @cf/qwen/qwen3-30b-a3b-fp8. Якщо модель зайнята, обмежена, повільна чи збійна, запит переходить до наступної моделі в ланцюжку (Qwen3-30B, потім @cf/google/gemma-4-26b-a4b-it, потім @cf/meta/llama-3.3-70b-instruct-fp8-fast). Поле model завжди називає модель, що відповіла.
Коди помилок
Статус
Код
Коли виникає
400
invalid_request
Некоректний JSON, відсутнє обов’язкове поле або невідомі task чи lang.
413
too_long
text перевищує 6 000 символів.
403
forbidden
Запит надійшов не зі сторінки adeptwrite.com.
429
rate_limited
Перевищено хвилинний ліміт для IP-адреси або загальний. Зачекайте кількість секунд зі значення Retry-After.
429
quota_exceeded
Добову межу ШІ-функцій вичерпано. Спробуйте наступного дня (за UTC).
502
upstream
Жодна модель у ланцюжку не відповіла вчасно.
502
empty_output
Моделі відповіли, але порожнім результатом.
503
disabled
Власник тимчасово вимкнув сервіс або (для /api/v1/aidetect) його ще не розгорнуто.
Формат помилок
Кожна помилка повертається як JSON із відповідним кодом стану HTTP і однаковою структурою:
{ "ok": false, "error": { "code": "rate_limited", "message": "Too many requests. Please try again shortly." } }
Спершу перевіряйте ok, потім читайте error.code для програмної обробки; error.message можна безпечно показувати користувачам.
Рекомендована практика
Надсилайте текст частинами (наприклад, по абзацу), а не одним довгим документом: результати приходять швидше, і їх легше перевіряти.
На 429 відповідайте експоненційною затримкою, а не негайними повторами.
Не надсилайте персональних чи конфіденційних даних без потреби: хоча ми їх не зберігаємо, мінімізація даних усе одно діє.
Результат ШІ може бути помилковим; подавайте його як пропозицію для перевірки, а не як остаточну істину.
Поширені запитання
Чи можна звертатися до API зі свого застосунку чи домену?
Так, з ключем API: ключі для власних застосунків доступні на платних планах, починаючи з Pro, і створюються на сторінці ключів API вашого акаунта. Без ключа API обслуговує лише сторінки adeptwrite.com. Деталі й ціни — на сторінці тарифів.
Чи зберігається текст, надісланий до API?
Ні. Текст передається моделі, щоб отримати відповідь, і одразу відкидається. Журнали містять лише метадані (код стану, завдання, тривалість). Усі подробиці — у політиці конфіденційності.
Чому результат — звичайний текст, а не структурований JSON?
Кожне завдання дає один готовий до вставки текст без вступу й блоків Markdown, тож його можна одразу показати в редакторі. Додаткову структуру (наприклад, перелік змін) заплановано в пізнішій версії без зміни v1.
Скільки коштує API?
З сайту adeptwrite.com він безкоштовний у межах 30 ШІ-запитів на хвилину з однієї IP-адреси. Ключі API для власних застосунків входять до платних планів; актуальні ціни й ліміти дивіться на сторінці тарифів.
Яка модель відповідає на мій запит?
Це залежить від мови: англійська та індонезійська йдуть до SEA-LION, інші мови, зокрема українська, — до Qwen3-30B. Якщо ця модель зайнята чи збійна, відповідає наступна модель у резервному ланцюжку, а поле model у відповіді називає ту, що відповіла.