rendry-io · Schema

RenderJobStatus

CompanyImage RenderingPDF GenerationTemplate EngineAPIAI Integration

Properties

Name Type Description
job_id string
status string
result_url string Download URL through the API file proxy. New paid document attempt results require the same authenticated owner and use private/no-store caching; obsolete attempts are refused. Historical public rende
error string
created_at string
started_at string
completed_at string
format string Output format of the finished job: png | jpeg | webp | pdf | html.
warnings array Visible warnings from admission and the active worker; paid documents retain bounded per-source snapshots. warnings_omitted explains omitted findings. Compliance receipts use a protected typed field.
geometry object
geometry_error string Invalid or inconsistent recorded geometry; geometry is omitted. The completed result URL remains available. Do not infer a replacement transform from image dimensions.
page_previews array pdf only: the available pictures of the requested pages, up to 3 and free of extra charge. Empty while pending; page_preview_status explicitly names requested and missing pages. Pictures of an unfinis
page_preview_status object
webhook object Present only when the job was queued with a webhook_url: what became of calling it. The worker calls the webhook once the job is final (one retry after 2 s).
compliance object
text_fit object Paid documents return an exact-count bounded numeric summary. Historical raw arrays remain readable. Inline/image metrics retain details and wraps. Historical PDF/HTML arrays use the existing legacy s
text_fit_status string
text_fit_error string
warnings_omitted integer Exact findings omitted by the paid document count/encoded-byte policy, including oversized entries; replay does not increase this count.
warnings_status string
warnings_error string
diagnostics_policy object
print_receipt object
expires_at string Persisted server-owned artifact deadline.
delivery object
ai_content string Present only when the rendered output contains an owned AI image; the artifact carries composite AI-content metadata.
View JSON Schema on GitHub

JSON Schema

