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).
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 |
JSON Schema
{
"$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.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/slideforge-dev-job-status"
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.