DARKMIND API_
Подключи модели DARKMIND к своему продукту. Чат, код, изображения, видео и аудио — личный ключ, общий баланс и проверяемые списания.
01 / НАЧАЛО РАБОТЫ
- Создай аккаунт или войди. Подтверди возраст 18+ и правила сервиса в кабинете.
- В аккаунте создай API-ключ и сохрани секрет: повторно он не показывается.
- Храни его в переменной DARKMIND_API_KEY на сервере своего приложения. Не размещай секрет в коде браузера.
Base URL: https://darkmind.chat/api/v1
Authorization: Bearer YOUR_API_KEY
Ключ работает с API v1 и расходует баланс владельца. Ключ не даёт доступа к админке, выпуску других ключей или входу на сайт. До 10 активных ключей на аккаунт. Восстановление пароля по почте отзывает все ключи. Утерянный или раскрытый ключ можно сразу отозвать в аккаунте.
02 / CHAT COMPLETIONS
Формат запроса и ответа совместим с Chat Completions. Список доступных ID — GET /models. Тарифы и режимы могут изменяться; выбирай модель из текущего ответа API.
Для каждого нового платного запроса обязателен уникальный Idempotency-Key (8–120 символов: буквы, цифры, _ . : -). При проверке статуса используй тот же ID. Повтор уже принятого запроса возвращает 409 и не запускает вторую генерацию. Совместимость с форматом OpenAI не означает поддержку всех его API.
cURL
curl https://darkmind.chat/api/v1/chat/completions \
-H "Authorization: Bearer $DARKMIND_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-project-request-0001" \
-d '{
"model": "deepseek-v4-1-flash-1017-uncensored",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 512,
"stream": false
}'JavaScript / Node.js
// Run on your server, with the key in an environment variable.
const requestId = crypto.randomUUID();
const response = await fetch("https://darkmind.chat/api/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.DARKMIND_API_KEY,
"Content-Type": "application/json",
"Idempotency-Key": requestId
},
body: JSON.stringify({
model: "deepseek-v4-1-flash-1017-uncensored",
messages: [{ role: "user", content: "Hello!" }],
max_tokens: 512
})
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code || "REQUEST_FAILED");
console.log(result.choices[0].message.content);
console.log(result.darkmind.charge_usd);Python
import json, os, urllib.request, uuid
request = urllib.request.Request(
"https://darkmind.chat/api/v1/chat/completions",
data=json.dumps({
"model": "deepseek-v4-1-flash-1017-uncensored",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 512
}).encode(),
headers={
"Authorization": "Bearer " + os.environ["DARKMIND_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4())
}, method="POST"
)
with urllib.request.urlopen(request, timeout=960) as response:
result = json.load(response)
print(result["choices"][0]["message"]["content"])
print(result["darkmind"]["charge_usd"])Для потока укажи stream:true; ответ придёт как text/event-stream. Последний пакет с usage и darkmind содержит подтверждённое списание. Поток заканчивается data: [DONE]. Не считай промежуточные токены окончательной ценой.
Изображения в чате передаются как image_url с data:image/...;base64,... в user-сообщении. Произвольные URL изображений не загружаются. Максимальный JSON-запрос — 8 MiB; PNG, JPEG, WebP и GIF должны быть корректными.
03 / ИЗОБРАЖЕНИЯ, ВИДЕО И АУДИО
Выбери модель в GET /catalog. Поля constraints и metadata описывают доступные параметры. Для редактирования, распознавания речи и других задач с исходниками сначала загрузи файл через POST /assets и передай его id в assetIds.
POST /quotes
{
"modelId": "YOUR_ACTIVE_IMAGE_MODEL_ID",
"prompt": "A moonlit futuristic city",
"options": {
"aspect_ratio": "1:1"
},
"assetIds": []
}Пример опции aspect_ratio подходит только моделям, которые её поддерживают. Получи quote.id и проверь maximum_usd и expiresAt. Для оценки тоже передай Idempotency-Key.
POST /generations
{
"quoteId": "YOUR_QUOTE_ID"
}Передай новый Idempotency-Key, отличный от ID оценки. Сервер сохраняет задание и резерв, затем возвращает HTTP 202 со статусом pending. Сохрани generation.id и проверяй GET /generations/{id} до завершения. Повтор с тем же ключом и quoteId вернёт это же задание; новый ключ не создавай автоматически. Закрытие клиента не отменяет уже начатую платную генерацию.
Один исходный файл — до 20 MiB; до 8 файлов и 30 MiB суммарно, если выбранная модель их поддерживает. Новые медиа хранятся у нас до 14 минут с создания файла. Скачай результат сразу: expiresAt и срок подписанной ссылки могут отличаться.
При скачивании обработай 302 вручную: сначала запроси /assets/{id} с ключом, затем скачай Location с darkmind.live без Authorization и cookie. Никогда не пересылай API-ключ в медиахранилище.
04 / МЕТОДЫ API V1
/modelsАктивные текстовые модели: ID, режимы, возможности и тарифы за миллион токенов.
/chat/completionsЧат и код в формате OpenAI Chat Completions. JSON или SSE (stream:true). Инструменты и изображения — только у поддерживающих их моделей.
/requests/{requestId}Окончательное списание и статус запроса чата по его Idempotency-Key. Возвращает только запросы этого аккаунта.
/catalogПолный активный каталог, включая изображения, видео, аудио, редактирование, режимы и параметры.
/assetsЗагрузка изображения, аудио или видео: multipart/form-data с полем file. Ответ {asset:{id,url,expiresAt,...}}.
/quotesОценка медиа: {modelId,prompt,options,assetIds}. Ответ {quote:{id,estimated_usd,maximum_usd,expiresAt,...}}. Генерация ещё не запущена.
/generationsЗапуск подтверждённой оценки: {quoteId}. HTTP 202 и pending означают принятое задание; проверяй GET /generations/{id}. Используй отдельный Idempotency-Key.
/generations/{id}Статус и результат своей генерации. pending — продолжай опрашивать; completed — скачай файлы; uncertain — обратись в поддержку, не запускай платный дубль.
/generations?limit=20&offset=0Страница своих генераций: {generations,limit,offset,hasMore}. Максимум 50 за запрос.
/assets/{id}Приватный файл этого аккаунта. Может вернуть 302 на временную подписанную ссылку darkmind.live.
05 / РАСХОДЫ И ОШИБКИ
Баланс и списания общие для сайта, приложения, Telegram и API. Цены — в USD по тарифам DARKMIND. В чате поле darkmind.charge_usd и usage.cost отражают окончательное списание; у медиа — generation.charge_usd. До завершения часть баланса может быть зарезервирована.
Ошибка: {error:{code,message}}. 401 — неверный или отозванный ключ; 402 — недостаточно средств; 403 — нет доступа, не подтверждены правила или аккаунт ограничен; 409 — конфликт или уже принятый запрос; 422 — параметры не поддерживаются; 429 — лимит запросов; 503 — временная недоступность.
Если соединение оборвалось, сначала проверь /requests/{requestId} для чата или /generations/{id} для медиа. Не создавай новый платный запрос автоматически, пока исход первого неизвестен. Обработка после отзыва ключа может завершиться, если запрос уже начался.
Техподдержка по тикетам — укажи код ошибки и ID запроса. Сам ключ не отправляй.