mammoth-io Multi Sheet Interpretation API

The MultiSheetInterpretation API from mammoth-io — 2 operation(s) for multisheetinterpretation.

Operations 2

POST /workspaces/{workspace_id}/projects/{project_id}/files/{file_id}/sheets/interpretation/preview Preview a sheet's read, before any dataset exists #
POST /workspaces/{workspace_id}/projects/{project_id}/files/{file_id}/multi-sheet-extraction Create datasets from accepted sheet/table reads #

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/mammoth-io:mammoth-io-multisheetinterpretation-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

mammoth-io-multisheetinterpretation-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Mammoth Io Multi Sheet Interpretation API
  version: 0.1.0
  contact:
    name: Mammoth Analytics
    url: https://mammoth.io
    email: support@mammoth.io
  description: 'Operations tagged MultiSheetInterpretation across 2 of this provider''s published API definitions: app.mammoth.io-openapi.json, mammoth-io-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: /api/v2
security:
- bearerAuth: []
- apiKey: []
  apiSecret: []
  workspaceId: []
tags:
- name: MultiSheetInterpretation
paths:
  /workspaces/{workspace_id}/projects/{project_id}/files/{file_id}/sheets/interpretation/preview:
    post:
      tags:
      - MultiSheetInterpretation
      summary: Preview a sheet's read, before any dataset exists
      description: Detects the table block(s) inside one sheet of an uploaded, not-yet-extracted Excel file, and — for a normal sheet, or a named block on a multi-table sheet — resolves a read from a user instruction (or a structure_map already known to be correct). Non-destructive; nothing is created or persisted.
      operationId: PreviewMultiSheetInterpretation
      parameters:
      - name: workspace_id
        in: path
        schema:
          type: integer
          minimum: 1.0
          title: Workspace ID
          description: Workspace refers to a collection of projects. Workspace ID is unique identifier for workspace.
          examples:
          - 4
        description: Workspace refers to a collection of projects. Workspace ID is unique identifier for workspace.
        required: true
        deprecated: false
        examples:
          workspace_id-example-1:
            summary: Sample workspace ID
            value: 4
      - name: project_id
        in: path
        schema:
          type: integer
          minimum: 1.0
          title: Project ID
          description: Project ID of the workspace
          examples:
          - 4
        description: Project ID of the workspace
        required: true
        deprecated: false
        examples:
          project_id-example-1:
            summary: Sample project ID
            value: 4
      - name: file_id
        in: path
        schema:
          type: integer
          minimum: 0.0
          title: File ID
          description: ID of the file
          examples:
          - 4
        description: ID of the file
        required: true
        deprecated: false
        examples:
          file_id-example-1:
            summary: Sample file ID
            value: 4
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiSheetPreviewBody'
        required: true
      responses:
        '201':
          description: Document created, URL follows
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MultiSheetPreviewResponse'
        '400':
          description: Bad request syntax or unsupported method
          content:
            application/json:
              schema:
                oneOf:
                - properties:
                    status_code:
                      type: integer
                    detail:
                      type: string
                    extra:
                      additionalProperties: {}
                      type:
                      - 'null'
                      - object
                      - array
                  type: object
                  required:
                  - detail
                  - status_code
                  description: Client Error
                  examples:
                  - status_code: 400
                    detail: Bad Request
                    extra: {}
                - properties:
                    status_code:
                      type: integer
                    detail:
                      type: string
                    extra:
                      additionalProperties: {}
                      type:
                      - 'null'
                      - object
                      - array
                  type: object
                  required:
                  - detail
                  - status_code
                  description: Validation Exception
                  examples:
                  - status_code: 400
                    detail: Bad Request
                    extra: {}
      deprecated: false
    servers:
    - url: /api/v2
  /workspaces/{workspace_id}/projects/{project_id}/files/{file_id}/multi-sheet-extraction:
    post:
      tags:
      - MultiSheetInterpretation
      summary: Create datasets from accepted sheet/table reads
      description: Takes every accepted sheet or table-block read for a multi-sheet file and creates one dataset per resulting group — tables sharing a combine_group_id are unioned into one dataset with a leading Source column. The finished job returns the new datasets' resource_ids; each dataset starts PROCESSING and becomes READY on its own.
      operationId: CreateDatasetsFromMultiSheetFile
      parameters:
      - name: workspace_id
        in: path
        schema:
          type: integer
          minimum: 1.0
          title: Workspace ID
          description: Workspace refers to a collection of projects. Workspace ID is unique identifier for workspace.
          examples:
          - 4
        description: Workspace refers to a collection of projects. Workspace ID is unique identifier for workspace.
        required: true
        deprecated: false
        examples:
          workspace_id-example-1:
            summary: Sample workspace ID
            value: 4
      - name: project_id
        in: path
        schema:
          type: integer
          minimum: 1.0
          title: Project ID
          description: Project ID of the workspace
          examples:
          - 4
        description: Project ID of the workspace
        required: true
        deprecated: false
        examples:
          project_id-example-1:
            summary: Sample project ID
            value: 4
      - name: file_id
        in: path
        schema:
          type: integer
          minimum: 0.0
          title: File ID
          description: ID of the file
          examples:
          - 4
        description: ID of the file
        required: true
        deprecated: false
        examples:
          file_id-example-1:
            summary: Sample file ID
            value: 4
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiSheetExtractionRequest'
        required: true
      responses:
        '202':
          description: Request accepted, processing continues off-line
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '400':
          description: Bad request syntax or unsupported method
          content:
            application/json:
              schema:
                oneOf:
                - properties:
                    status_code:
                      type: integer
                    detail:
                      type: string
                    extra:
                      additionalProperties: {}
                      type:
                      - 'null'
                      - object
                      - array
                  type: object
                  required:
                  - detail
                  - status_code
                  description: Client Error
                  examples:
                  - status_code: 400
                    detail: Bad Request
                    extra: {}
                - properties:
                    status_code:
                      type: integer
                    detail:
                      type: string
                    extra:
                      additionalProperties: {}
                      type:
                      - 'null'
                      - object
                      - array
                  type: object
                  required:
                  - detail
                  - status_code
                  description: Validation Exception
                  examples:
                  - status_code: 400
                    detail: Bad Request
                    extra: {}
      deprecated: false
    servers:
    - url: /api/v2
