DARKMINDDARK INTELLIGENCE
[ DEVELOPERS / API V1 ]

DARKMIND API_

Подключи модели DARKMIND к своему продукту. Чат, код, изображения, видео и аудио — личный ключ, общий баланс и проверяемые списания.

01 / НАЧАЛО РАБОТЫ

  1. Создай аккаунт или войди. Подтверди возраст 18+ и правила сервиса в кабинете.
  2. В аккаунте создай API-ключ и сохрани секрет: повторно он не показывается.
  3. Храни его в переменной 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

GET/models

Активные текстовые модели: ID, режимы, возможности и тарифы за миллион токенов.

POST/chat/completions

Чат и код в формате OpenAI Chat Completions. JSON или SSE (stream:true). Инструменты и изображения — только у поддерживающих их моделей.

GET/requests/{requestId}

Окончательное списание и статус запроса чата по его Idempotency-Key. Возвращает только запросы этого аккаунта.

GET/catalog

Полный активный каталог, включая изображения, видео, аудио, редактирование, режимы и параметры.

POST/assets

Загрузка изображения, аудио или видео: multipart/form-data с полем file. Ответ {asset:{id,url,expiresAt,...}}.

POST/quotes

Оценка медиа: {modelId,prompt,options,assetIds}. Ответ {quote:{id,estimated_usd,maximum_usd,expiresAt,...}}. Генерация ещё не запущена.

POST/generations

Запуск подтверждённой оценки: {quoteId}. HTTP 202 и pending означают принятое задание; проверяй GET /generations/{id}. Используй отдельный Idempotency-Key.

GET/generations/{id}

Статус и результат своей генерации. pending — продолжай опрашивать; completed — скачай файлы; uncertain — обратись в поддержку, не запускай платный дубль.

GET/generations?limit=20&offset=0

Страница своих генераций: {generations,limit,offset,hasMore}. Максимум 50 за запрос.

GET/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 запроса. Сам ключ не отправляй.