LLM-Monster API
LLM-Monster предоставляет OpenAI-совместимое API для работы через стандартные SDK OpenAI и прямые HTTP-запросы.
Base URL
Для работы через OpenAI SDK используйте следующий base URL:
https://api.llm-monster.pro/v1
Во всех рабочих примерах ниже используется идентификатор модели default. Он указывает на актуальную основную модель, доступную в сервисе для клиентских интеграций.
Авторизация
Все публичные API-запросы требуют Bearer-токен.
Authorization: Bearer YOUR_API_KEY
Быстрый старт
Ниже приведены базовые примеры подключения через cURL, Python, JavaScript и Go.
curl https://api.llm-monster.pro/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "default",
"messages": [
{"role": "user", "content": "Reply in one line."}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.llm-monster.pro/v1",
)
response = client.chat.completions.create(
model="default",
messages=[
{"role": "user", "content": "Reply in one line."}
],
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.LLM_MONSTER_API_KEY,
baseURL: "https://api.llm-monster.pro/v1",
});
const response = await client.chat.completions.create({
model: "default",
messages: [
{ role: "user", content: "Reply in one line." }
],
});
console.log(response.choices[0].message.content);
package main
import (
"context"
"fmt"
openai "github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey("YOUR_API_KEY"),
option.WithBaseURL("https://api.llm-monster.pro/v1"),
)
resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "default",
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Reply in one line."),
},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}
Эндпоинты
Ниже перечислены основные клиентские маршруты OpenAI-совместимого API LLM-Monster.
| Method | Path | Назначение | Вход | Выход |
|---|---|---|---|---|
| GET | / |
Информация о версии API | Без body | Служебный объект с базовой информацией |
| GET | /models |
Список доступных идентификаторов и совместимых маршрутов | Без body | Список моделей в формате OpenAI |
| POST | /chat/completions |
Генерация ответов в формате Chat Completions | JSON: model, messages, options | Ответ в формате OpenAI Chat Completions |
| POST | /responses |
Responses API | JSON: model, input, options | OpenAI-style response object |
| POST | /embeddings |
Получение embedding-векторов | JSON: model, input | Массив embedding-векторов |
| POST | /images/generations |
Генерация изображений | JSON: model, prompt, size | Ссылки или base64-данные |
| POST | /audio/speech |
Text-to-speech | JSON: model, voice, input | Аудиофайл |
| POST | /audio/transcriptions |
Speech-to-text | Multipart: file, model | Текст транскрипции |
| POST | /moderations |
Проверка контента | JSON: model, input | Результат модерации |
| POST | /rerank |
Реранжирование документов | JSON: model, query, documents | Отсортированный список результатов |
GET /
Возвращает базовую информацию о доступности API v1.
curl https://api.llm-monster.pro/v1 \
-H "Authorization: Bearer YOUR_API_KEY"
{
"object": "status",
"ok": true,
"version": "v1"
}
GET /models
Возвращает список идентификаторов, доступных по текущему API-ключу. Для клиентских интеграций рекомендуется использовать model=default, а /models — как технический справочник.
curl https://api.llm-monster.pro/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.llm-monster.pro/v1",
)
models = client.models.list()
for model in models.data:
print(model.id)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.LLM_MONSTER_API_KEY,
baseURL: "https://api.llm-monster.pro/v1",
});
const models = await client.models.list();
console.log(models.data.map((item) => item.id));
{
"object": "list",
"data": [
{
"id": "default",
"object": "model",
"created": 1710000000,
"owned_by": "llm-monster"
}
]
}
POST /chat/completions
Основной OpenAI-совместимый маршрут для chat completions.
curl https://api.llm-monster.pro/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "default",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Give a short description of the API."}
],
"temperature": 0.2,
"max_tokens": 180
}'
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.llm-monster.pro/v1",
)
response = client.chat.completions.create(
model="default",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Give a short description of the API."}
],
temperature=0.2,
max_tokens=180,
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.LLM_MONSTER_API_KEY,
baseURL: "https://api.llm-monster.pro/v1",
});
const response = await client.chat.completions.create({
model: "default",
messages: [
{ role: "system", content: "You are a concise assistant." },
{ role: "user", content: "Give a short description of the API." }
],
temperature: 0.2,
max_tokens: 180
});
console.log(response.choices[0].message.content);
{
"id": "chatcmpl_abc123",
"object": "chat.completion",
"created": 1710000000,
"model": "default",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The API lets you connect models through one consistent format and use them directly in code."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 42,
"completion_tokens": 18,
"total_tokens": 60
}
}
POST /responses
OpenAI Responses API для сценариев, где удобнее работать через input, а не через массив messages. Для обычной интеграции здесь также рекомендуется model=default.
curl https://api.llm-monster.pro/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "default",
"input": "Briefly explain what an OpenAI-compatible API is."
}'
{
"id": "resp_abc123",
"object": "response",
"status": "completed",
"model": "default",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "It is an API that accepts requests in the same format used by the OpenAI ecosystem."
}
]
}
],
"usage": {
"input_tokens": 16,
"output_tokens": 18,
"total_tokens": 34
}
}
POST /embeddings
Возвращает embedding-векторы для текста или массива текстов.
curl https://api.llm-monster.pro/v1/embeddings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_EMBEDDING_MODEL",
"input": "LLM-Monster API documentation"
}'
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.llm-monster.pro/v1",
)
response = client.embeddings.create(
model="YOUR_EMBEDDING_MODEL",
input="LLM-Monster API documentation",
)
vector = response.data[0].embedding
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.LLM_MONSTER_API_KEY,
baseURL: "https://api.llm-monster.pro/v1",
});
const response = await client.embeddings.create({
model: "YOUR_EMBEDDING_MODEL",
input: "LLM-Monster API documentation"
});
console.log(response.data[0].embedding);
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0123, -0.0041, 0.1874]
}
],
"model": "YOUR_EMBEDDING_MODEL",
"usage": {
"prompt_tokens": 6,
"total_tokens": 6
}
}
POST /images/generations
Генерация изображений по текстовому prompt в OpenAI-совместимом формате.
curl https://api.llm-monster.pro/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_IMAGE_MODEL",
"prompt": "Small green cartoon monster holding an API key",
"size": "1024x1024"
}'
{
"created": 1710000000,
"data": [
{
"url": "https://cdn.example.com/generated/monster-1.png"
}
]
}
POST /audio/speech
Text-to-speech endpoint. Возвращает бинарный аудиопоток.
curl https://api.llm-monster.pro/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_TTS_MODEL",
"voice": "alloy",
"input": "Hello. This is a text-to-speech test."
}' \
--output speech.mp3
POST /audio/transcriptions
Speech-to-text endpoint. Принимает multipart/form-data.
curl https://api.llm-monster.pro/v1/audio/transcriptions \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@sample.wav" \
-F "model=YOUR_STT_MODEL"
{
"text": "This is a sample transcription result."
}
POST /moderations
Проверяет входной контент и возвращает структурированный результат модерации.
curl https://api.llm-monster.pro/v1/moderations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODERATION_MODEL",
"input": "Example content to review"
}'
{
"id": "modr_abc123",
"model": "YOUR_MODERATION_MODEL",
"results": [
{
"flagged": false,
"categories": {
"violence": false,
"self-harm": false,
"sexual": false
}
}
]
}
POST /rerank
Реранжирует документы по отношению к запросу. Полезно для search/rag-сценариев.
curl https://api.llm-monster.pro/v1/rerank \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_RERANK_MODEL",
"query": "openai compatible api",
"documents": [
"API for embeddings and chat",
"Payment information page",
"Audio transcription endpoint"
],
"top_n": 2
}'
{
"results": [
{
"index": 0,
"relevance_score": 0.9821
},
{
"index": 2,
"relevance_score": 0.7414
}
]
}
Ошибки и коды ответа
API использует стандартные HTTP-коды и JSON-объект ошибки для большинства неуспешных запросов.
| HTTP | Когда возникает | Что проверить |
|---|---|---|
200 |
Запрос выполнен успешно | Ответ модели, список моделей или файл |
400 |
Невалидный request body | Поля model, messages, формат JSON или multipart |
401 |
Нет токена или токен невалиден | Заголовок Authorization |
404 |
Маршрут или модель недоступны | Путь запроса и model |
429 |
Сработало ограничение по rate limit | Повторить запрос позже или снизить интенсивность |
5xx |
Проблема на стороне API или провайдера | Повторить запрос и логировать request id |
{
"error": {
"message": "Invalid API key",
"type": "authentication_error",
"code": "invalid_api_key"
}
}