Пакетное создание задач
Создаёт до 30 задач за один запрос. Каждая задача обрабатывается независимо — сбой одной не влияет на остальные. Результат содержит статус каждой задачи и общую сводку.
Authorization
AuthorizationRequiredBearer <token>API ключ для аутентификации. Передавайте в заголовке Authorization: Bearer sk-...
In: header
Request Body
application/jsonRequiredtasksRequiredarray<object>Массив задач (каждый элемент — тело POST /tasks)
Response Body
Batch создан
successbooleandataobjectОшибка валидации запроса. Тело запроса не соответствует схеме или содержит невалидные значения.
Поле errors содержит детализацию по каждому невалидному полю.
successRequiredbooleanerrorRequiredobjecterrorsarray<object>Детализация ошибок валидации (при code=VALIDATION_ERROR)
Ошибка аутентификации.
| Код | Причина | Что делать |
|---|---|---|
MISSING_API_KEY | Заголовок Authorization отсутствует | Добавьте Authorization: Bearer sk-... |
INVALID_AUTH_FORMAT | Неверный формат заголовка | Используйте формат Bearer sk-... |
INVALID_API_KEY | Ключ не найден в системе | Проверьте ключ в личном кабинете |
API_KEY_INACTIVE | Ключ деактивирован | Активируйте ключ в личном кабинете |
API_KEY_EXPIRED | Срок действия ключа истёк | Создайте новый ключ |
successRequiredbooleanerrorRequiredobjecterrorsarray<object>Детализация ошибок валидации (при code=VALIDATION_ERROR)
Недостаточно средств на балансе для выполнения операции. Пополните баланс в личном кабинете.
successRequiredbooleanerrorRequiredobjecterrorsarray<object>Детализация ошибок валидации (при code=VALIDATION_ERROR)
Превышен лимит запросов для вашего тарифа. Повторите запрос через время, указанное в заголовке Retry-After.
Лимиты зависят от тарифа (см. раздел Тарифы в личном кабинете).
successRequiredbooleanerrorRequiredobjecterrorsarray<object>Детализация ошибок валидации (при code=VALIDATION_ERROR)
curl -X POST "/api/v1/tasks/batch" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"url": "https://example.com/file1.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
],
"options": {
"diarization": true
}
},
{
"name": "llm",
"depends_on": [
"transcribe"
]
}
]
},
{
"url": "https://example.com/file2.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
]
}
]
}
]
}'const body = JSON.stringify({
"tasks": [
{
"url": "https://example.com/file1.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
],
"options": {
"diarization": true
}
},
{
"name": "llm",
"depends_on": [
"transcribe"
]
}
]
},
{
"url": "https://example.com/file2.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
]
}
]
}
]
})
fetch("/api/v1/tasks/batch", {
headers: {
"Authorization": "Bearer <token>"
},
body
})package main
import (
"fmt"
"net/http"
"io/ioutil"
"strings"
)
func main() {
url := "/api/v1/tasks/batch"
body := strings.NewReader(`{
"tasks": [
{
"url": "https://example.com/file1.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
],
"options": {
"diarization": true
}
},
{
"name": "llm",
"depends_on": [
"transcribe"
]
}
]
},
{
"url": "https://example.com/file2.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
]
}
]
}
]
}`)
req, _ := http.NewRequest("POST", url, body)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}import requests
url = "/api/v1/tasks/batch"
body = {
"tasks": [
{
"url": "https://example.com/file1.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
],
"options": {
"diarization": true
}
},
{
"name": "llm",
"depends_on": [
"transcribe"
]
}
]
},
{
"url": "https://example.com/file2.mp3",
"webhook_url": "https://example.com/webhook",
"steps": [
{
"name": "fetch",
"depends_on": []
},
{
"name": "transcode",
"depends_on": [
"fetch"
]
},
{
"name": "transcribe",
"depends_on": [
"transcode"
]
}
]
}
]
}
response = requests.request("POST", url, json = body, headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
})
print(response.text){
"success": true,
"data": {
"results": [
{
"index": 0,
"success": true,
"data": {
"id": "uuid-1",
"status": "pending"
}
},
{
"index": 1,
"success": true,
"data": {
"id": "uuid-2",
"status": "pending"
}
}
],
"summary": {
"total": 2,
"succeeded": 2,
"failed": 0
}
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request body"
},
"errors": [
{
"field": "url",
"message": "Укажите url или input"
}
]
}{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "API key is required. Pass it in Authorization header: Bearer sk-..."
}
}{
"success": false,
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Недостаточно средств на балансе"
}
}{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Try again in 12 seconds"
}
}