Создать задачу

Создаёт новую задачу обработки. Укажите `url` (ссылка на медиафайл) или `input` (текст), а также `steps` (ad-hoc шаги) или `pipeline_id` (сохранённый шаблон). Задача выполняется асинхронно. Статус и результат можно получить через `GET /tasks/{taskId}`, SSE-стрим `GET /tasks/{taskId}/events` или webhook.

POST
/tasks

Authorization

AuthorizationRequiredBearer <token>

API ключ для аутентификации. Передавайте в заголовке Authorization: Bearer sk-...

In: header

Request Body

application/jsonRequired
urlstring

Ссылка на медиафайл (аудио/видео). Обязательно, если не указан input

Format: "uri"
inputstring

Текст для обработки (до 100 000 символов). Обязательно, если не указан url

Maximum length: 100000
stepsarray<object>

Шаги обработки (ad-hoc). Обязательно, если не указан pipeline_id

pipeline_idstring

ID сохранённого шаблона пайплайна. Обязательно, если не указаны steps

Format: "uuid"
webhook_urlstring

URL для отправки результата по завершении задачи

Format: "uri"
ttlinteger

Время жизни данных результата в часах. 0 — удалить данные сразу после успешной доставки webhook

Default: 4Minimum: 0Maximum: 24
language_instring

Язык входных данных (ISO 639-1)

Default: "ru"Minimum length: 2Maximum length: 2
language_outstring

Язык результата (ISO 639-1)

Default: "ru"Minimum length: 2Maximum length: 2
templatestring

Название шаблона промпта для LLM (напр. meeting, interview)

Maximum length: 100
promptstring

Пользовательский промпт для LLM

Maximum length: 10000
filenamestring

Имя файла (передаётся в webhook и результат)

Maximum length: 500
send_intermediate_webhooksboolean

Зарезервировано. В текущей версии не поддерживается

Default: false
responseSchemaobject

JSON-схема для структурирования ответа LLM

metadataarray<object>

Пользовательские метаданные (до 50 элементов)

Response Body

Задача создана

successboolean
dataobject

Ошибка валидации запроса. Тело запроса не соответствует схеме или содержит невалидные значения.

Поле errors содержит детализацию по каждому невалидному полю.

successRequiredboolean
errorRequiredobject
errorsarray<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Срок действия ключа истёкСоздайте новый ключ
successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

Недостаточно средств на балансе для выполнения операции. Пополните баланс в личном кабинете.

successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

Шаблон пайплайна не найден. Убедитесь, что ID корректный и шаблон принадлежит вашему аккаунту (или является системным).

successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

Превышен лимит запросов для вашего тарифа. Повторите запрос через время, указанное в заголовке Retry-After.

Лимиты зависят от тарифа (см. раздел Тарифы в личном кабинете).

successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

Ошибка upstream-сервиса (Core API). Сервис обработки временно недоступен. Повторите запрос позже.

successRequiredboolean
errorRequiredobject
errorsarray<object>

Детализация ошибок валидации (при code=VALIDATION_ERROR)

curl -X POST "/api/v1/tasks" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/meeting.mp3",
    "webhook_url": "https://example.com/webhook",
    "language_in": "ru",
    "language_out": "ru",
    "template": "meeting",
    "steps": [
      {
        "name": "fetch",
        "depends_on": []
      },
      {
        "name": "transcode",
        "depends_on": [
          "fetch"
        ]
      },
      {
        "name": "transcribe",
        "depends_on": [
          "transcode"
        ],
        "options": {
          "diarization": true
        }
      },
      {
        "name": "llm",
        "depends_on": [
          "transcribe"
        ]
      }
    ]
  }'
const body = JSON.stringify({
  "url": "https://example.com/meeting.mp3",
  "webhook_url": "https://example.com/webhook",
  "language_in": "ru",
  "language_out": "ru",
  "template": "meeting",
  "steps": [
    {
      "name": "fetch",
      "depends_on": []
    },
    {
      "name": "transcode",
      "depends_on": [
        "fetch"
      ]
    },
    {
      "name": "transcribe",
      "depends_on": [
        "transcode"
      ],
      "options": {
        "diarization": true
      }
    },
    {
      "name": "llm",
      "depends_on": [
        "transcribe"
      ]
    }
  ]
})

fetch("/api/v1/tasks", {
  headers: {
    "Authorization": "Bearer <token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "/api/v1/tasks"
  body := strings.NewReader(`{
    "url": "https://example.com/meeting.mp3",
    "webhook_url": "https://example.com/webhook",
    "language_in": "ru",
    "language_out": "ru",
    "template": "meeting",
    "steps": [
      {
        "name": "fetch",
        "depends_on": []
      },
      {
        "name": "transcode",
        "depends_on": [
          "fetch"
        ]
      },
      {
        "name": "transcribe",
        "depends_on": [
          "transcode"
        ],
        "options": {
          "diarization": true
        }
      },
      {
        "name": "llm",
        "depends_on": [
          "transcribe"
        ]
      }
    ]
  }`)
  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"
body = {
  "url": "https://example.com/meeting.mp3",
  "webhook_url": "https://example.com/webhook",
  "language_in": "ru",
  "language_out": "ru",
  "template": "meeting",
  "steps": [
    {
      "name": "fetch",
      "depends_on": []
    },
    {
      "name": "transcode",
      "depends_on": [
        "fetch"
      ]
    },
    {
      "name": "transcribe",
      "depends_on": [
        "transcode"
      ],
      "options": {
        "diarization": true
      }
    },
    {
      "name": "llm",
      "depends_on": [
        "transcribe"
      ]
    }
  ]
}
response = requests.request("POST", url, json = body, headers = {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
})

print(response.text)
{
  "success": true,
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "status": "pending",
    "input": {},
    "output": {},
    "error": "string",
    "webhook_url": "string",
    "expires_at": "2019-08-24T14:15:22Z",
    "expired": true,
    "metadata": [
      {
        "key": "string",
        "value": "string"
      }
    ],
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "completed_at": "2019-08-24T14:15:22Z"
  }
}

{
  "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": "NOT_FOUND",
    "message": "Pipeline template not found"
  }
}
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 12 seconds"
  }
}
{
  "success": false,
  "error": {
    "code": "UPSTREAM_ERROR",
    "message": "Processing service is temporarily unavailable"
  }
}