Parsio Documents API

Upload, parse, list, and retrieve documents and their parsed data.

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/parsio-documents-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

parsio-documents-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Parsio Public Documents API
  description: Specification of the Parsio public REST API for AI-powered document and email parsing. Create and manage mailboxes (parsers), upload documents and emails for parsing, retrieve extracted structured JSON, manage parsing templates, and configure webhooks for real-time parsed-data delivery. All endpoints require an API key supplied via the X-API-Key request header.
  termsOfService: https://parsio.io/terms/
  contact:
    name: Parsio Support
    url: https://help.parsio.io
  version: '1.0'
servers:
- url: https://api.parsio.io
security:
- ApiKeyAuth: []
tags:
- name: Documents
  description: Upload, parse, list, and retrieve documents and their parsed data.
paths:
  /mailboxes/{mailbox_id}/doc-sync:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    post:
      operationId: parseDocumentSync
      tags:
      - Documents
      summary: Parse an HTML or text document synchronously.
      description: Submits an HTML or plain-text document and waits for the parsing result. Supply at least one of html or text; if both are present, html takes precedence.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParseDocumentRequest'
      responses:
        '200':
          description: The parsed document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/doc:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    post:
      operationId: parseDocumentAsync
      tags:
      - Documents
      summary: Parse an HTML or text document asynchronously.
      description: Submits an HTML or plain-text document for background parsing and returns immediately with a document ID. Results are delivered via webhooks or retrieved later by document ID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParseDocumentRequest'
      responses:
        '200':
          description: The accepted document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/upload-sync:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    post:
      operationId: uploadFileSync
      tags:
      - Documents
      summary: Upload a file and wait for the parsing result.
      description: Uploads a single file (PDF, DOCX, image, HTML, JSON, XML, and more) up to 20MB and waits for the parsing result.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UploadFileRequest'
      responses:
        '200':
          description: The parsed document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/upload:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    post:
      operationId: uploadFileAsync
      tags:
      - Documents
      summary: Upload a file for asynchronous parsing.
      description: Uploads a file (up to 50MB, ZIP archives supported) for background parsing and returns immediately. Results are delivered via webhooks or retrieved later by document ID.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UploadFileRequest'
      responses:
        '200':
          description: The accepted document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/docs:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    get:
      operationId: listDocuments
      tags:
      - Documents
      summary: List documents.
      description: Lists documents in a mailbox with pagination and filters.
      parameters:
      - name: page
        in: query
        schema:
          type: integer
      - name: per_page
        in: query
        schema:
          type: integer
          maximum: 500
      - name: from
        in: query
        description: ISO 8601 start date filter.
        schema:
          type: string
          format: date
      - name: to
        in: query
        description: ISO 8601 end date filter.
        schema:
          type: string
          format: date
      - name: q
        in: query
        description: Free-text search query.
        schema:
          type: string
      - name: status
        in: query
        schema:
          $ref: '#/components/schemas/DocumentStatus'
      responses:
        '200':
          description: A paginated list of documents.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/docs/skip:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    post:
      operationId: skipDocuments
      tags:
      - Documents
      summary: Skip documents.
      description: Marks multiple documents as skipped.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdsRequest'
      responses:
        '200':
          description: Documents skipped.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /docs/{document_id}:
    parameters:
    - $ref: '#/components/parameters/DocumentId'
    get:
      operationId: getDocument
      tags:
      - Documents
      summary: Get a parsed document.
      description: Retrieves a document and its extracted structured JSON by ID.
      responses:
        '200':
          description: The requested document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /docs/{document_id}/parse:
    parameters:
    - $ref: '#/components/parameters/DocumentId'
    post:
      operationId: reparseDocument
      tags:
      - Documents
      summary: Reparse a document.
      description: Reprocesses an existing document with the mailbox's current parser.
      responses:
        '200':
          description: The reparsed document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/parsed:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    get:
      operationId: getParsedData
      tags:
      - Documents
      summary: Retrieve parsed data.
      description: Retrieves the parsed data for a mailbox's documents.
      parameters:
      - name: page
        in: query
        schema:
          type: integer
      - name: from
        in: query
        schema:
          type: string
          format: date
      - name: to
        in: query
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Parsed data records.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /mailboxes/{mailbox_id}/emails:
    parameters:
    - $ref: '#/components/parameters/MailboxId'
    get:
      operationId: listCollectedEmails
      tags:
      - Documents
      summary: Get collected email addresses.
      description: Returns the email addresses collected by a mailbox.
      responses:
        '200':
          description: A list of collected email addresses.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  format: email
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    MailboxId:
      name: mailbox_id
      in: path
      required: true
      description: The unique identifier of the mailbox (parser).
      schema:
        type: string
    DocumentId:
      name: document_id
      in: path
      required: true
      description: The unique identifier of the document.
      schema:
        type: string
  schemas:
    Document:
      type: object
      properties:
        doc_id:
          type: string
        parsing_in_progress:
          type: boolean
        status:
          $ref: '#/components/schemas/DocumentStatus'
        name:
          type: string
        content_type:
          type: string
        created_at:
          type: string
          format: date-time
        processed_at:
          type: string
          format: date-time
        json:
          type: object
          description: The extracted structured data.
          additionalProperties: true
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
    ParseDocumentRequest:
      type: object
      properties:
        name:
          type: string
          description: Document identifier or subject line.
        html:
          type: string
          description: HTML markup to parse. Takes precedence over text when both are supplied.
        text:
          type: string
          description: Plain-text content to parse.
        from:
          type: string
          description: Sender address.
        to:
          type: string
          description: Recipient address.
        meta:
          type: object
          description: Custom metadata returned in the response as __meta__.
          additionalProperties: true
    IdsRequest:
      type: object
      required:
      - ids
      properties:
        ids:
          type: array
          items:
            type: string
    UploadFileRequest:
      type: object
      required:
      - file
      properties:
        file:
          type: string
          format: binary
          description: The file to upload and parse.
        meta:
          type: string
          description: Custom payload as a JSON object or JSON-encoded string.
    DocumentStatus:
      type: string
      enum:
      - new
      - parsing
      - parsed
      - fail
      - skipped
      - quota
      - exception
  responses:
    Unauthorized:
      description: API key missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key