superdocs-app Jobs API

The jobs API from superdocs-app — 4 operation(s) for jobs.

Operations 4

GET /v1/jobs List your async chat jobs (in-progress, awaiting approval, completed, failed) #
GET /v1/jobs/{job_id} Get the status, partial results, and any pending changes for an async chat job #
POST /v1/jobs/{job_id}/cancel Cancel a pending or in-progress async chat job #
GET /v1/sessions/{session_id}/jobs List all async chat jobs for a specific session, most recent first #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/superdocs-app:superdocs-app-jobs-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

superdocs-app-jobs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 'Typebar API: Universal Document AI Jobs API'
  description: 'Typebar (formerly SuperDocs): AI-powered document editing with multi-tenant organization support'
  version: 2.0.0
servers:
- url: https://api.superdocs.app
tags:
- name: Jobs
paths:
  /v1/jobs:
    get:
      tags:
      - Jobs
      summary: List your async chat jobs (in-progress, awaiting approval, completed, failed)
      description: Returns jobs sorted by most recent, optionally filtered by status. Use to monitor long-running AI edits started via chat_async, see which jobs are paused waiting for human approval, or audit completed work. Each job tracks the chat that started it, the changes made, and any HITL decisions logged.
      operationId: list_jobs
      security:
      - HTTPBearer: []
      parameters:
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by job status
          title: Status
        description: Filter by job status
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          description: Maximum number of jobs to return
          default: 50
          title: Limit
        description: Maximum number of jobs to return
      - name: compact
        in: query
        required: false
        schema:
          type: boolean
          description: When true, omit each job's heavy result body + streamed intermediate events — returns just status/progress/ids/timestamps. Recommended for agents listing many jobs.
          default: false
          title: Compact
        description: When true, omit each job's heavy result body + streamed intermediate events — returns just status/progress/ids/timestamps. Recommended for agents listing many jobs.
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/jobs/{job_id}:
    get:
      tags:
      - Jobs
      summary: Get the status, partial results, and any pending changes for an async chat job
      description: Returns the job's current state (pending, in_progress, awaiting_approval, completed, failed, or cancelled), intermediate AI responses streamed during execution, the final document HTML once complete, and any pending changes awaiting user approval (with chunk IDs and proposed HTML diffs in metadata.pending_changes). Poll this after chat_async to track progress and retrieve results. When status is awaiting_approval, call POST /v1/chat/{session_id}/approve to approve or deny each pending change. Headless/MCP clients get the same typed progress events the web SSE stream delivers via metadata.intermediate_responses (e.g. documents_changed, continue_prompt, model_fallback, proposed_change_batch); cross-session document updates from OTHER sessions are reported separately by polling GET /v1/sessions/{session_id}/doc-events.
      operationId: get_job
      security:
      - HTTPBearer: []
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      - name: compact
        in: query
        required: false
        schema:
          type: boolean
          description: 'When true, omit the heavy result body + streamed intermediate events from the response (status/progress/ids/timestamps/pending-change ids remain). Recommended for AI agents polling a large-document job: poll compact while it runs, then fetch once non-compact when status is completed to retrieve the final HTML.'
          default: false
          title: Compact
        description: 'When true, omit the heavy result body + streamed intermediate events from the response (status/progress/ids/timestamps/pending-change ids remain). Recommended for AI agents polling a large-document job: poll compact while it runs, then fetch once non-compact when status is completed to retrieve the final HTML.'
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/jobs/{job_id}/cancel:
    post:
      tags:
      - Jobs
      summary: Cancel a pending or in-progress async chat job
      description: 'Stops a running turn, or ends a turn that is waiting for your review by discarding its staged changes. Already-applied changes are preserved in the document; anything still pending is discarded. Use to abort work that is no longer wanted (e.g. the user changed their mind, or you want to retry with different parameters or model_tier). The response tells you whether the work was stopped here and now (`stop_state: "stopped_here"`) or the stop was ACCEPTED and is being carried out by the instance running the turn (`stop_state: "accepted"`) — in the accepted case poll get_job until `metadata.stopped_unwound` is true or the job reaches a terminal status. A turn that already finished cannot be stopped and returns 409 naming its status.'
      operationId: cancel_job
      security:
      - HTTPBearer: []
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/sessions/{session_id}/jobs:
    get:
      tags:
      - Jobs
      summary: List all async chat jobs for a specific session, most recent first
      description: Returns the full job history of one document. Useful for auditing what the AI did to a document over time, or finding a specific job that's waiting for HITL approval. Same shape as list_jobs but scoped to one session.
      operationId: get_session_jobs
      security:
      - HTTPBearer: []
      parameters:
      - name: session_id
        in: path
        required: true
        schema:
          type: string
          title: Session Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          description: Maximum number of jobs to return
          default: 20
          title: Limit
        description: Maximum number of jobs to return
      - name: compact
        in: query
        required: false
        schema:
          type: boolean
          description: When true, omit each job's heavy result body + streamed intermediate events — returns just status/progress/ids/timestamps. Recommended for agents listing many jobs.
          default: false
          title: Compact
        description: When true, omit each job's heavy result body + streamed intermediate events — returns just status/progress/ids/timestamps. Recommended for agents listing many jobs.
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    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.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    JobListResponse:
      properties:
        jobs:
          items:
            $ref: '#/components/schemas/JobResponse'
          type: array
          title: Jobs
          description: Array of job details.
        total:
          type: integer
          title: Total
          description: Total number of jobs returned.
      type: object
      required:
      - jobs
      - total
      title: JobListResponse
      description: List of async jobs.
    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: '#/components/schemas/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: '#/components/schemas/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.
    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: '#/components/schemas/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.
    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: '#/components/schemas/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.
    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: '#/components/schemas/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: '#/components/schemas/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
      title: JobResponse
      description: Status and details of an async job.
    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.
    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: '#/components/schemas/DocumentChanges'
          - type: 'null'
          description: Document modifications (chat jobs).
        usage:
          anyOf:
          - $ref: '#/components/schemas/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.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer