Ir al contenido

Obtener un job

GET
/v1/jobs/{id}
curl --request GET \
--url https://api.iomza.com/v1/jobs/example \
--header 'Authorization: Bearer <token>'

Su estado y su progreso, actualizados en cada petición mientras corre; al terminar, sus resultados y los minutos facturados.

id
obligatorio
string

El job.

Tipo de contenidoapplication/json

Un job: su estado y progreso mientras corre, y después sus resultados. Las respuestas de la API y los webhooks lo llevan tal cual.

object
id
obligatorio
string
object
obligatorio
string
Valor permitido: job
status
obligatorio

Queued (esperando hueco en el plan) → processing → succeeded | failed | canceled.

string
Valores permitidos: queued processing succeeded failed canceled
progress
obligatorio
number
created_at
obligatorio
string formato: date-time
updated_at
obligatorio
string formato: date-time
dispatched_at
obligatorio
string | null formato: date-time
completed_at
obligatorio
string | null formato: date-time
metadata
obligatorio
object
key
propiedades adicionales
string
request
obligatorio

Los ajustes con los que se creó el job (normalizados, con los valores por defecto aplicados): de ahí parte un reintento o un duplicado.

object
outputs
obligatorio

Qué producir: al menos uno de streaming, mp4, mp3, posters o storyboard.

object
streaming

Streaming adaptativo: una versión por variante, con cada pista de audio y de subtítulos elegida.

object
formats

HLS y/o DASH; comparten sus segmentos.

Array<string>
por defecto: hls,dash >= 1 elementos <= 2 elementos
Valores permitidos: hls dash
variants
obligatorio
Array
>= 1 elementos <= 10 elementos
Uno o varios de:

240p, 360p, 480p, 720p, 1080p, 1440p, 2160p, o cualquier altura par de 144 a 2160 (“540p”, “576p”, “900p”): un cuadro 16:9 a su alrededor, con el bitrate máximo interpolado entre sus vecinas.

string
mp4

Un archivo MP4 por variante, con cada pista de audio elegida.

object
variants
obligatorio
Array
>= 1 elementos <= 10 elementos
Uno o varios de:

240p, 360p, 480p, 720p, 1080p, 1440p, 2160p, o cualquier altura par de 144 a 2160 (“540p”, “576p”, “900p”): un cuadro 16:9 a su alrededor, con el bitrate máximo interpolado entre sus vecinas.

string
mp3

Solo el audio, como archivo MP3.

object
bitrate

Bps.

integer
por defecto: 128000 >= 32000 <= 320000
posters

Imágenes JPEG de momentos concretos. Sin width ni height, al tamaño del video.

Array<object>
>= 1 elementos <= 10 elementos
object
at

Segundo del video.

number
0
width
integer
>= 16 <= 3840
height
integer
>= 16 <= 2160
storyboard

Sprites de miniaturas y un índice WebVTT, para la vista previa sobre la barra del reproductor. 160×90 por defecto, con la forma del video.

object
interval
obligatorio

Segundos entre miniaturas.

number
>= 1 <= 60
width
integer
>= 16 <= 640
height
integer
>= 16 <= 640
columns
integer
>= 1 <= 20
audio

Cada pista elegida sale como AAC estéreo (el sonido envolvente se mezcla a estéreo).

object
bitrate

Obliga a recodificar el audio en AAC a este bitrate (bps). Si se omite, el AAC-LC mono o estéreo se copia (más rápido, sin pérdida).

integer
>= 32000 <= 320000
tracks
Uno o varios de:
string
Valor permitido: all
subtitles

Subtítulos de texto, entregados como WebVTT y dentro del streaming. Los forzados se marcan y se nombran así en su propio idioma.

object
tracks
Uno o varios de:
string
Valor permitido: all
on_upscale

Para calidades mayores que la fuente: skip las omite (listadas en skipped del job); fail rechaza el job.

string
por defecto: skip
Valores permitidos: skip fail
quality_metrics

Puntuar la calidad percibida de cada variante (VMAF, 0–100) frente a la fuente, en muestras repartidas por el video. Añade unos segundos.

boolean
webhook_url

Enviar también aquí los eventos de este job (https, pública), además de los endpoints de la organización.

string formato: uri
metadata

Hasta 10 pares de texto tuyos, que vuelven en el job y en sus webhooks.

object
key
propiedades adicionales
string
<= 500 caracteres
retry_of
obligatorio

El job que este reintenta o duplica.

string | null
input
obligatorio
object
upload_id
obligatorio

La fuente, como subida (también cuando se trajo de una URL).

string
url
obligatorio

La URL desde la que se copió, si vino de una.

string | null
clip
obligatorio
Uno o varios de:
object
start
obligatorio
number
duration
number
source
obligatorio
Uno o varios de:
object
duration
obligatorio
number
width
obligatorio
number
height
obligatorio
number
frame_rate
obligatorio
number
output_frame_rate
obligatorio

