{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hermoso-ai/json-schema/hermoso-ai-job-schema.json",
  "title": "Job",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/app_hermoso_ai_rest.json#/components/schemas/Job",
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "job"
      ]
    },
    "id": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "description": "What kind of work it is: video, stitch, avatar, templatead, upscale, and so on. This set MAY GROW."
    },
    "status": {
      "type": "string",
      "description": "queued, running, done or error. `done` and `error` are final. This enum MAY GROW: keep polling on a value you have not seen."
    },
    "progress": {
      "type": "number",
      "description": "0 to 1, when the worker reports it."
    },
    "label": {
      "type": [
        "string",
        "null"
      ]
    },
    "brand_id": {
      "type": "string",
      "description": "The profile that started the job."
    },
    "created_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO-8601."
    },
    "updated_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO-8601. For a finished job, when it finished."
    },
    "run_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO-8601, for work scheduled to start later; null for work that starts immediately."
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The finished file, once `status` is `done` and the job produced one. Always an absolute, publicly reachable URL."
    },
    "poster_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "A still for a finished video, when there is one."
    },
    "model": {
      "type": [
        "string",
        "null"
      ],
      "description": "The model that rendered it."
    },
    "credits_used": {
      "type": [
        "number",
        "null"
      ]
    },
    "error_message": {
      "type": [
        "string",
        "null"
      ],
      "description": "Why it failed, when `status` is `error`. Named `error_message` so it can never be mistaken for this API’s error envelope."
    },
    "cancelled": {
      "type": "boolean",
      "description": "True when the job was stopped by `POST /v1/jobs/{id}/cancel` before it reached a model. Its `status` is `error` and nothing was charged."
    },
    "result": {
      "type": [
        "object",
        "null"
      ],
      "description": "The worker’s full result. PASSTHROUGH TIER: its shape is the job type’s own and improves with it, like a tool’s `data`. Build on the fields above; read this for detail."
    },
    "poll": {
      "type": "string",
      "description": "This job’s own path."
    }
  }
}