slideforge-dev · Schema

JobStatus

GET /v1/jobs/{id} response. Status is one of: queued, generating, executing, rendering, complete, partial, failed. `partial` is deck-only — set when some child slides succeeded and at least one failed. The deck PPTX still contains the successful slides; agents that previously trusted `status == "complete"` must now also handle `partial` (and read `failed_slides` to decide).

CompanyAIPresentationAPIMCP

Properties

Name Type Description
job_id string
name object
status string
current_iteration integer
max_iterations integer
current_score object
target_score number
pptx_url object
preview_url object
pdf_url object
final_score object
score_breakdown object
iterations object
cost_charged object
latency_ms object
strategy object
slides_completed object
slides_failed object
failed_slides object
quality_warnings object
error object
View JSON Schema on GitHub

JSON Schema

slideforge-dev-job-status-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/slideforge-dev/json-schema/slideforge-dev-job-status-schema.json",
  "title": "JobStatus",
  "description": "GET /v1/jobs/{id} response.\n\nStatus is one of: queued, generating, executing, rendering, complete,\npartial, failed. `partial` is deck-only — set when some child slides\nsucceeded and at least one failed. The deck PPTX still contains the\nsuccessful slides; agents that previously trusted `status == \"complete\"`\nmust now also handle `partial` (and read `failed_slides` to decide).",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/slideforge-dev-openapi.json#/components/schemas/JobStatus",
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name"
    },
    "status": {
      "type": "string",
      "title": "Status"
    },
    "current_iteration": {
      "type": "integer",
      "title": "Current Iteration",
      "default": 0
    },
    "max_iterations": {
      "type": "integer",
      "title": "Max Iterations",
      "default": 5
    },
    "current_score": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Current Score"
    },
    "target_score": {
      "type": "number",
      "title": "Target Score",
      "default": 8.5
    },
    "pptx_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pptx Url"
    },
    "preview_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Preview Url"
    },
    "pdf_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pdf Url"
    },
    "final_score": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Final Score"
    },
    "score_breakdown": {
      "anyOf": [
        {
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Score Breakdown"
    },
    "iterations": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Iterations"
    },
    "cost_charged": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cost Charged"
    },
    "latency_ms": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Latency Ms"
    },
    "strategy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Strategy"
    },
    "slides_completed": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Slides Completed"
    },
    "slides_failed": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Slides Failed"
    },
    "failed_slides": {
      "anyOf": [
        {
          "items": {
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Failed Slides"
    },
    "quality_warnings": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/QualityWarning"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quality Warnings"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error"
    }
  },
  "type": "object",
  "required": [
    "job_id",
    "status"
  ],
  "$defs": {
    "QualityWarning": {
      "properties": {
        "category": {
          "type": "string",
          "title": "Category"
        },
        "severity": {
          "type": "string",
          "title": "Severity"
        },
        "description": {
          "type": "string",
          "title": "Description"
        },
        "source": {
          "type": "string",
          "title": "Source",
          "default": "static_linter"
        },
        "location": {
          "anyOf": [
            {
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Location"
        }
      },
      "type": "object",
      "required": [
        "category",
        "severity",
        "description"
      ],
      "title": "QualityWarning",
      "description": "A single static-linter or visual-review finding (P3.2a, 2026-04-24).\n\nSurfaced on JobStatus.quality_warnings. Non-blocking — the job status\nstays `complete`/`partial`; quality_warnings is a separate signal an\nagent can read to decide whether to iterate.\n\nseverity:\n  - 'bug'        — real visual issue (text overlap, off-canvas, contrast\n                   fail, font outside legible range). MCP card surfaces\n                   a banner when any 'bug' entries exist.\n  - 'suggestion' — soft hint (high shape count, missing title zone,\n                   borderline font). Silent in the MCP card.\n\nsource:\n  - 'static_linter' — convergence/linter.py output (3.2a)\n  - 'vlm'           — Pixtral one-shot review (3.2b, future)\n  - 'report_linter' — convergence/quality/report_linter.py output"
    }
  }
}

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/slideforge-dev-job-status"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.