Frecuencia de fotogramas constante de los resultados.

number | null
bitrate
obligatorio

Bitrate total, en bits por segundo.

number | null
interlaced
obligatorio
boolean
rotation
obligatorio
number | null
hdr
obligatorio
string | null
Valores permitidos: pq hlg
has_video
obligatorio
boolean
has_audio
obligatorio
boolean
video_codec
obligatorio
string | null
audio_codec
obligatorio
string | null
audio_channels
obligatorio
number | null
audio_tracks
obligatorio

Cada pista de audio y de subtítulos del archivo: de donde eligen audio.tracks / subtitles.tracks.

Array<object>

Una pista de audio de una fuente.

object
index
obligatorio
number
language
obligatorio

Tal como viene etiquetado en el archivo (normalmente ISO 639-2: “spa”, “eng”); null si no tiene etiqueta.

string | null
title
obligatorio
string | null
codec
obligatorio
string
channels
obligatorio
number
default
obligatorio
boolean
atmos
obligatorio
boolean
bitrate
obligatorio

Bits por segundo; null si el archivo no lo indica.

number | null
subtitle_tracks
obligatorio
Array<object>

Una pista de subtítulos de una fuente.

object
index
obligatorio
number
language
obligatorio
string | null
title
obligatorio
string | null
codec
obligatorio
string
default
obligatorio
boolean
forced
obligatorio
boolean
convertible
obligatorio

Los subtítulos de texto se convierten a WebVTT; los de imagen (PGS, DVD), no.

boolean
duration
obligatorio

Segundos procesados (el clip, o la fuente entera).

number | null
tasks
obligatorio

Todo lo que se está produciendo, cada cosa con su estado y su progreso.

Array<object>

Una cosa que produce un job, con su estado, su progreso y sus tiempos.

object
type
obligatorio
string
Valores permitidos: analysis mp3 storyboard poster import upload video mp4 audio subtitles streaming
resolution

Tareas video y mp4: la calidad (1080p, o una altura personalizada como 540p).

string
index

Tareas poster y storyboard: su posición en la lista de la petición.

number
mode

Tareas audio: copiado de la fuente tal cual (sin pérdida de calidad), o recodificado a AAC.

string
Valores permitidos: copy encode
formats

Tarea streaming: los manifiestos escritos sobre los segmentos compartidos.

Array<string>
Valores permitidos: hls dash
track

Tareas audio: qué pista de salida (idioma) es, y su idioma y nombre tal como los muestran los reproductores.

number
language
string
name
string
count

Tarea subtitles: cuántas pistas de subtítulos se están produciendo.

number
bytes

Tareas import y upload: bytes recibidos hasta ahora, y el tamaño del archivo cuando se conoce.

number
total_bytes
number
status
obligatorio
string
Valores permitidos: pending running done stopped
progress
obligatorio

0–100; null mientras corre sin un progreso medible.

number | null
started_at
obligatorio
string | null formato: date-time
completed_at
obligatorio
string | null formato: date-time
timing
obligatorio

Cuánto tardó cada parte de un job, y cuándo empezó y terminó cada etapa.

object
queued_seconds
obligatorio

Esperando hueco en la concurrencia del plan.

number | null
import_seconds
obligatorio

Copiando una fuente dada por URL (antes de procesar; no cuenta en processing_seconds).

number | null
processing_seconds
obligatorio

Desde el inicio del análisis hasta que los resultados están listos (sin la subida ni la cola). Un archivo procesado mientras aún se subía cuenta desde el final de la subida.

number | null
speed
obligatorio

Segundos de contenido por segundo de proceso (p. ej. 30 = 30× tiempo real).

number | null
stages
obligatorio
object
analysis_seconds
obligatorio
number | null
encoding_seconds
obligatorio
number | null
assembly_seconds
obligatorio
number | null
timeline
obligatorio

Cuándo empezó y terminó cada etapa (ISO 8601, null hasta que ocurre), para dibujarlas en un mismo eje de tiempo: con un archivo procesado mientras llega, el análisis y la transcodificación se solapan con la subida.

object
created_at
obligatorio
string formato: date-time
dispatched_at
obligatorio
string | null formato: date-time
import_started_at
obligatorio
string | null formato: date-time
imported_at
obligatorio
string | null formato: date-time
analysis_started_at
obligatorio
string | null formato: date-time
analyzed_at
obligatorio
string | null formato: date-time
encoded_at
obligatorio
string | null formato: date-time
completed_at
obligatorio
string | null formato: date-time
adjustments
obligatorio

Correcciones aplicadas a la fuente para que los resultados se reproduzcan en todas partes.

Array
Uno o varios de:
object
code
obligatorio
string
Valores permitidos: deinterlaced anamorphic_corrected
billed_minutes
obligatorio
Uno o varios de:
object
audio
number
sd
number
hd
number
uhd
number
outputs
obligatorio
Uno o varios de:

