Hermoso AI · Schema

Job

CompanyArtificial IntelligenceMarketingAdvertisingAutomation

Properties

Name Type Description
object string
id string
type string What kind of work it is: video, stitch, avatar, templatead, upscale, and so on. This set MAY GROW.
status string queued, running, done or error. `done` and `error` are final. This enum MAY GROW: keep polling on a value you have not seen.
progress number 0 to 1, when the worker reports it.
label stringnull
brand_id string The profile that started the job.
created_at stringnull ISO-8601.
updated_at stringnull ISO-8601. For a finished job, when it finished.
run_at stringnull ISO-8601, for work scheduled to start later; null for work that starts immediately.
url stringnull The finished file, once `status` is `done` and the job produced one. Always an absolute, publicly reachable URL.
poster_url stringnull A still for a finished video, when there is one.
model stringnull The model that rendered it.
credits_used numbernull
error_message stringnull Why it failed, when `status` is `error`. Named `error_message` so it can never be mistaken for this API’s error envelope.
cancelled boolean 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 objectnull 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 string This job’s own path.
View JSON Schema on GitHub

JSON Schema

hermoso-ai-job-schema.json Raw ↑
{
  "$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."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/hermoso-ai-job"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.