Parseur API

The Parseur REST API exposes 29 operations across mailboxes (parsers), documents, templates, custom downloads (export configs), webhooks, and account bootstrap. Documents can be ingested as binary uploads to /parser/{id}/upload or as email/text payloads to /email; parsing is asynchronous, with results retrievable via /document/{id} once status transitions to processed. Webhooks deliver real-time events to your endpoint and can be enabled/disabled per mailbox. Authentication uses a Token-prefixed Authorization header carrying the account API key from the Parseur Account Overview. Base URL is https://api.parseur.com and rate limits are 5 requests/second per IP with a burst of 20.

Parseur API is published by Parseur on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Documents, Mailboxes, Templates, Webhooks, and Exports. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, SDKs, authentication docs, and rate-limit docs.

OpenAPI Specification

parseur-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Parseur
  description: ''
  version: 1.0.0
tags:
- name: async
paths:
  /parser/{id}/document_set:
    get:
      summary: List documents in a mailbox
      deprecated: false
      description: ''
      tags: []
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{PARSER_ID}}'
        schema:
          type: string
      - name: page
        in: query
        description: Page number for pagination (default is 1)
        required: false
        schema:
          type: integer
          minimum: 1
      - name: page_size
        in: query
        description: Number of results per page (default is 25)
        required: false
        schema:
          type: integer
          minimum: 1
      - name: search
        in: query
        description: Case-insensitive partial match search
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Field name to order by (use -prefix for descending)
        required: false
        schema:
          type: string
          enum:
          - name
          - -name
          - created
          - -created
          - processed
          - -processed
          - status
          - -status
      - name: received_after
        in: query
        description: Filter documents received after this date (yyyy-mm-dd)
        required: false
        schema:
          type: string
          format: date
      - name: received_before
        in: query
        description: Filter documents received before this date (yyyy-mm-dd)
        required: false
        schema:
          type: string
          format: date
      - name: status
        in: query
        description: Filter documents by status
        required: false
        schema:
          $ref: '#/components/schemas/DocumentStatusEnum'
      - name: tz
        in: query
        description: Timezone for date filters (e.g. Asia%2FSingapore). Defaults to UTC.
        required: false
        schema:
          type: string
      - name: with_result
        in: query
        description: Include parsed result string with each document
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: List of documents (paginated)
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    readOnly: true
                  current:
                    type: integer
                    readOnly: true
                  total:
                    type: integer
                    readOnly: true
                  results:
                    type: array
                    items:
                      properties:
                        attached_to:
                          type: 'null'
                        id:
                          type: integer
                        match_master_template:
                          type: boolean
                        name:
                          type: string
                        ocr_ready_url:
                          type: string
                        original_document_url:
                          type: string
                        parser:
                          type: integer
                        processed:
                          type: string
                        received:
                          type: string
                        sample_set:
                          type: array
                          items:
                            type: string
                        status_source:
                          type: string
                        status:
                          type: string
                        template:
                          type: 'null'
                        credits_used:
                          type: integer
                        conventional_credits_used:
                          type: integer
                        ai_credits_used:
                          type: integer
                        is_ai_ready:
                          type: boolean
                        is_ocr_ready:
                          type: boolean
                        is_processable:
                          type: boolean
                        is_splittable:
                          type: boolean
                        is_split:
                          type: boolean
                        json_download_url:
                          type: string
                        csv_download_url:
                          type: string
                        xls_download_url:
                          type: string
                      required:
                      - attached_to
                      - id
                      - match_master_template
                      - name
                      - ocr_ready_url
                      - original_document_url
                      - parser
                      - processed
                      - received
                      - sample_set
                      - status_source
                      - status
                      - template
                      - credits_used
                      - conventional_credits_used
                      - ai_credits_used
                      - is_ai_ready
                      - is_ocr_ready
                      - is_processable
                      - is_splittable
                      - is_split
                      - json_download_url
                      - csv_download_url
                      - xls_download_url
                      $ref: '#/components/schemas/DocumentDiet'
                    readOnly: true
                required:
                - count
                - current
                - total
                - results
              example:
                count: 2
                current: 1
                total: 1
                results:
                - attached_to: 12345680
                  id: 12345679
                  match_master_template: false
                  name: document_1.pdf
                  ocr_ready_url: https://api.parseur.com/document/ABC12345XYZ67890/ocr_ready/document_1.pdf
                  original_document_url: https://api.parseur.com/document/ABC12345XYZ67890/document_1.pdf
                  parser: 98765
                  processed: '2025-08-06T12:09:59.608371Z'
                  received: '2025-08-06T12:09:52.063182Z'
                  sample_set: []
                  status_source: AI
                  status: PARSEDOK
                  template: null
                  credits_used: 1
                  conventional_credits_used: 0
                  ai_credits_used: 1
                  is_ai_ready: true
                  is_ocr_ready: true
                  is_processable: true
                  is_splittable: false
                  is_split: false
                  json_download_url: https://api.parseur.com/document/ABC12345XYZ67890/result/document_1.json
                  csv_download_url: https://api.parseur.com/document/ABC12345XYZ67890/result/document_1.csv
                  xls_download_url: https://api.parseur.com/document/ABC12345XYZ67890/result/document_1.xlsx
                - attached_to: null
                  id: 12345680
                  match_master_template: false
                  name: message_2.eml
                  ocr_ready_url: null
                  original_document_url: https://api.parseur.com/document/DEF98765UVW43210/message_2.eml
                  parser: 98765
                  processed: '2025-08-06T12:09:55.150511Z'
                  received: '2025-08-06T12:09:49.901419Z'
                  sample_set: []
                  status_source: METADATA
                  status: PARSEDOK
                  template: null
                  credits_used: 1
                  conventional_credits_used: 1
                  ai_credits_used: 0
                  is_ai_ready: true
                  is_ocr_ready: false
                  is_processable: true
                  is_splittable: false
                  is_split: false
                  json_download_url: https://api.parseur.com/document/DEF98765UVW43210/result/message_2.json
                  csv_download_url: https://api.parseur.com/document/DEF98765UVW43210/result/message_2.csv
                  xls_download_url: https://api.parseur.com/document/DEF98765UVW43210/result/message_2.xlsx
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  non_field_errors:
                    type: string
                required:
                - non_field_errors
              example:
                non_field_errors: Parser 123456 not found
          headers: {}
      security:
      - TokenAuth: []
  /document/{id}:
    get:
      summary: Get a document
      deprecated: false
      description: ''
      tags: []
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{DOCUMENT_ID}}'
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
              example:
                attached_to: null
                id: 123456789
                match_master_template: false
                name: invoice_3.pdf
                ocr_ready_url: https://api.parseur.com/document/<secret>/ocr_ready/invoice_3.pdf
                original_document_url: https://api.parseur.com/document/<secret>/invoice_3.pdf
                parser: 98765
                processed: '2025-08-06T12:06:25.210919Z'
                received: '2025-08-06T11:59:04.717362Z'
                sample_set: []
                status_source: AI
                status: PARSEDOK
                template: null
                credits_used: 4
                conventional_credits_used: 0
                ai_credits_used: 4
                is_ai_ready: true
                is_ocr_ready: true
                is_processable: true
                is_splittable: true
                is_split: false
                json_download_url: https://api.parseur.com/document/<secret>/result/invoice_3.json
                csv_download_url: https://api.parseur.com/document/<secret>/result/invoice_3.csv
                xls_download_url: https://api.parseur.com/document/<secret>/result/invoice_3.xlsx
                result: '...Parsed data removed for brevity...'
                content: '...Content removed for brevity...'
                next_id: null
                prev_id: 123456788
                ocr_page_set:
                - image:
                    url: https://api.parseur.com/document/123456789/image/1.jpg
                    width: 1836
                    height: 2376
                    content_type: image/jpeg
                  position: 1
                  included_in_range: true
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          $ref: '#/components/responses/Not Found'
          description: ''
      security:
      - TokenAuth: []
    delete:
      summary: Delete a document
      deprecated: false
      description: ''
      tags: []
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{DOCUMENT_ID}}'
        schema:
          type: string
      responses:
        '204':
          description: Deleted
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          $ref: '#/components/responses/Not Found'
          description: ''
      security:
      - TokenAuth: []
  /document/{id}/log_set:
    get:
      summary: Get document logs
      deprecated: false
      description: ''
      tags: []
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{DOCUMENT_ID}}'
        schema:
          type: string
      - name: page
        in: query
        description: Page number for pagination (default is 1)
        required: false
        schema:
          type: integer
          minimum: 1
      - name: page_size
        in: query
        description: Number of results per page (default is 25)
        required: false
        schema:
          type: integer
          minimum: 1
      - name: search
        in: query
        description: Case-insensitive partial match search
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Field name to order by (use -prefix for descending)
        required: false
        schema:
          type: string
      responses:
        '200':
          description: List of document logs (paginated)
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  current:
                    type: integer
                  total:
                    type: integer
                  results:
                    type: array
                    items:
                      properties:
                        id:
                          type: integer
                        created:
                          type: string
                        code:
                          type: string
                        document:
                          type: integer
                        document_name:
                          type: string
                        parser:
                          type: integer
                        parser_name:
                          type: string
                        template:
                          type: 'null'
                        template_name:
                          type: 'null'
                        status:
                          type: string
                        source:
                          type: string
                        payload:
                          type:
                          - string
                          - 'null'
                        message:
                          type: string
                      required:
                      - id
                      - created
                      - code
                      - document
                      - document_name
                      - parser
                      - parser_name
                      - template
                      - template_name
                      - status
                      - source
                      - payload
                      - message
                      $ref: '#/components/schemas/Log'
                required:
                - count
                - current
                - total
                - results
              example:
                count: 3
                current: 1
                total: 1
                results:
                - id: 2155
                  created: '2025-08-06T11:59:56.422755Z'
                  code: PARSEDOK
                  document: 123456789
                  document_name: invoice_3.pdf
                  parser: 54101
                  parser_name: API Test Mailbox
                  template: null
                  template_name: null
                  status: SUCCESS
                  source: DOCUMENT
                  payload: ..Log payload removed for brevity...
                  message: 'Processed with AI. (4 credits used), here is the final result:'
                - id: 2153
                  created: '2025-08-06T11:59:04.743875Z'
                  code: INCOMING
                  document: 123456789
                  document_name: invoice_3.pdf
                  parser: 54101
                  parser_name: API Test Mailbox
                  template: null
                  template_name: null
                  status: INFO
                  source: DOCUMENT
                  payload: null
                  message: Received
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          $ref: '#/components/responses/Not Found'
          description: ''
      security:
      - TokenAuth: []
  /parser/{id}/upload:
    post:
      summary: Upload a binary document
      deprecated: false
      description: ''
      tags:
      - async
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{PARSER_ID}}'
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  example: ''
              required:
              - file
            examples: {}
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    const: OK
                    readOnly: true
                  attachments:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          readOnly: true
                        DocumentID:
                          type: string
                          readOnly: true
                      readOnly: true
                    readOnly: true
                required:
                - message
                - attachments
              example:
                message: OK
                attachments:
                - name: document.pdf
                  DocumentID: 123456c9ae4f123eb923e9c789f385f4
          headers: {}
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  non_field_errors:
                    type: string
                required:
                - non_field_errors
              examples:
                '2':
                  summary: Parser id not found
                  value:
                    non_field_errors: Parser 123456 not found.
                '3':
                  summary: Unsupported file type
                  value:
                    non_field_errors: 'Unsupported content type: ''application/zlib'': archive.dmg'
                '4':
                  summary: Empty or malformed request
                  value:
                    non_field_errors: File upload should be done using multipart/form-data
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
      security:
      - TokenAuth: []
  /email:
    post:
      summary: Upload an email/text document
      deprecated: false
      description: ''
      tags:
      - async
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: string
                from:
                  type: string
                recipient:
                  type: string
                to:
                  type: string
                cc:
                  type: string
                bcc:
                  type: string
                body_html:
                  type: string
                body_plain:
                  type: string
                message_headers:
                  type: array
                  items:
                    type: array
                    items:
                      type: string
                    minItems: 2
                    maxItems: 2
              required:
              - subject
              - from
              - recipient
            example:
              subject: The title of your document, or email subject
              from: Sender Name <[email protected]>
              recipient: [email protected]
              to: [email protected], Another Name <[email protected]>
              cc: [email protected]
              bcc: [email protected]
              body_html: <html><body>Document content as HTML. This one has priority over text content if both are present.</body></html>
              body_plain: Document content as text. This one is only used if body_html is empty.
              message_headers:
              - - Standard-SMTP-Header
                - Any usual email header goes here
      responses:
        '201':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    const: OK
                required:
                - message
              example:
                message: OK
          headers: {}
      security: []
  /document/{id}/process:
    post:
      summary: Reprocess a document
      deprecated: false
      description: ''
      tags:
      - async
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{DOCUMENT_ID}}'
        schema:
          type: string
      responses:
        '200':
          description: Reprocessed
          content:
            application/json:
              schema:
                type: object
                properties:
                  notification_set:
                    type: object
                    properties:
                      info:
                        type: array
                        items:
                          type: string
                    required:
                    - info
                required:
                - notification_set
              example:
                notification_set:
                  info:
                  - Document is being processed. Please wait.
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          $ref: '#/components/responses/Not Found'
          description: ''
      security:
      - TokenAuth: []
  /document/{id}/skip:
    post:
      summary: Skip a document
      deprecated: false
      description: ''
      tags: []
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{DOCUMENT_ID}}'
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
              example:
                attached_to: null
                id: 123456789
                match_master_template: false
                name: invoice_3.pdf
                ocr_ready_url: https://api.parseur.com/document/<secret>/ocr_ready/invoice_3.pdf
                original_document_url: https://api.parseur.com/document/<secret>/invoice_3.pdf
                parser: 98765
                processed: '2025-08-06T12:06:25.210919Z'
                received: '2025-08-06T11:59:04.717362Z'
                sample_set: []
                status_source: AI
                status: SKIPPED
                template: null
                credits_used: 4
                conventional_credits_used: 0
                ai_credits_used: 4
                is_ai_ready: true
                is_ocr_ready: true
                is_processable: true
                is_splittable: true
                is_split: false
                json_download_url: https://api.parseur.com/document/<secret>/result/invoice_3.json
                csv_download_url: https://api.parseur.com/document/<secret>/result/invoice_3.csv
                xls_download_url: https://api.parseur.com/document/<secret>/result/invoice_3.xlsx
                result: '...Parsed data removed for brevity...'
                content: '...Content removed for brevity...'
                next_id: null
                prev_id: 123456788
                ocr_page_set:
                - image:
                    url: https://api.parseur.com/document/123456789/image/1.jpg
                    width: 1836
                    height: 2376
                    content_type: image/jpeg
                  position: 1
                  included_in_range: true
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          $ref: '#/components/responses/Not Found'
          description: ''
      security:
      - TokenAuth: []
  /document/{id}/copy/{target_mailbox_id}:
    post:
      summary: Copy a document
      deprecated: false
      description: ''
      tags:
      - async
      parameters:
      - name: id
        in: path
        description: ''
        required: true
        example: '{{DOCUMENT_ID}}'
        schema:
          type: string
      - name: target_mailbox_id
        in: path
        description: ''
        required: true
        example: '{{OTHER_PARSER_ID}}'
        schema:
          type: string
      responses:
        '200':
          description: Copied
          content:
            application/json:
              schema:
                type: object
                properties:
                  notification_set:
                    type: object
                    properties:
                      info:
                        type: array
                        items:
                          type: string
                    required:
                    - info
                required:
                - notification_set
              example:
                notification_set:
                  info:
                  - Document is being copied. New copy will show up in a few seconds.
          headers: {}
        '403':
          $ref: '#/components/responses/Authentication Error'
          description: ''
        '404':
          $ref: '#/components/responses/Not Found'
          description: ''
      security:
      - TokenAuth: []
  /parser:
    get:
      summary: List mailboxes
      deprecated: false
      description: Optional query parameters for pagination and filtering
      tags: []
      parameters:
      - name: page
        in: query
        description: Page number for pagination (default is 1)
        required: false
        schema:
          type: integer
          minimum: 1
      - name: page_size
        in: query
        description: Number of results per page (default is 25)
        required: false
        schema:
          type: integer
          minimum: 1
      - name: search
        in: query
        description: Case-insensitive partial match search
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Field name to order by (use -prefix for descending)
        required: false
        schema:
          type:
          - string
          - 'null'
          enum:
          - name
          - -name
          - document_count
          - -document_count
          - template_count
          - -template_count
          - PARSEDOK_count
          - -PARSEDOK_count
          - PARSEDKO_count
          - -PARSEDKO_count
          - QUOTAEXC_count
          - -QUOTAEXC_count
          - EXPORTKO_count
          - -EXPORTKO_count
          - TRANSKO_count
          - -TRANSKO_count
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    readOnly: true
                  current:
                    type: integer
                    readOnly: true
                  total:
                    type: integer
                    readOnly: true
                  results:
                    type: array
                    items:
                      properties:
                        account_uuid:
                          type: string
                        ai_engine:
                          type: string
                        attachments_only:
                          type: boolean
                        attachments_only_override:
                          type: 'null'
                        can_transform:
                          type: boolean
                        disable_deskew:
                          type: boolean
                        enable_layouted_text:
                          type: boolean
                        enable_image_ocr:
                          type: boolean
                        document_count:
                          type: integer
                        document_per_status_count:
                          type: object
                          properties:
                            INCOMING:
                              type: integer
                            ANALYZING:
                              type: integer
                            PROGRESS:
                              type: integer
                            PARSEDOK:
                              type: integer
                            PARSEDKO:
                              type: integer
                            QUOTAEXC:
                              type: integer
                            SKIPPED:
                              type: integer
                            SPLIT:
                              type: integer
                            DELETED:
                              type: integer
                            EXPORTKO:
                              type: integer
                            TRANSKO:
                              type: integer
                            INVALID:
                              type: integer
                          required:
                          - INCOMING
                          - ANALYZING
                          - PROGRESS
                          - PARSEDOK
                          - PARSEDKO
                          - QUOTAEXC
                          - SKIPPED
                          - SPLIT
                          - DELETED
                          - EXPORTKO
                          - TRANSKO
                          - INVALID
                        email_prefix:
                          type: string
                        even_pages:
                          type: boolean
                        force_ocr:
                          type: boolean
                        id:
                          type: integer
                        is_master:
                          type: boolean
                        last_activity:
                          type: string
                        name:
                          type: string
                        odd_pages:
                          type: boolean
                        page_range_set:
                          type: array
                          items:
                            type: string
                        parser_object_count:
                          type: integer
                        parser_object_set_last_modified:
                          type: 'null'
                        process_attachments:
                          type: boolean
                        retention_policy:
                          type: integer
                        split_keywords:
                          type: 'null'
                        split_page:
                          type: 'null'
                        split_page_range_set:
                          type: array
                          items:
                            type: string
                        template_count:
                          type: integer
                        webhook_count:
                         

# --- truncated at 32 KB (173 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/parseur/refs/heads/main/openapi/parseur-openapi.yml