size_bytes en cada resultado: lo que pesa publicado (null en jobs terminados antes de que se midieran los tamaños). Streaming: la carpeta entera, cada variante su video, audio_size_bytes el audio que comparten todas (HLS y DASH usan los mismos segmentos, contados una vez).

object
streaming
obligatorio
Uno o varios de:
object
hls_url
obligatorio
string | null
dash_url
obligatorio
string | null
variants
obligatorio
Array<object>
object
size_bytes
obligatorio
number | null
resolution
obligatorio
string
width
obligatorio
number
height
obligatorio
number
size_bytes
obligatorio
number | null
audio_size_bytes
obligatorio
number | null
audio_tracks
obligatorio

Idiomas de los resultados de streaming y MP4 (ISO 639-2), con el predeterminado marcado.

Array<object>
object
language
obligatorio
string
name
obligatorio
string
default
obligatorio
boolean
subtitles
obligatorio

Archivos WebVTT, también listados en los manifiestos del streaming.

Array<object>
object
language
obligatorio
string
name
obligatorio
string
forced
obligatorio
boolean
url
obligatorio
string
size_bytes
obligatorio
number | null
mp4
obligatorio
Array<object>
object
url
obligatorio
string
size_bytes
obligatorio
number | null
resolution
obligatorio
string
width
obligatorio
number
height
obligatorio
number
mp3
obligatorio
Uno o varios de:
object
url
obligatorio
string
size_bytes
obligatorio
number | null
posters
obligatorio
Array<object>
object
url
obligatorio
string
size_bytes
obligatorio
number | null
storyboard
obligatorio
Uno o varios de:
object
image_url
obligatorio
string
image_urls
obligatorio
Array<string>
vtt_url
obligatorio
string
size_bytes
obligatorio
number | null
quality
obligatorio
Uno o varios de:
object
metric
obligatorio
string
Valor permitido: vmaf
model
obligatorio
string
variants
obligatorio
Array<object>
object
resolution
obligatorio
string
vmaf
obligatorio
number
vmaf_min
obligatorio
number
sampled_seconds
obligatorio
number
total_size_bytes
obligatorio

Todo lo publicado del job, y el original del que se hizo.

number | null
source_size_bytes
obligatorio
number | null
skipped
obligatorio
Array<object>
object
resolution
obligatorio
string
reason
obligatorio
string
Valor permitido: upscale
skipped_tracks
obligatorio

Pistas de audio o subtítulos pedidas que quedaron fuera: not_found (elección opcional), image_subtitles (no convertibles a WebVTT), too_many.

Array<object>

Una pista pedida que no salió, y por qué.

object
type
obligatorio
string
Valores permitidos: audio subtitle
index
number
language
string
reason
obligatorio
string
Valores permitidos: not_found image_subtitles too_many
error
obligatorio
Uno o varios de:
object
code
obligatorio
string
category
obligatorio
string
Valores permitidos: source request internal
retryable
obligatorio
boolean
message
obligatorio
string
deleted
obligatorio
boolean

Ejemplo

{
"object": "job",
"status": "queued",
"request": {
"outputs": {
"streaming": {
"formats": [
"hls",
"dash"
],
"variants": [
{
"codec": "h264",
"rate_control": "vbr",
"preset": "ultrafast",
"profile": "baseline",
"fit": "contain",
"rotate": 0,
"flip": "horizontal",
"watermark": {
"position": "topleft"
}
}
]
},
"mp4": {
"variants": [
{
"codec": "h264",
"rate_control": "vbr",
"preset": "ultrafast",
"profile": "baseline",
"fit": "contain",
"rotate": 0,
"flip": "horizontal",
"watermark": {
"position": "topleft"
},
"audio": true
}
]
},
"mp3": {
"bitrate": 128000
},
"posters": [
{
"at": 0
}
]
},
"audio": {
"tracks": "all"
},
"subtitles": {
"tracks": "all"
},
"on_upscale": "skip",
"quality_metrics": false,
"metadata": {
"video_id": "123"
}
},
"source": {
"hdr": "pq"
},
"tasks": [
{
"type": "analysis",
"mode": "copy",
"formats": [
"hls"
],
"status": "pending"
}
],
"adjustments": [
{
"code": "deinterlaced"
}
],
"outputs": {
"quality": {
"metric": "vmaf"
}
},
"skipped": [
{
"reason": "upscale"
}
],
"skipped_tracks": [
{
"type": "audio",
"reason": "not_found"
}
],
"error": {
"category": "source"
}
}

La API key falta, no es válida o está revocada.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

Credenciales válidas que no pueden hacer esto (forbidden), tu plan no incluye el módulo al que pertenece la ruta (module_not_in_plan), o tu organización está suspendida (organization_suspended).

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

No existe en tu organización.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

Demasiadas peticiones: espera y reintenta. Lo responde la pasarela, así que el cuerpo puede ser distinto.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

Nuestro: reintenta, y avísanos si persiste.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

No disponible por un momento: reintenta en unos segundos.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}