API
PROMT SPACE API для агентов
OpenAI-compatible API PROMT SPACE: один ключ, единый баланс, история запросов и списание по фактическому usage.
1. Создание ключа
Владелец workspace выпускает ключ в разделе API-доступ. Секрет показывается только один раз.
Тот же ключ можно создать через кабинетный API, если у вас уже есть web-сессия и CSRF token.
curl https://promt.space/api/api-keys \
-X POST \
-H "Content-Type: application/json" \
-H "X-CSRF-Token: <csrf>" \
-d '{"name":"Production agent"}'2. Список моделей
curl https://promt.space/v1/models \
-H "Authorization: Bearer ps_live_..."Ответ совместим с OpenAI model list и дополнен данными PROMT SPACE: типом модели, модальностями, контекстом и ценами в рублях за 1M токенов, если они доступны.
3. Конкретная модель
curl "https://promt.space/v1/models/openai/gpt-4.1-mini" \
-H "Authorization: Bearer ps_live_..."4. Проверка ключа
curl https://promt.space/v1/me \
-H "Authorization: Bearer ps_live_..."Endpoint возвращает workspace, активный ключ, scopes, активный тариф, capabilities и баланс: общий, hold, доступный остаток и расход за месяц.
5. Баланс
curl https://promt.space/v1/balance \
-H "Authorization: Bearer ps_live_..."Ответ возвращает баланс владельца workspace в копейках: общий остаток, hold, доступный остаток, расход за месяц и прогноз расхода.
6. Usage
curl "https://promt.space/v1/usage?from=2026-06-01&to=2026-06-30&model=openai/gpt-4.1-mini" \
-H "Authorization: Bearer ps_live_..."Параметры from/to принимают даты в формате YYYY-MM-DD. model необязателен. Endpoint возвращает количество запросов, токены, стоимость в копейках и среднюю latency.
7. История запросов
curl "https://promt.space/v1/requests?page=1&per_page=20" \
-H "Authorization: Bearer ps_live_..."
curl https://promt.space/v1/requests/56cd6d0b-c9bd-4a42-a332-1a2e784ca21e \
-H "Authorization: Bearer ps_live_..."История отдаётся по рабочему пространству: prompt, response, модель, автор, токены, стоимость, latency и статус. per_page ограничен 100 записями.
8. Оценка стоимости
curl https://promt.space/v1/chat/completions/estimate \
-H "Authorization: Bearer ps_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4.1-mini",
"messages": [
{"role": "user", "content": "Составь план запуска продукта"}
],
"max_tokens": 1200
}'Endpoint возвращает прогноз стоимости в копейках, оценку input/output tokens, актуальный курс, наценку платформы и цену модели в рублях за 1M токенов. Hold не ставится.
9. Chat Completions
curl https://promt.space/v1/chat/completions \
-H "Authorization: Bearer ps_live_..." \
-H "Idempotency-Key: req_20260615_001" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4.1-mini",
"messages": [
{"role": "user", "content": "Составь план запуска продукта"}
],
"temperature": 0.2,
"max_tokens": 1200
}'10. Документы и PDF
PDF и документы можно передавать как base64 data URL в attachments. Сервер отправит их провайдеру как file content part вместе с последним user-сообщением.
PDF_B64=$(base64 -i report.pdf)
curl https://promt.space/v1/chat/completions \
-H "Authorization: Bearer ps_live_..." \
-H "Content-Type: application/json" \
-d "{
\"model\": \"anthropic/claude-sonnet-4\",
\"messages\": [
{\"role\": \"user\", \"content\": \"Сделай краткое резюме документа и выдели риски\"}
],
\"attachments\": [
{
\"filename\": \"report.pdf\",
\"mime_type\": \"application/pdf\",
\"file_data\": \"data:application/pdf;base64,$PDF_B64\"
}
]
}"Ограничение PROMT SPACE: до 5 файлов за запрос, до 10 МБ каждый. Файлы участвуют в оценке стоимости косвенно: провайдер может добавить токены после парсинга PDF.
11. Image и audio output
Для моделей с output_modalities image/audio передавайте modalities. В ответе message.content дополнительно содержит markdown-ссылки на media, а message.images/message.audios дают структурированные URL/data URL.
curl https://promt.space/v1/chat/completions \
-H "Authorization: Bearer ps_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "black-forest-labs/flux.2-klein-4b",
"modalities": ["image"],
"messages": [
{"role": "user", "content": "Минималистичная иконка SaaS продукта в фиолетовом стиле"}
]
}'
curl https://promt.space/v1/chat/completions \
-H "Authorization: Bearer ps_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini-tts",
"modalities": ["text", "audio"],
"audio": {"voice": "alloy", "format": "wav"},
"messages": [
{"role": "user", "content": "Озвучь короткое приветствие для нового пользователя"}
]
}'12. Streaming
curl https://promt.space/v1/chat/completions \
-N \
-H "Authorization: Bearer ps_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4.1-mini",
"stream": true,
"messages": [
{"role": "user", "content": "Напиши короткое приветствие"}
]
}'Streaming доступен на активных тарифах Pro, Business и Enterprise. На Start API вернёт ошибку с понятным текстом.
Формат ответа совместим с OpenAI SSE: последовательность data-событий и финальный data: [DONE]. Биллинг закрывается после завершения upstream stream; если клиент отключился, сервер дочитывает stream и всё равно закрывает hold.
13. Idempotency
Для non-streaming chat/completions передавайте заголовок Idempotency-Key. Если агент повторит тот же запрос с тем же ключом, API вернёт сохранённый ответ без нового hold, списания и дубля в истории.
Ключ действует 24 часа в рамках workspace. Повтор с другим body под тем же ключом вернёт 409 conflict. Для streaming этот заголовок пока не поддерживается.
14. OpenAI SDK
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.PROMT_SPACE_API_KEY,
baseURL: "https://promt.space/v1",
});
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4",
messages: [{ role: "user", content: "Привет" }],
});Биллинг
Перед запросом система ставит hold по прогнозу стоимости. После ответа модели списывается фактическая стоимость по usage. Если запрос не выполнен, hold возвращается автоматически.
Ограничения текущей версии
- Streaming доступен только на Pro, Business и Enterprise.
- Нужно указывать конкретную модель, автовыбор для платных API-запросов запрещен.
- Video generation работает через отдельную очередь провайдера и будет вынесен в отдельный endpoint.
- Embeddings, rerank и transcription требуют специализированных форматов запросов и будут добавлены отдельными endpoint’ами.