components:
  schemas:
    MultiSheetExtractionRequest:
      properties:
        tables:
          items:
            $ref: '#/components/schemas/MultiSheetTableInput'
          type: array
          maxItems: 100
          minItems: 1
          title: Tables
          description: Every accepted sheet/block read to create datasets from
        refresh_mode:
          type: string
          const: manual
          title: Refresh mode
          description: Only 'manual' is supported today.
          default: manual
        delete_file_after_extract:
          type: boolean
          title: Delete file after extract
          default: true
      type: object
      required:
      - tables
      title: MultiSheetExtractionRequest
    JobSchema:
      properties:
        id:
          type: integer
          minimum: 0.0
          title: Job id
          examples:
          - value:
              id: 10
        status:
          type: string
          enum:
          - success
          - failure
          - processing
          - error
          title: Job status
          description: Job status can be success, failure or processing
          examples:
          - value:
              status: success
        response:
          oneOf:
          - type: object
          - type: array
          description: Result of async task is stored in response
          examples:
          - value:
              response:
                object: some object
        last_updated_at:
          type: string
          format: date-time
          title: Job last updated at
          description: Job last updated at is the time when Job status was last updated
          examples:
          - value:
              last_updated_at: '2021-08-10T10:00:00'
        created_at:
          type: string
          format: date-time
          title: Job created at
          description: Create at is time when async task was created
          examples:
          - value:
              created_at: '2021-08-10T10:00:00'
        path:
          type: string
          title: Job path
          description: API request path of the Job operation
          examples:
          - value:
              path: /api/v2/dataviews/1
        operation:
          type: string
          title: Job operation
          description: Operation is async task name which Job is tracking
          examples:
          - value:
              operation: post_modification_pipeline_execution
      type: object
      required:
      - created_at
      - id
      - last_updated_at
      - operation
      - path
      - response
      - status
      title: JobSchema
    MultiSheetPreviewBody:
      properties:
        block_id:
          oneOf:
          - type: string
          - type: 'null'
          title: Block id
          description: Which detected block to resolve a read for, on a multi-table sheet. Omit for a normal single-table sheet.
        user_instruction:
          oneOf:
          - type: string
          - type: 'null'
          title: User instruction
          description: Plain-English description of how to read this sheet/block. Omit to get a default read attempt (the detected header row, then its data).
        structure_map:
          oneOf:
          - additionalProperties: {}
            type: object
          - type: 'null'
          title: Structure Map
          description: A structure map already known to be correct — skips the LLM call
        sheet_name:
          type: string
          maxLength: 255
          minLength: 1
          title: Sheet name
          description: The sheet to preview, exactly as it is named in the workbook
          examples:
          - value: Sales 2
      type: object
      required:
      - sheet_name
      title: MultiSheetPreviewBody
    MultiSheetTableInput:
      properties:
        sheet_name:
          type: string
          title: Sheet name
        block_id:
          oneOf:
          - type: string
          - type: 'null'
          title: Block id
          description: The block within the sheet this table came from, for a multi-table sheet
        structure_map:
          additionalProperties: {}
          type: object
          title: Structure Map
          description: The accepted structure map from a prior preview call
        dataset_name:
          type: string
          maxLength: 255
          minLength: 1
          title: Dataset name
        combine_group_id:
          oneOf:
          - type: string
          - type: 'null'
          title: Combine group id
          description: Tables sharing the same non-null combine_group_id are unioned into one dataset with a leading Source column, instead of one dataset each.
        source_label:
          oneOf:
          - type: string
          - type: 'null'
          maxLength: 255
          title: Source label
          description: What this table's rows carry in the Source column of a combined dataset (its table or sheet name). Falls back to dataset_name.
        user_instruction:
          oneOf:
          - type: string
          - type: 'null'
          maxLength: 2000
          title: User instruction
          description: The instruction this table was read with, if any. Kept as the new dataset's recipe, so later files added to it are read the same way.
        sheet_block_count:
          oneOf:
          - type: integer
          - type: 'null'
          title: Sheet block count
          description: How many tables the preview found on this table's sheet. Confirm re-detects them on the whole sheet and refuses on a mismatch, so a table the preview never showed is not merged in as data.
      type: object
      required:
      - dataset_name
      - sheet_name
      - structure_map
      title: MultiSheetTableInput
    JobResponse:
      properties:
        job:
          $ref: '#/components/schemas/JobSchema'
      type: object
      required:
      - job
      title: JobResponse
    ResolvedReadSchema:
      properties:
        columns:
          items:
            items:
              type: string
            type: array
          type: array
          title: Columns
          description: '[[name, type], ...] for the resolved read'
        rows:
          items:
            items:
              type: string
            type: array
          type: array
          title: Rows
          description: Up to 200 data rows as the block/sheet will look once created
        total:
          type: integer
          title: Total row count
        has_more_rows:
          type: boolean
          title: Has more rows
          description: The read runs past the sheet's sample and the sheet was too big to count, so `total` counts only the sample's rows
          default: false
        range:
          type: string
          title: Range
          description: A1-style range actually used
          examples:
          - value: A3:E19
        used:
          oneOf:
          - prefixItems:
            - type: integer
            - type: integer
            type: array
          - type: 'null'
          title: Used row range
          description: 0-based (start, end) sample-row indices the read consumed
        structure_map:
          additionalProperties: {}
          type: object
          title: Structure Map
          description: Opaque — round-trip this back verbatim in the confirm call
      type: object
      required:
      - columns
      - range
      - rows
      - structure_map
      - total
      title: ResolvedReadSchema
    MultiSheetPreviewResponse:
      properties:
        blocks:
          items:
            $ref: '#/components/schemas/TableBlockSchema'
          type: array
          title: Blocks
          description: Every table block detected in the sheet — one entry for a normal sheet
        resolved:
          oneOf:
          - $ref: '#/components/schemas/ResolvedReadSchema'
          - type: 'null'
          title: Resolved read
          description: The requested block/sheet's read, when one could be produced
        error:
          oneOf:
          - type: string
          - type: 'null'
          title: Error
          description: Set instead of `resolved` when the instruction could not be applied
        source_rows:
          items:
            items:
              type: string
            type: array
          type: array
          title: Source rows
          description: The sheet's raw, unprocessed cells (up to 201 rows), for the source pane's side-by-side raw/clean comparison. Always the FULL sheet, even when `resolved` answers one block of a multi-table sheet — the source pane shows the whole sheet with everything outside the current block dimmed, not just that block's own rows.
        source_formatting:
          oneOf:
          - additionalProperties: {}
            type: object
          - type: 'null'
          title: Source formatting
          description: 'How the first 201 of `source_rows` look in Excel: per-cell styles, displayed number text, merged cells, column widths and hidden rows/columns. None when the sheet has no formatting to show.'
        suggestions:
          items:
            type: string
          type: array
          title: Suggestions
          description: 'Plain-English ways to read a sheet where no table was found, most useful first. Each one is itself an instruction: send it back as `user_instruction` to get that read. Empty when a table was found or none could be suggested.'
      type: object
      required: []
      title: MultiSheetPreviewResponse
    TableBlockSchema:
      properties:
        id:
          type: string
          title: Block id
          description: Stable id for this block within the sheet, echoed back on confirm
          examples:
          - value: block_0
        range:
          type: string
          title: Range
          description: A1-style range this block occupies within the sheet
          examples:
          - value: A10:E16
        row_start:
          type: integer
          title: Row start
          description: 1-based, inclusive start row of this block within the WHOLE sheet
          examples:
          - value: 10
        row_end:
          type: integer
          title: Row end
          description: 1-based, inclusive end row of this block within the WHOLE sheet
          examples:
          - value: 16
        name_hint:
          oneOf:
          - type: string
          - type: 'null'
          title: Name hint
          description: The block's own title row, when it has one (e.g. a region label)
          examples:
          - value: South
      type: object
      required:
      - id
      - range
      - row_end
      - row_start
      title: TableBlockSchema
  securitySchemes:
    bearerAuth:
      type: http
      description: 'Primary credential. Authorization: Bearer mm_<token>. The token is issued server-side and shown once at creation.'
      scheme: bearer
    apiKey:
      type: apiKey
      description: Deprecated — use bearerAuth.
      name: X-API-KEY
      in: header
    apiSecret:
      type: apiKey
      description: Deprecated — use bearerAuth.
      name: X-API-SECRET
      in: header
    workspaceId:
      type: apiKey
      description: Required with X-API-KEY and X-API-SECRET. Deprecated with them — use bearerAuth.
      name: X-WORKSPACE-ID
      in: header
x-refined-from:
- app.mammoth.io-openapi.json
- mammoth-io-openapi.json