📚 Документація API (Gateway)
Базова URL-адреса: http://178.63.149.102:8080
Всі запити до API повинні містити заголовки для авторизації та вказувати формат даних.
🔑 Авторизація (Headers)
Для всіх запитів необхідно передавати твій персональний API-ключ у заголовку x-api-key. Також не забувай вказувати Content-Type: application/json.
headers: {
'x-api-key': 'sk-твоя-секретна-строка-ключа',
'Content-Type': 'application/json'
}
❌ Обробка помилок (HTTP Status Codes)
| Код | Опис |
200 OK | Успішне виконання запиту. З балансу списано токени. |
401 Unauthorized | API ключ не передано, або він недійсний. |
402 Payment Required | На балансі ключа недостатньо токенів для цієї операції. |
429 Too Many Requests | Перевищено ліміт запитів (за замовчуванням: 10 запитів на хвилину). |
500 Internal Error | Помилка на стороні кінцевої нейромережі. Токени НЕ списуються. |
503 Service Unavailable | Цей модуль тимчасово вимкнено адміністратором. |
1. Генерація зображень
POST/api/generate
Вартість: 1 токен
| Параметр | Тип | Опис |
prompt | string | Текстовий опис бажаного зображення Обов'язково |
model | string | Модель: flux, qwen, photon, або chroma Обов'язково |
negativePrompt | string | Що не повинно бути на фото (за замовчуванням порожньо) |
width / height | number | Розміри зображення в пікселях (напр. 1024) |
seed | number | Сід генерації (число) |
steps | number | Кількість кроків генерації (напр. 30) |
cfg | number | Наскільки точно слідувати промпту (напр. 7.5) |
Приклад запиту (JavaScript/Node.js):
const response = await fetch('http://178.63.149.102:8080/api/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
prompt: "A futuristic cyberpunk city at night, neon lights, 8k resolution",
model: "flux",
width: 1024,
height: 1024,
steps: 30,
cfg: 7,
seed: 123456789
})
});
const result = await response.json();
console.log(result.data); // Зображення у форматі Base64
console.log(result.balanceRemaining); // Залишок токенів: 99
2. Анімація (Image to Video)
POST/api/animate
Вартість: 10 токенів
Примітка: цей запит може виконуватися довго, переконайтеся, що ваш клієнт має достатній timeout (рекомендується 3-5 хвилин).
| Параметр | Тип | Опис |
base64Image | string | Оригінальне зображення у форматі Base64 Обов'язково |
prompt | string | Опис того, як зображення має рухатися |
fps | number | Кількість кадрів анімації (step) |
seed | number | Сід для генерації |
Приклад запиту:
const response = await fetch('http://178.63.149.102:8080/api/animate', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
base64Image: "iVBORw0KGgoAAAANSUhEUgAA...", // Ваша картинка
prompt: "The camera slowly pans to the right, wind blowing the hair",
fps: 121,
seed: 42
})
});
const result = await response.json();
// result.data міститиме відео у Base64
3. Редагування (Inpainting)
POST/api/edit
Вартість: 2 токени
| Параметр | Тип | Опис |
base64Image | string | Оригінальне зображення у Base64 Обов'язково |
base64Image2 | string | (Опціонально) Друге зображення (маска) для подвійного Inpaint |
prompt | string | Текстовий опис змін |
width / height | number | Розміри результату |
4. Покращення якості (Upscale)
POST/api/upscale
Вартість: 2 токени
| Параметр | Тип | Опис |
base64Image | string | Зображення у Base64 Обов'язково |
5. Видалення фону (Background Removal)
POST/api/remove-bg
Вартість: 1 токен
| Параметр | Тип | Опис |
base64Image | string | Зображення у Base64 Обов'язково |
6. Чат та Аналіз (Text / Vision / Video)
POST/api/chat
Вартість: 1 токен (Text) / 2 токени (Vision)
Універсальний роут для роботи з мовними моделями (LLM). Підтримує всі стандартні параметри OpenAI (LM Studio).
| Параметр | Тип | Опис |
task | string | text (за замовч.) або vision. Визначає на який сервер піде запит. |
messages | array | Масив повідомлень OpenAI формату Обов'язково |
model | string | ID моделі (якщо на сервері їх декілька) |
temperature | number | Креативність (від 0.0 до 1.0) |
response_format | object | Структура для строгого виводу JSON |
clean_markdown | boolean | Якщо true, сервер автоматично виріже символи ``` з відповіді. |
Приклад 1: Звичайний текст зі строгим JSON
const response = await fetch('http://178.63.149.102:8080/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
task: "text",
temperature: 0.7,
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Tell me a joke." }
],
response_format: {
type: "json_schema",
json_schema: {
name: "joke_response",
strict: true,
schema: {
type: "object",
properties: { joke: { type: "string" } },
required: ["joke"]
}
}
}
})
});
const result = await response.json();
// result.data.text буде чистим JSON об'єктом: {"joke": "Why did the chicken..."}
Приклад 2: Аналіз фотографії (Vision)
Щоб проаналізувати фото або кадри з відео, передай task: "vision" та зміни структуру повідомлення користувача:
const response = await fetch('http://178.63.149.102:8080/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
task: "vision",
messages: [
{
role: "user",
content: [
{ type: "text", text: "Що зображено на цьому фото?" },
{ type: "image_url", image_url: { url: "data:image/jpeg;base64,iVBORw0KGgo..." } }
]
}
]
})
});
7. Генерація музики (Text-to-Music)
POST/api/text2music
Вартість: 5 токенів
Створює повноцінний аудіотрек на основі текстового опису жанру, настрою та (опціонально) лірики. Запит може виконуватися довго (до декількох хвилин).
| Параметр | Тип | Опис |
prompt | string | Опис жанру, настрою та інструментів (наприклад, "pop rock", "synthwave") Обов'язково |
lyrics | string | Текст пісні (наприклад, "[Verse 1]\nWalking down the street..."). Якщо немає, залиште порожнім. |
audio_duration | number | Бажана тривалість у секундах (від 10 до 600). За замовчуванням: -1 (автоматично). |
Приклад запиту (JavaScript):
const response = await fetch('http://178.63.149.102:8080/api/text2music', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
prompt: "Epic orchestral soundtrack with heavy drums and choir",
lyrics: "",
audio_duration: 30
})
});
const result = await response.json();
// result.data містить бінарні дані аудіофайлу у форматі Base64
console.log("Залишок токенів:", result.balanceRemaining);
8. Синтез мовлення (Text-to-Speech)
POST/api/synthesize
Вартість: 1 токен
Приймає текстовий запит і повертає згенероване аудіо (голос людини) у форматі WAV, закодоване в Base64.
| Параметр | Тип | Опис |
text | string | Текст, який потрібно озвучити Обов'язково |
voice | string | Ім'я голосу для озвучення. За замовчуванням використовується "Марина Панас". |
Приклад запиту (JavaScript):
const response = await fetch('http://178.63.149.102:8080/api/synthesize', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
text: "Привіт! Це тестове повідомлення для синтезу голосу.",
voice: "Марина Панас"
})
});
const result = await response.json();
if (result.data.success) {
// result.data.audio - це рядок Base64 (WAV формат)
const audio = new Audio("data:audio/wav;base64," + result.data.audio);
audio.play();
}
9. Розпізнавання мовлення (Speech-to-Text / STT)
POST/api/stt
Вартість: 1 токен
Приймає аудіофайл (наприклад, голосове повідомлення) і повертає розпізнаний текст.
| Параметр | Тип | Опис |
base64Audio | string | Аудіофайл, закодований у рядок формату Base64 Обов'язково |
Приклад запиту (JavaScript):
const response = await fetch('http://178.63.149.102:8080/api/stt', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'твій-ключ' },
body: JSON.stringify({
base64Audio: "UklGRiQAAABXQVZFZm10IBAAAAABAAEA..." // Ваш аудіофайл у Base64
})
});
const result = await response.json();
// result.data міститиме розпізнаний текст
console.log("Розпізнаний текст:", result.data);