rendry-io-render-job-status-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/rendry-io/json-schema/rendry-io-render-job-status-schema.json",
  "title": "RenderJobStatus",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/rendry-io-openapi.json#/components/schemas/RenderJobStatus",
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "processing",
        "done",
        "error"
      ]
    },
    "result_url": {
      "type": "string",
      "description": "Download URL through the API file proxy. New paid document attempt results require the same authenticated owner and use private/no-store caching; obsolete attempts are refused. Historical public render links retain their existing policy."
    },
    "error": {
      "type": "string"
    },
    "created_at": {
      "type": "string"
    },
    "started_at": {
      "type": "string"
    },
    "completed_at": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "description": "Output format of the finished job: png | jpeg | webp | pdf | html."
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Visible warnings from admission and the active worker; paid documents retain bounded per-source snapshots. warnings_omitted explains omitted findings. Compliance receipts use a protected typed field."
    },
    "geometry": {
      "$ref": "#/$defs/RenderGeometry"
    },
    "geometry_error": {
      "type": "string",
      "description": "Invalid or inconsistent recorded geometry; geometry is omitted. The completed result URL remains available. Do not infer a replacement transform from image dimensions."
    },
    "page_previews": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PagePreview"
      },
      "description": "pdf only: the available pictures of the requested pages, up to 3 and free of extra charge. Empty while pending; page_preview_status explicitly names requested and missing pages. Pictures of an unfinished job are never advertised."
    },
    "page_preview_status": {
      "$ref": "#/$defs/PagePreviewStatus"
    },
    "webhook": {
      "type": "object",
      "description": "Present only when the job was queued with a webhook_url: what became of calling it. The worker calls the webhook once the job is final (one retry after 2 s).",
      "required": [
        "status"
      ],
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "delivered",
            "failed",
            "blocked"
          ],
          "description": "pending — not tried yet; delivered — the endpoint answered 2xx; failed — it could not be reached or did not answer 2xx; blocked — the address is not allowed (its name resolves to a private, loopback or link-local address, or a redirect led to one). Addresses that can be judged without DNS are refused at the door with invalid_webhook_url instead."
        },
        "reason": {
          "type": "string",
          "description": "Why, for failed and blocked. Never contains the webhook URL itself."
        }
      }
    },
    "compliance": {
      "$ref": "#/$defs/PDFComplianceReceipt"
    },
    "text_fit": {
      "oneOf": [
        {
          "$ref": "#/$defs/DocumentDiagnostics"
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/TextFit"
              },
              {
                "$ref": "#/$defs/LegacyCollapsedTextFit"
              }
            ]
          }
        }
      ],
      "description": "Paid documents return an exact-count bounded numeric summary. Historical raw arrays remain readable. Inline/image metrics retain details and wraps. Historical PDF/HTML arrays use the existing legacy summary without claiming prepared table/page provenance (text_fit_status: legacy)."
    },
    "text_fit_status": {
      "type": "string",
      "enum": [
        "pending",
        "unavailable",
        "invalid",
        "collapsed",
        "detailed",
        "legacy"
      ]
    },
    "text_fit_error": {
      "type": "string"
    },
    "warnings_omitted": {
      "type": "integer",
      "description": "Exact findings omitted by the paid document count/encoded-byte policy, including oversized entries; replay does not increase this count."
    },
    "warnings_status": {
      "type": "string",
      "enum": [
        "pending",
        "unavailable",
        "available",
        "invalid"
      ]
    },
    "warnings_error": {
      "type": "string"
    },
    "diagnostics_policy": {
      "$ref": "#/$defs/DiagnosticPolicy"
    },
    "print_receipt": {
      "$ref": "#/$defs/PDFPrintReceipt"
    },
    "expires_at": {
      "type": "string",
      "format": "date-time",
      "description": "Persisted server-owned artifact deadline."
    },
    "delivery": {
      "$ref": "#/$defs/DeliveryReceipt"
    },
    "ai_content": {
      "type": "string",
      "enum": [
        "composite"
      ],
      "description": "Present only when the rendered output contains an owned AI image; the artifact carries composite AI-content metadata."
    }
  },
  "$defs": {
    "DeliveryReceipt": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status"
      ],
      "description": "Present only when deliver_to was given. A delivery failure does not refund or change the render.",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "delivered",
            "failed"
          ]
        },
        "reason": {
          "type": "string",
          "enum": [
            "address",
            "transport",
            "http",
            "source",
            "render",
            "archive",
            "expired"
          ]
        },
        "http_status": {
          "type": "integer",
          "minimum": 100,
          "maximum": 599,
          "description": "Remote status code, only with reason http."
        },
        "notice": {
          "type": "string",
          "const": "The file remains available at Rendry; a delivery failure does not refund the render."
        }
      }
    },
    "DiagnosticPolicy": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer"
        },
        "max_bytes": {
          "type": "integer"
        },
        "max_entries": {
          "type": "integer"
        },
        "max_problem_locations": {
          "type": "integer"
        }
      }
    },
    "DiagnosticProblem": {
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/TextDiagnosticOrigin"
        },
        "fit": {
          "$ref": "#/$defs/TextFit"
        }
      }
    },
    "DocumentDiagnostics": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "enum": [
            1,
            2
          ]
        },
        "pages": {
          "type": "integer"
        },
        "measured": {
          "type": "integer"
        },
        "shrunk": {
          "type": "integer"
        },
        "overflowed": {
          "type": "integer"
        },
        "header_cells": {
          "type": "integer"
        },
        "problems": {
          "type": "integer"
        },
        "summaries": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TextDiagnosticSummary"
          }
        },
        "omitted_summaries": {
          "type": "integer"
        },
        "omitted_measurements": {
          "type": "integer"
        },
        "omitted_problem_locations": {
          "type": "integer"
        },
        "policy": {
          "$ref": "#/$defs/DiagnosticPolicy"
        }
      },
      "description": "Text diagnostics v1 for default-only origins; v2 when first/even origins occur. Policy.version matches. Warning envelopes remain v1. Readers accept both; older v1-only readers cannot interpret replacement masters."
    },
    "LegacyCollapsedTextFit": {
      "type": "object",
      "description": "Historical read-side summaries. These preserve repeat/page/table totals without claiming prepared document provenance.",
      "required": [
        "id"
      ],
      "anyOf": [
        {
          "required": [
            "collapsed_clones"
          ]
        },
        {
          "required": [
            "collapsed_pages"
          ]
        },
        {
          "required": [
            "collapsed_table_cells"
          ]
        }
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "worst": {
          "$ref": "#/$defs/TextFit"
        },
        "problem_cells": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TextFit"
          }
        },
        "note": {
          "type": "string"
        },
        "collapsed_clones": {
          "type": "boolean",
          "enum": [
            true
          ]
        },
        "collapsed_pages": {
          "type": "boolean",
          "enum": [
            true
          ]
        },
        "collapsed_table_cells": {
          "type": "boolean",
          "enum": [
            true
          ]
        },
        "rows": {
          "type": "integer"
        },
        "measured": {
          "type": "integer"
        },
        "worst_row": {
          "type": "integer"
        },
        "worst_page": {
          "type": "integer"
        },
        "cells": {
          "type": "integer"
        },
        "header_cells": {
          "type": "integer"
        },
        "shrunk": {
          "type": "integer"
        },
        "overflowed": {
          "type": "integer"
        },
        "shrunk_rows_more": {
          "type": "integer"
        },
        "overflowed_rows_more": {
          "type": "integer"
        },
        "problem_cells_more": {
          "type": "integer"
        },
        "shrunk_rows": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "overflowed_rows": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "shrunk_pages": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "overflowed_pages": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      }
    },
    "ListParagraph": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "rune_offset",
        "prefix_runes",
        "reserve_px",
        "continued",
        "rtl"
      ],
      "properties": {
        "rune_offset": {
          "type": "integer",
          "minimum": 0,
          "description": "Paragraph start in the same final parsed rune stream as wraps, including blank paragraphs."
        },
        "prefix_runes": {
          "type": "integer",
          "minimum": 0,
          "description": "Drawn marker/indent prefix length; zero for a midparagraph flow continuation."
        },
        "reserve_px": {
          "type": "number",
          "description": "Native physical continuation reserve in layout pixels: positive left, negative right, zero centered or unconstrained. Never infer RTL from this sign."
        },
        "continued": {
          "type": "boolean",
          "description": "Keeps an earlier paragraph marker reserve without drawing that marker again."
        },
        "rtl": {
          "type": "boolean",
          "description": "Original native resolved paragraph direction, including empty and continued paragraphs."
        }
      },
      "description": "Measured list paragraph geometry. Bind it and wraps to unchanged render inputs; ordinary non-list text omits this array. Literal list newlines normalize CRLF/CR to LF before formatting."
    },
    "PDFComplianceReceipt": {
      "type": "object",
      "required": [
        "mode",
        "sha256",
        "verapdf"
      ],
      "properties": {
        "mode": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "profile": {
          "type": "string"
        },
        "sha256": {
          "type": "string"
        },
        "invoice_sha256": {
          "type": "string"
        },
        "verapdf": {
          "type": "string"
        },
        "mustang": {
          "type": "string"
        }
      },
      "description": "Available only after successful upload. SHA-256 binds the exact final PDF bytes and, for facturx, actual embedded invoice bytes. Independent pinned validator versions; PDF/A-3b is explicitly selected. This does not claim PDF/UA, XRechnung or Peppol."
    },
    "PDFPrintPreflight": {
      "type": "object",
      "required": [
        "pages",
        "images",
        "shadings",
        "painted_streams",
        "raster_below_300_dpi"
      ],
      "properties": {
        "pages": {
          "type": "integer",
          "minimum": 0
        },
        "images": {
          "type": "integer",
          "minimum": 0
        },
        "shadings": {
          "type": "integer",
          "minimum": 0
        },
        "painted_streams": {
          "type": "integer",
          "minimum": 0
        },
        "raster_below_300_dpi": {
          "type": "integer",
          "minimum": 0
        },
        "minimum_dpi": {
          "type": "number",
          "minimum": 0
        }
      },
      "description": "Counts from independent inspection of the actual final CMYK PDF resource graph; effective raster placement resolution is checked against the product print DPI. Low resolution is reported, not silently upsampled."
    },
    "PDFPrintReceipt": {
      "type": "object",
      "required": [
        "version",
        "profile",
        "profile_sha256",
        "sha256",
        "color_space",
        "intent",
        "black_point_compensation",
        "preflight"
      ],
      "properties": {
        "version": {
          "type": "integer",
          "enum": [
            1
          ]
        },
        "profile": {
          "type": "string",
          "enum": [
            "aptec-offset-coated-linearctv-2025-v1"
          ]
        },
        "profile_sha256": {
          "type": "string",
          "enum": [
            "2a0a26387276046dc129d4330a7a45542b736c8640e3ec4cb74df809c5ccfb0e"
          ]
        },
        "sha256": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "color_space": {
          "type": "string",
          "enum": [
            "CMYK"
          ]
        },
        "intent": {
          "type": "string",
          "enum": [
            "relative-colorimetric"
          ]
        },
        "black_point_compensation": {
          "type": "boolean",
          "enum": [
            true
          ]
        },
        "preflight": {
          "$ref": "#/$defs/PDFPrintPreflight"
        }
      },
      "description": "Protected receipt bound to the exact uploaded and owner-downloadable final PDF bytes and immutable APTEC profile. Exposed only for the selected done attempt; omitted for ordinary/historical RGB results. This receipt makes no PDF/X certification claim."
    },
    "PagePreview": {
      "type": "object",
      "description": "One rasterised page of a finished pdf. A LINK, not base64: an HTTP client can fetch it, and inlining a courtesy picture would add hundreds of kilobytes to every pdf reply. Fetched exactly like result_url; capped on the long side like any preview.",
      "properties": {
        "page": {
          "type": "integer",
          "description": "1-based page number of the document."
        },
        "url": {
          "type": "string",
          "description": "URL of the stored picture (image/jpeg)."
        },
        "width": {
          "type": "integer",
          "description": "Pixel width of the picture as stored, not of the pdf page."
        },
        "height": {
          "type": "integer"
        }
      }
    },
    "PagePreviewStatus": {
      "type": "object",
      "required": [
        "status",
        "requested_pages",
        "available_pages",
        "missing_pages"
      ],
      "description": "The requested PDF page pictures and their current storage availability. pending means one or more pictures are unavailable now, including older jobs that never uploaded them; it does not promise a future upload. Re-read status to refresh without rendering or charging again.",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "ready"
          ]
        },
        "requested_pages": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "available_pages": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "missing_pages": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      }
    },
    "RenderGeometry": {
      "type": "object",
      "description": "Geometry of the successful render attempt, bound to job_id and attempt_id. Layout is the DSL coordinate space. Scale layout to pre_finish, map finish.source_rect to finish.destination_rect when present, then scale output to the actual displayed image. Without finish, pre_finish equals output. Display resizing never changes this report. Absent on legacy jobs or document results without raster geometry.",
      "required": [
        "version",
        "job_id",
        "attempt_id",
        "layout",
        "pre_finish",
        "output"
      ],
      "properties": {
        "version": {
          "type": "integer",
          "enum": [
            1
          ]
        },
        "job_id": {
          "type": "string",
          "minLength": 1
        },
        "attempt_id": {
          "type": "string",
          "minLength": 1
        },
        "layout": {
          "$ref": "#/$defs/RenderGeometrySize"
        },
        "pre_finish": {
          "$ref": "#/$defs/RenderGeometrySize"
        },
        "output": {
          "$ref": "#/$defs/RenderGeometrySize"
        },
        "finish": {
          "$ref": "#/$defs/RenderGeometryFinish"
        }
      }
    },
    "RenderGeometryFinish": {
      "type": "object",
      "description": "source_rect is in pre_finish; destination_rect is in output. These rectangles define the transform. source_bounds is diagnostic alpha in pre_finish; artwork_bounds and finished_bounds are diagnostic alpha in output. Alpha bounds never replace the transform.",
      "required": [
        "profile_id",
        "source_rect",
        "destination_rect",
        "source_bounds",
        "artwork_bounds",
        "finished_bounds"
      ],
      "properties": {
        "profile_id": {
          "type": "string",
          "minLength": 1
        },
        "source_rect": {
          "$ref": "#/$defs/RenderGeometryRect"
        },
        "destination_rect": {
          "$ref": "#/$defs/RenderGeometryRect"
        },
        "source_bounds": {
          "$ref": "#/$defs/RenderGeometryRect"
        },
        "artwork_bounds": {
          "$ref": "#/$defs/RenderGeometryRect"
        },
        "finished_bounds": {
          "$ref": "#/$defs/RenderGeometryRect"
        }
      }
    },
    "RenderGeometryRect": {
      "type": "object",
      "description": "Half-open integer pixel-edge rectangle. Transform rectangles have positive extents and are contained in their raster space. Diagnostic alpha bounds may be the all-zero rectangle for empty alpha.",
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "properties": {
        "x": {
          "type": "integer",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "minimum": 0
        },
        "width": {
          "type": "integer",
          "minimum": 0
        },
        "height": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "RenderGeometrySize": {
      "type": "object",
      "description": "Positive raster dimensions in pixels.",
      "required": [
        "width",
        "height"
      ],
      "properties": {
        "width": {
          "type": "integer",
          "minimum": 1
        },
        "height": {
          "type": "integer",
          "minimum": 1
        }
      }
    },
    "TextDiagnosticOrigin": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "Server-created prepared structural identity; independent of generated cell IDs."
        },
        "layer_id": {
          "type": "string",
          "description": "Safe authored layer identifier; values and paths are excluded."
        },
        "table": {
          "type": "boolean"
        },
        "master": {
          "type": "boolean"
        },
        "page": {
          "type": "integer",
          "description": "Final page, 1-based."
        },
        "row": {
          "type": "integer",
          "description": "Original body row, 1-based; header and footer row zero."
        },
        "column": {
          "type": "integer",
          "description": "Column, 1-based."
        },
        "header": {
          "type": "boolean"
        },
        "master_kind": {
          "type": "string",
          "enum": [
            "first",
            "even"
          ],
          "description": "Present for replacement-master origins in diagnostics v2; keys use master_first/N or master_even/N. Default-only diagnostics remain v1."
        },
        "footer": {
          "type": "boolean",
          "description": "True for the final table footer; row is zero and header is false."
        }
      }
    },
    "TextDiagnosticSummary": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "layer_id": {
          "type": "string"
        },
        "table": {
          "type": "boolean"
        },
        "master": {
          "type": "boolean"
        },
        "measured": {
          "type": "integer"
        },
        "shrunk": {
          "type": "integer"
        },
        "overflowed": {
          "type": "integer"
        },
        "header_cells": {
          "type": "integer"
        },
        "problems": {
          "type": "integer"
        },
        "worst": {
          "$ref": "#/$defs/DiagnosticProblem"
        },
        "problem_locations": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DiagnosticProblem"
          }
        },
        "omitted_problem_locations": {
          "type": "integer"
        },
        "master_kind": {
          "type": "string",
          "enum": [
            "first",
            "even"
          ],
          "description": "Present for replacement-master origins in diagnostics v2; keys use master_first/N or master_even/N. Default-only diagnostics remain v1."
        }
      }
    },
    "TextFit": {
      "type": "object",
      "description": "What the finished render MEASURED for one text layer. Every number is in DSL layout coordinates.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The measured layer's own id. This is why text_fit is a list: the entry names its layer, the list does not"
        },
        "plate": {
          "$ref": "#/$defs/TextPlateFit",
          "description": "Present only for an assembled text plate"
        },
        "rotation_origin": {
          "$ref": "#/$defs/TextRotationOrigin",
          "description": "Present for ordinary raster text with rotation or flips; native document text uses its own placement"
        },
        "raster_top": {
          "type": "integer",
          "description": "Where the raster image put the top of the text block under vertical_align center or bottom, in whole pixels below the layer's y; absent for top alignment, no box height, a plate, and PDF or HTML output"
        },
        "size": {
          "type": "integer",
          "description": "The size that was asked for"
        },
        "fitted_size": {
          "type": "integer",
          "description": "The size auto_fit settled on; equal to size when nothing shrank"
        },
        "text_w": {
          "type": "integer",
          "description": "Width of the rendered text mask"
        },
        "text_h": {
          "type": "integer",
          "description": "Height of the rendered text mask"
        },
        "box_w": {
          "type": "integer",
          "description": "Declared layer width; 0 means unconstrained"
        },
        "box_h": {
          "type": "integer",
          "description": "Declared layer height; 0 means unconstrained"
        },
        "lines": {
          "type": "integer",
          "description": "Lines after wrapping, not only explicit newlines"
        },
        "wraps": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Where the render broke the text for width: the rune offset, in the text as drawn (variables substituted, list markers and soft hyphens in place, rich_text ** pairs removed), at which each line begins because the line before it was full. A line an explicit newline starts is not listed; absent when nothing wrapped. The editor draws its lines at these offsets"
        },
        "kept_spaces": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Visible-rune offsets of whitespace replaced with non-breaking spaces by keep_last_words. Shares the wraps coordinate system; absent when no spaces changed. The editor applies these exact substitutions before painting."
        },
        "mask_x": {
          "type": "integer",
          "description": "mask_text placement inside a shape or image"
        },
        "mask_y": {
          "type": "integer"
        },
        "mask_w": {
          "type": "integer"
        },
        "mask_h": {
          "type": "integer"
        },
        "ink_top": {
          "type": "integer",
          "description": "Mask offset from the logical text box; a diagnostic, not an alignment source — Pango bounds can include empty rows"
        },
        "ink_left": {
          "type": "integer"
        },
        "fit_group": {
          "type": "string",
          "description": "The layer's fit_group name, present only for a member of one"
        },
        "size_alone": {
          "type": "integer",
          "description": "The size this member would have taken fitted BY ITSELF, before the group levelled. Present only for a member of a fit_group; a layer in no group reports fitted_size and nothing more"
        },
        "fit_group_size": {
          "type": "integer",
          "description": "The size the group settled on — the smallest size_alone among its members. A member whose own min_size is above it keeps min_size, so fitted_size can exceed fit_group_size. Present only for a member of a fit_group"
        },
        "origin": {
          "$ref": "#/$defs/TextDiagnosticOrigin"
        },
        "list_paragraphs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ListParagraph"
          },
          "description": "Native list geometry on the wraps rune coordinate system; includes blank/trailing paragraphs. Absent for ordinary non-list text."
        },
        "logical_h": {
          "type": "integer",
          "minimum": 1,
          "maximum": 2097151,
          "description": "Native logical block height for lists and clip_lines, including blank lines and fallback-font metrics; absent legacy measurements keep existing line-step behavior."
        },
        "clip_end": {
          "type": "integer",
          "minimum": 0,
          "description": "Exclusive rune endpoint in the final parsed/formatted source, present only when clip_lines removed a suffix. Zero keeps a leading blank line. Slice already parsed styled content before applying wraps/list_paragraphs; this is server observation, never authored DSL."
        },
        "lines_cut": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of complete native lines removed by clip_lines after full-source fitting. lines is the retained count. Absent when no lines were cut."
        }
      }
    },
    "TextPlateFit": {
      "type": "object",
      "description": "Actual unrotated text plate assembly in DSL pixels, before effects and output scaling. Text coordinates identify the logical text box, not tight glyph bounds.",
      "required": [
        "x",
        "y",
        "width",
        "height",
        "text_x",
        "text_y",
        "text_width"
      ],
      "properties": {
        "x": {
          "type": "integer",
          "description": "Plate left relative to the layer origin"
        },
        "y": {
          "type": "integer",
          "description": "Plate top relative to the layer origin"
        },
        "width": {
          "type": "integer",
          "description": "Assembled plate width after minimum size and circle sizing"
        },
        "height": {
          "type": "integer",
          "description": "Assembled plate height after minimum size and circle sizing"
        },
        "text_x": {
          "type": "integer",
          "description": "Logical text origin inside the plate, including stroke and bearing placement"
        },
        "text_y": {
          "type": "integer",
          "description": "Logical text origin inside the plate"
        },
        "text_width": {
          "type": "integer",
          "description": "Resolved advance or constrained wrap width"
        }
      }
    },
    "TextRotationOrigin": {
      "type": "object",
      "description": "Actual pre-transform assembly center of ordinary raster text relative to the layer origin, in DSL pixels. Half-pixel centers are preserved.",
      "required": [
        "x",
        "y"
      ],
      "properties": {
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        }
      }
    }
  }
}

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/rendry-io-render-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.