Worken API
Worken предоставляет REST API для программного управления AI-агентами, автоматизации интеграций и чтения данных о расходах. Это тот же backend, на котором работает панель управления Worken.
Базовый URL
https://api.worken.ruАутентификация
Каждый запрос должен содержать API-ключ проекта в заголовке Authorization:
curl https://api.worken.ru/bots \
-H "Authorization: Bearer sk-ваш-ключ"Ключ идентифицирует проект. Все ресурсы — боты, чаты, треды, интеграции — принадлежат именно проекту, а не конкретному пользователю.
Получение API-ключа
- Откройте панель управления Worken и перейдите в Проект → API-ключи.
- Нажмите Создать ключ, задайте понятное название (например,
production-server) и скопируйте значение. - Сохраните ключ в менеджере секретов или переменной окружения. Открытый текст ключа отображается только один раз.
// Никогда не хардкодьте ключ — используйте переменные окружения
const client = new WorkenClient({ apiKey: process.env.WORKEN_API_KEY })import os
from worken import WorkenClient
client = WorkenClient(api_key=os.environ["WORKEN_API_KEY"])WARNING
Относитесь к API-ключу как к паролю. Не встраивайте его в клиентский код и не коммитьте в репозиторий.
Формат ключа
Все ключи соответствуют шаблону sk-<hex строка>. Префикс sk- обязателен — запросы без него отклоняются с 401.
Области доступа
Ключи ограничены одним проектом. Один ключ даёт доступ ко всем ресурсам внутри проекта. Если нужно разграничить доступ (например, read-only для интеграций), создайте отдельные ключи.
Ротация ключей
Удалите старый ключ в разделе Проект → API-ключи и создайте замену. Оба ключа работают одновременно, что обеспечивает ротацию без простоя.
401 — Unauthorized
При отсутствии, неверном формате или отозванном ключе сервер вернёт:
{
"error": "Unauthorized"
}Формат запросов
Все эндпоинты принимают и возвращают application/json. Добавляйте заголовок Content-Type к POST и PATCH запросам:
curl https://api.worken.ru/bots \
-X POST \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{"name": "Бот поддержки"}'Формат ответов
Успешные ответы возвращают статус 2xx с JSON-телом. Ошибочные — 4xx или 5xx:
// Тело ошибки — одинаково для всех эндпоинтов
type ErrorResponse = {
error: string
message?: string
}Лимиты запросов
| Тариф | Запросов в минуту |
|---|---|
| Free | 60 |
| Starter | 300 |
| Pro | 600 |
| Enterprise | без ограничений |
При превышении лимита возвращается 429 Too Many Requests с заголовком Retry-After, указывающим время до следующей попытки.
Пагинация
List-эндпоинты принимают параметры limit и offset:
GET /threads?limit=20&offset=40На эндпоинте /threads доступна курсорная пагинация через параметр cursor для обработки потоков данных в реальном времени.
Версионирование
API находится в версии 1. О критических изменениях будет сообщено в журнале изменений не менее чем за 60 дней.
