superdocs-app · Schema

JobResponse

Status and details of an async job.

AIDocument EditingREST APIMCPSaaS

Properties

Name Type Description
job_id string Unique job identifier. Use this to poll for status updates.
organization_id object Organization that owns this job (null for user jobs).
user_id object User that owns this job (null for organization jobs).
session_id string Session associated with this job.
job_type string Type of job: 'chat' or 'attachment_processing'.
status string Current status: 'pending', 'in_progress', 'awaiting_approval', 'completed', 'failed', or 'cancelled'.
created_at string ISO 8601 timestamp when the job was created.
updated_at string ISO 8601 timestamp of the last status change.
progress integer Progress percentage (0-100).
result object Job output. Present when status is 'completed'. Contains AI response and document changes for chat jobs.
error object Error message. Present when status is 'failed'.
metadata object Job metadata and context. Contains pending_changes when status is 'awaiting_approval'.
View JSON Schema on GitHub

JSON Schema

superdocs-app-job-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/superdocs-app/json-schema/superdocs-app-job-response-schema.json",
  "title": "JobResponse",
  "description": "Status and details of an async job.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/superdocs-app-openapi.json#/components/schemas/JobResponse",
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id",
      "description": "Unique job identifier. Use this to poll for status updates."
    },
    "organization_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Organization Id",
      "description": "Organization that owns this job (null for user jobs)."
    },
    "user_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "User Id",
      "description": "User that owns this job (null for organization jobs)."
    },
    "session_id": {
      "type": "string",
      "title": "Session Id",
      "description": "Session associated with this job."
    },
    "job_type": {
      "type": "string",
      "title": "Job Type",
      "description": "Type of job: 'chat' or 'attachment_processing'."
    },
    "status": {
      "type": "string",
      "title": "Status",
      "description": "Current status: 'pending', 'in_progress', 'awaiting_approval', 'completed', 'failed', or 'cancelled'."
    },
    "created_at": {
      "type": "string",
      "title": "Created At",
      "description": "ISO 8601 timestamp when the job was created."
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At",
      "description": "ISO 8601 timestamp of the last status change."
    },
    "progress": {
      "type": "integer",
      "title": "Progress",
      "description": "Progress percentage (0-100)."
    },
    "result": {
      "anyOf": [
        {
          "$ref": "#/$defs/JobResult"
        },
        {
          "type": "null"
        }
      ],
      "description": "Job output. Present when status is 'completed'. Contains AI response and document changes for chat jobs."
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error",
      "description": "Error message. Present when status is 'failed'."
    },
    "metadata": {
      "anyOf": [
        {
          "$ref": "#/$defs/JobMetadata"
        },
        {
          "type": "null"
        }
      ],
      "description": "Job metadata and context. Contains pending_changes when status is 'awaiting_approval'."
    }
  },
  "type": "object",
  "required": [
    "job_id",
    "session_id",
    "job_type",
    "status",
    "created_at",
    "updated_at",
    "progress"
  ],
  "$defs": {
    "ActivePromotionInfo": {
      "properties": {
        "redemption_id": {
          "type": "string",
          "title": "Redemption Id",
          "description": "Unique identifier for this promotion grant."
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "Human-friendly promotion name (e.g., 'YC SUS India 2026 cohort')."
        },
        "ops_remaining": {
          "type": "integer",
          "title": "Ops Remaining",
          "description": "Operations still available in this promotion bucket."
        },
        "ops_granted": {
          "type": "integer",
          "title": "Ops Granted",
          "description": "Total operations originally granted by this redemption."
        },
        "expires_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Expires At",
          "description": "ISO 8601 expiry timestamp. Null if the credits never expire."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "redemption_id",
        "name",
        "ops_remaining",
        "ops_granted"
      ],
      "title": "ActivePromotionInfo",
      "description": "A single active (drawable) promotion belonging to the authenticated user."
    },
    "DocumentChanges": {
      "properties": {
        "updated_html": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Updated Html",
          "description": "Full updated document HTML with data-chunk-id attributes. Apply this to your editor to sync the document. Present in 'full' response mode (default); null in 'compact' mode."
        },
        "version_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Version Id",
          "description": "Document version identifier. Changes on every modification."
        },
        "changes_summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Changes Summary",
          "description": "Human-readable summary of what was changed."
        },
        "requires_approval": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Requires Approval",
          "description": "If true, changes need review via the approve endpoint before being applied."
        },
        "pending_changes": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/PendingChange"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pending Changes",
          "description": "Proposed changes awaiting approval. Present when requires_approval is true."
        },
        "changes": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Changes",
          "description": "History of individual changes applied during this request."
        },
        "chunk_diffs": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/PendingChange"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Chunk Diffs",
          "description": "Per-section before/after content for changes that were applied this turn. Present in 'compact' response mode (when updated_html is null) so the agent can verify what was modified without paying token cost for the full document. Same shape as pending_changes."
        },
        "concurrent_merges": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Concurrent Merges",
          "description": "Present ONLY when this request's edit collided with a concurrent edit: another session/chat committed a different change to the same section(s) while this request was processing, and the two were merged server-side. One entry per affected document: {document_id, durable_document_id, version, conflicting_sections}. When present, updated_html reflects the merged COMMITTED state — it may differ from the text this response describes; review the affected sections and re-apply anything that was superseded. Absent (null) on every non-conflicting request, including concurrent edits to DIFFERENT sections (those merge cleanly with no data loss and no notice)."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "title": "DocumentChanges",
      "description": "Document modifications produced by the AI assistant."
    },
    "JobMetadata": {
      "properties": {
        "filename": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Filename",
          "description": "Uploaded filename (attachment processing jobs)."
        },
        "file_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "File Size",
          "description": "File size in bytes (attachment processing jobs)."
        },
        "content_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Content Type",
          "description": "MIME type of uploaded file (attachment processing jobs)."
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Message",
          "description": "Original user message (chat jobs)."
        },
        "document_html_provided": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Document Html Provided",
          "description": "Whether document HTML was included in the request (chat jobs)."
        },
        "pending_changes": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/PendingChange"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pending Changes",
          "description": "Proposed changes awaiting approval. Present when job status is 'awaiting_approval'."
        },
        "intermediate_responses": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Intermediate Responses",
          "description": "Progress updates during processing. Each item has: type, content, sequence, timestamp."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "title": "JobMetadata",
      "description": "Job metadata. Contents vary by job type."
    },
    "JobResult": {
      "properties": {
        "response": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Response",
          "description": "AI response text (chat jobs)."
        },
        "session_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Session Id",
          "description": "Session identifier (chat jobs)."
        },
        "document_changes": {
          "anyOf": [
            {
              "$ref": "#/$defs/DocumentChanges"
            },
            {
              "type": "null"
            }
          ],
          "description": "Document modifications (chat jobs)."
        },
        "usage": {
          "anyOf": [
            {
              "$ref": "#/$defs/UsageInfo"
            },
            {
              "type": "null"
            }
          ],
          "description": "Usage tracking data (chat jobs)."
        },
        "attachment_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Attachment Id",
          "description": "Processed attachment identifier (attachment processing jobs)."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "title": "JobResult",
      "description": "Job result data. Structure depends on job type."
    },
    "PendingChange": {
      "properties": {
        "change_id": {
          "type": "string",
          "title": "Change Id",
          "description": "Unique identifier for this proposed change."
        },
        "operation": {
          "type": "string",
          "title": "Operation",
          "description": "Type of change: 'edit', 'create', or 'delete'."
        },
        "chunk_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Chunk Id",
          "description": "Target document section ID being modified or deleted."
        },
        "document_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Document Id",
          "description": "Identifier of the document (tab) this change applies to — lets multi-document integrators attribute each section diff to the right document."
        },
        "old_html": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Old Html",
          "description": "Previous HTML content of the section (for updates)."
        },
        "new_html": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "New Html",
          "description": "Proposed new HTML content (for updates and creates)."
        },
        "ai_explanation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ai Explanation",
          "description": "AI-generated explanation of why this change was proposed."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "change_id",
        "operation"
      ],
      "title": "PendingChange",
      "description": "A proposed document change awaiting user approval."
    },
    "UsageInfo": {
      "properties": {
        "monthly_used": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Monthly Used",
          "description": "Total operations used this billing cycle."
        },
        "monthly_limit": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Monthly Limit",
          "description": "Maximum operations allowed per cycle. -1 means unlimited."
        },
        "monthly_remaining": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Monthly Remaining",
          "description": "Operations remaining this cycle. -1 means unlimited."
        },
        "was_billable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Was Billable",
          "description": "Whether this request counted as a billable operation."
        },
        "ops_charged": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ops Charged",
          "description": "How many operations this request billed. A large multi-section edit can bill more than one (one per 25 sections edited), so monthly_used can increase by more than 1 between responses."
        },
        "quota_exhausted": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Quota Exhausted",
          "description": "True when you have reached your plan's operation limit with no remaining balance — the current request still completes, but further billable requests pause until you upgrade or your billing cycle resets."
        },
        "subscription_tier": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Subscription Tier",
          "description": "Current subscription tier: 'free', 'plus', 'pro', or 'enterprise'."
        },
        "bucket_used": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Bucket Used",
          "description": "Which bucket this operation drew from: 'tier' or 'promo'. Null for non-billable ops."
        },
        "redemption_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Redemption Id",
          "description": "Redemption grant this op drew from, when bucket_used is 'promo'."
        },
        "promotions": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ActivePromotionInfo"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Promotions",
          "description": "User's currently-active promotion grants, ordered by oldest-expiring first."
        }
      },
      "additionalProperties": true,
      "type": "object",
      "title": "UsageInfo",
      "description": "Operation usage data for the current billing cycle."
    }
  }
}

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/superdocs-app-job-response"
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.