Jobs
The Jobs screen lets you submit multimodal jobs (speech to text, diarization, text to speech, vision, image
generation and edit, video processing and generation, DLP on a media) and follow their status and cost. Portal path:
/multimodal/jobs. Developers and agents' owners use it to test a multimodal model before wiring it in an agent.
What the screen shows
The page title is Multimodal jobs. At the top, the Submit a job form has Kind (required), Model, Media id, Prompt, Text and Options (JSON, merged into the body), with its result panel. Only the fields the chosen kind reads are sent:
| Kind | Route | Fields sent |
|---|---|---|
stt | POST /v1/multimodal/stt | Model, Media id |
diarize | POST /v1/multimodal/diarize | Model, Media id |
tts | POST /v1/multimodal/tts | Model, Text |
vision | POST /v1/multimodal/vision | Model, Media id, Prompt |
images/generate | POST /v1/multimodal/images/generate | Model, Prompt |
images/edit | POST /v1/multimodal/images/edit | Model, Media id, Prompt |
video/process | POST /v1/multimodal/video/process | Media id |
video/generate | POST /v1/multimodal/video/generate | Model, Prompt |
dlp | POST /v1/multimodal/dlp | Media id, Text |
Under the form, the Jobs table shows Id, Operation, Adapter, Status, Estimated, Measured,
Created, with the filters Operation and Status (queued, running, succeeded, failed). A click on a
row opens the job.
Actions
| Button or action | What it does | API call | Roles |
|---|---|---|---|
| Run (Submit a job) | Submits the job of the chosen kind (see the table above) | POST /v1/multimodal/{kind} routes listed above | tenant_admin, developer, agent; any tenant user for dlp |
| Refresh icon, Filter | Reloads the jobs | GET /v1/multimodal/jobs | any tenant user |
| Click on a row | Opens the job with its result and costs | GET /v1/multimodal/jobs/{job_id} | any tenant user |
Roles
The portal hides no button. In services/control-plane/src/eai/domains/multimodal/__init__.py every generation route
calls require_roles with GENERATORS (tenant_admin, developer, agent); the dlp route and the job list need
only a tenant. The cost is estimated before the call and measured after it.
Typical tasks
Transcribe an audio file
-
Upload the audio. A speech job reads a stored media. Upload the file in Media library and copy its Id.
Expected result: an audio media in Library.
If it fails: see the Troubleshooting section of the media library.
-
Submit the job. Choose Kind
stt, paste the Media id, optionally a Model, then Run.Expected result: the job in the result panel and in the Jobs table with its Status.
If it fails:
unsupported_mediameans the media is not audio.
Generate an image
-
Write the prompt. The prompt goes through the DLP in block mode first. Choose Kind
images/generate, write the Prompt, add options such as the size in Options:{"n": 1, "size": "1024x1024"}Expected result: after Run, a job of the operation
image_generation.If it fails:
dlp_blockedlists the sensitive data types found in the prompt.
Follow the cost of the jobs
-
Filter the table. Choose Status
succeeded, then Filter.Expected result: the Estimated and Measured amounts of each job.
If it fails: an empty table means no job ended with this status.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
forbidden (403) with required_roles | You are not tenant_admin, developer or agent | Ask for the developer role |
invalid_request (400) with required media_id, content_base64 | The kind needs a media and Media id is empty | Fill Media id |
unsupported_media (422) | The media type does not fit the kind | Use an image, an audio or a video as expected |
parameter_unsupported (422) | An option is not read by this route or not supported by the provider | Remove the option from Options |
parameter_invalid (422) | For example min_speakers above max_speakers | Fix the values in Options |
dlp_blocked (422) | The prompt or the text holds blocked data | Remove the sensitive data |
invalid_request (400) with operations | Options asks for an unknown video operation | Use frames or audio |