Tinvio Magic API

Create a transaction from an uploaded document or import a bank statement from an attachment, using AI extraction.

Operations 4

POST /api/v1/magic/createBusinessTransactionFromAttachment Create Business Transaction from Attachment #
POST /api/v1/magic/createClaimFromAttachment Create Claim from Attachment #
POST /api/v1/magic/importBankStatementFromAttachment Import Bank Statement from Attachment #
POST /api/v1/magic/workflows/search Search Magic Workflows #

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/tinvio-com:tinvio-com-magic-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

tinvio-com-magic-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Tinvio Com Magic API
  version: '1.0'
  contact:
    email: build.with@jaz.ai
    name: API Support
    url: https://jaz.ai
  description: 'Operations tagged Magic across 2 of this provider''s published API definitions: tinvio-com-openapi-original.yaml, tinvio-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.getjaz.com
tags:
- description: Create a transaction from an uploaded document or import a bank statement from an attachment, using AI extraction.
  name: Magic
paths:
  /api/v1/magic/createBusinessTransactionFromAttachment:
    post:
      description: Uploads and process invoice files. Supports file upload (sourceType=FILE), URL download (sourceType=URL), or raw HTML rendered to a PDF (sourceType=HTML).
      operationId: magic-create-business-transaction-from-attachment
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessMagicBTResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Create Business Transaction from Attachment
      tags:
      - Magic
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                businessTransactionType:
                  type: string
                  enum:
                  - INVOICE
                  - BILL
                  - CUSTOMER_CREDIT_NOTE
                  - SUPPLIER_CREDIT_NOTE
                  - SALE_QUOTE
                  - SALE_ORDER
                  - PURCHASE_REQUEST
                  - PURCHASE_ORDER
                  default: INVOICE
                  description: Type of transaction to create.
                sourceType:
                  type: string
                  enum:
                  - URL
                  - FILE
                  - HTML
                  default: FILE
                  description: Source of the file to process.
                uploadMode:
                  type: string
                  enum:
                  - SEPARATE
                  - MERGED
                  default: SEPARATE
                  description: 'Upload mode for file preprocessing. SEPARATE (default): each file is processed individually, also handles auto-detected ZIPs. MERGED: a single PDF containing multiple documents is split into individual PDFs before processing.'
                sourceURL:
                  type: string
                  description: URL to download the file from (required if sourceType=URL). Max 65536 characters.
                sourceFile:
                  type: string
                  description: 'Attachment file to upload (required if sourceType=FILE). Supported: PDF, PNG, JPEG, HEIC, XLS, XLSX, EML. Max 10 MB.'
                  format: binary
                html:
                  type: string
                  description: Raw HTML to render to a PDF, then process (required if sourceType=HTML). Max 5 MB.
                internalNotes:
                  type: string
                  description: Internal notes to set on the record this file creates. Visible only inside the organization. Max 3000 characters.
              required:
              - businessTransactionType
              - sourceType
    servers:
    - url: https://api.getjaz.com
  /api/v1/magic/createClaimFromAttachment:
    post:
      description: Upload a receipt (sourceType=FILE), pull one from a URL (sourceType=URL), or render raw HTML such as an email body to a PDF (sourceType=HTML); the file is stored and run through the Magic OCR pipeline, which extracts the expense and creates a draft claim. Optional contactResourceId / claimProfileResourceId / currencyCode / valueDate / internalNotes override the OCR-extracted values. Optional employeeResourceId binds the draft to a specific employee (on-behalf-of). Omit it to auto-bind the uploader's own employee; naming another employee requires a claims Manager/Admin.
      operationId: magic-create-claim-from-attachment
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Create Claim from Attachment
      tags:
      - Magic
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                sourceType:
                  type: string
                  enum:
                  - URL
                  - FILE
                  - HTML
                  default: FILE
                  description: Source of the receipt.
                sourceFile:
                  type: string
                  description: 'Receipt file (required if sourceType=FILE). Supported: PDF, PNG, JPEG, HEIC. Max 10 MB.'
                  format: binary
                sourceURL:
                  type: string
                  description: URL to download the receipt from (required if sourceType=URL). Max 65536 characters.
                html:
                  type: string
                  description: Raw HTML (e.g. an email body) rendered to a PDF then processed (required if sourceType=HTML). Max 5 MB.
                contactResourceId:
                  type: string
                  description: Resource ID of the vendor contact to pre-bind.
                claimProfileResourceId:
                  type: string
                  description: Resource ID of the claim profile to bind.
                currencyCode:
                  type: string
                  description: Currency override (ISO 4217).
                valueDate:
                  type: string
                  description: Date override, in YYYY-MM-DD format.
                internalNotes:
                  type: string
                  description: Internal notes override.
                employeeResourceId:
                  type: string
                  description: Employee to bind the draft to, on-behalf-of (UUIDv4). Omit to auto-bind the uploader's own employee; naming another requires a claims Manager/Admin.
              required:
              - sourceType
    servers:
    - url: https://api.getjaz.com
  /api/v1/magic/importBankStatementFromAttachment:
    post:
      description: Uploads and process Bank Statement files. Supports file upload (sourceType=FILE) or URL download (sourceType=URL).
      operationId: magic-import-bank-statement-from-attachment
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessBankStatementResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Import Bank Statement from Attachment
      tags:
      - Magic
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                businessTransactionType:
                  type: string
                  enum:
                  - BANK_STATEMENT
                  default: BANK_STATEMENT
                  description: Type of transaction.
                sourceType:
                  type: string
                  enum:
                  - URL
                  - FILE
                  default: FILE
                  description: Source of the file to process.
                accountResourceId:
                  type: string
                  description: Resource ID of the bank account.
                sourceURL:
                  type: string
                  description: URL to download the file from (required if sourceType=URL). Max 65536 characters.
                sourceFile:
                  type: string
                  description: 'Attachment file to upload (required if sourceType=FILE). Supported: PDF, PNG, JPEG, HEIC, XLS, XLSX, EML. Max 10 MB.'
                  format: binary
              required:
              - businessTransactionType
              - sourceType
              - accountResourceId
    servers:
    - url: https://api.getjaz.com
  /api/v1/magic/workflows/search:
    post:
      description: Search across document-processing workflow tasks and bank statement imports, with filters, sort, and pagination.
      operationId: search-magic-workflow
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchMagicWorkflowPageableResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Search Magic Workflows
      tags:
      - Magic
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchMagicWorkflowClientRequest'
        description: Search filters, sort, and pagination.
        required: true
    servers:
    - url: https://api.getjaz.com
components:
  schemas:
    MagicWorkflowSearchFilter:
      properties:
        createdAt:
          allOf:
          - $ref: '#/components/schemas/DateExpression'
          description: Workflow creation date, in YYYY-MM-DD format.
        documentType:
          description: 'Document type filter. Determines which workflow tables are queried. Allowed values: SALE, PURCHASE, SALE_CREDIT_NOTE, PURCHASE_CREDIT_NOTE, SALE_QUOTE, SALE_ORDER, PURCHASE_REQUEST, PURCHASE_ORDER, BANK_STATEMENT.'
          items:
            enum:
            - SALE
            - PURCHASE
            - SALE_CREDIT_NOTE
            - PURCHASE_CREDIT_NOTE
            - SALE_QUOTE
            - SALE_ORDER
            - PURCHASE_REQUEST
            - PURCHASE_ORDER
            - BANK_STATEMENT
            type: string
          type: array
        fileName:
          allOf:
          - $ref: '#/components/schemas/StringExpression'
          description: Original file name of the uploaded attachment.
        fileType:
          description: 'File type filter for the uploaded attachment. Allowed values: PDF, PNG, JPEG, JPG, HEIC, CSV, XLS, XLSX, EML.'
          items:
            enum:
            - PDF
            - PNG
            - JPEG
            - JPG
            - HEIC
            - CSV
            - XLS
            - XLSX
            - EML
            type: string
          type: array
        resourceId:
          allOf:
          - $ref: '#/components/schemas/StringExpression'
          description: Workflow resource ID (UUIDv4).
        status:
          description: 'Unified workflow status filter. Allowed values: SUBMITTED, PROCESSING, COMPLETED, FAILED.'
          items:
            enum:
            - SUBMITTED
            - PROCESSING
            - COMPLETED
            - FAILED
            type: string
          type: array
      type: object
    SearchMagicWorkflowClientRequest:
      properties:
        filter:
          allOf:
          - $ref: '#/components/schemas/MagicWorkflowSearchFilter'
          description: Filter criteria for magic workflow search.
        limit:
          default: 100
          description: Maximum number of results per page (max 1000).
          maximum: 1000
          minimum: 1
          type: integer
        offset:
          default: 0
          description: Zero-indexed row offset into the result set. Sort is required when offset is set.
          maximum: 65536
          minimum: 0
          type: integer
        query:
          description: 'Structured search query using Jaz search operators. Parsed automatically into filter fields.

            Explicit filter fields override query results on conflict.

            Example: "status:unpaid AND $500+".'
          maxLength: 1000
          type: string
        sort:
          allOf:
          - $ref: '#/components/schemas/MagicWorkflowSortFilter'
          description: Sort criteria (required when using offset).
      type: object
    ErrorResponse:
      properties:
        error:
          allOf:
          - $ref: '#/components/schemas/ErrorResponseData'
          description: Error details.
      type: object
    DateExpression:
      properties:
        between:
          description: Match dates between these two dates (exactly two, in YYYY-MM-DD format).
          items:
            type: string
          type: array
        eq:
          description: Match dates equal to this, in YYYY-MM-DD format.
          type: string
        gt:
          description: Match dates after this, in YYYY-MM-DD format.
          type: string
        gte:
          description: Match dates on or after this, in YYYY-MM-DD format.
          type: string
        isNotNull:
          description: Match records where the date is set. Pass the placeholder date "0001-01-01".
          example: '0001-01-01'
          type: string
        isNull:
          description: Match records where the date is not set. Pass the placeholder date "0001-01-01".
          example: '0001-01-01'
          type: string
        lt:
          description: Match dates before this, in YYYY-MM-DD format.
          type: string
        lte:
          description: Match dates on or before this, in YYYY-MM-DD format.
          type: string
        notBetween:
          description: Match dates outside these two dates (exactly two, in YYYY-MM-DD format).
          items:
            type: string
          type: array
      required:
      - between
      type: object
    SearchMagicWorkflowPageableResponse:
      properties:
        data:
          description: List of magic workflow records.
          items:
            $ref: '#/components/schemas/MagicWorkflowItem'
          type: array
        totalElements:
          description: Total number of records matching the query.
          example: 42
          type: integer
        totalPages:
          description: Total number of pages.
          example: 1
          type: integer
      type: object
    BaseResponse:
      properties:
        data:
          description: The response object.
      type: object
    ProcessMagicBTResponse:
      properties:
        data:
          allOf:
          - $ref: '#/components/schemas/ProcessMagicBTResponseData'
          description: Processing result.
      type: object
    MagicWorkflowBankStatementDetails:
      properties:
        accountNumber:
          description: Bank account number.
          type: string
        importedDate:
          description: Import timestamp.
          type: string
        organizationAccountResourceId:
          description: Linked bank account resource ID.
          type: string
        statementEndDate:
          description: Statement period end date, in YYYY-MM-DD format.
          example: '2024-01-31'
          type: string
        statementEntryCount:
          description: Number of parsed statement entries.
          example: 25
          type: integer
        statementStartDate:
          description: Statement period start date, in YYYY-MM-DD format.
          example: '2024-01-01'
          type: string
        statementStatus:
          description: Statement processing status.
          type: string
      type: object
    StringExpression:
      properties:
        contains:
          description: Match values containing this substring.
          type: string
        endWith:
          description: Match values ending with this term (case sensitive).
          type: string
        eq:
          description: Match values equal to this.
          type: string
        in:
          description: Match values equal to any of these.
          items:
            type: string
          maxItems: 100
          type: array
        isBlank:
          description: Match records where the field is null or empty ("true") or neither ("false").
          type: string
        isNotBlank:
          description: Match records where the field is neither null nor empty ("true").
          type: string
        isNull:
          description: Match records where the field is null ("true") or not null ("false").
          type: string
        likeIn:
          description: Match values containing any of these substrings.
          items:
            type: string
          maxItems: 100
          type: array
        neq:
          description: Match values not equal to this.
          type: string
        notContains:
          description: Match values not containing this substring.
          type: string
        notEndWith:
          description: Match values not ending with this term (case sensitive).
          type: string
        notStartWith:
          description: Match values not starting with this term (case sensitive).
          type: string
        reg:
          description: Match values containing any of these terms. This is a substring match, not a regular expression, despite the name.
          items:
            type: string
          maxItems: 100
          type: array
        startWith:
          description: Match values starting with this term (case sensitive).
          type: string
      required:
      - in
      - likeIn
      - reg
      type: object
    ProcessBankStatementResponse:
      properties:
        data:
          allOf:
          - $ref: '#/components/schemas/ProcessBankStatementResponseData'
          description: Processing result.
      type: object
    MagicWorkflowSortFilter:
      properties:
        order:
          description: Sort direction, ASC or DESC.
          enum:
          - ASC
          - asc
          - DESC
          - desc
          type: string
        sortBy:
          description: Fields to sort by, in priority order.
          items:
            type: string
          maxItems: 25
          type: array
          uniqueItems: true
      required:
      - order
      - sortBy
      type: object
    ProcessMagicBTResponseData:
      properties:
        businessTransactionType:
          description: Type of transaction created.
          enum:
          - SALE
          - PURCHASE
          - SALE_CREDIT_NOTE
          - PURCHASE_CREDIT_NOTE
          - SALE_QUOTE
          - SALE_ORDER
          - PURCHASE_REQUEST
          - PURCHASE_ORDER
          example: SALE
          type: string
        filename:
          description: Original file name of the uploaded attachment.
          example: invoice.pdf
          type: string
        invalidFiles:
          description: Files that failed processing.
          items:
            $ref: '#/components/schemas/MagicFileResult'
          type: array
        validFiles:
          description: Files processed successfully.
          items:
            $ref: '#/components/schemas/MagicFileResult'
          type: array
      type: object
    MagicWorkflowBusinessTransactionDetails:
      properties:
        businessTransactionResourceId:
          description: Resource ID of the created draft business transaction (null until created).
          type: string
        ocrJobType:
          description: OCR job type (SYNC or ASYNC).
          example: SYNC
          type: string
        parentResourceId:
          description: Parent workflow resource ID for retry/split flows.
          type: string
        workflowStatus:
          description: Raw workflow status (for example TRANSACTION_CREATED, OCR_SYNC_SUCCEEDED, or OCR_ASYNC_SUBMITTED).
          example: TRANSACTION_CREATED
          type: string
      type: object
    MagicWorkflowItem:
      properties:
        bankStatementDetails:
          allOf:
          - $ref: '#/components/schemas/MagicWorkflowBankStatementDetails'
          description: Bank statement import details. Populated for BANK_STATEMENT rows, null for transaction rows.
        batchId:
          description: Batch grouping identifier.
          type: string
        businessTransactionDetails:
          allOf:
          - $ref: '#/components/schemas/MagicWorkflowBusinessTransactionDetails'
          description: Transaction workflow details. Populated for transaction rows, null for BANK_STATEMENT rows.
        createdAt:
          description: Workflow creation timestamp.
          example: '2024-01-15'
          type: string
        createdBy:
          description: User who created the workflow.
          type: string
        documentType:
          description: Document type (SALE, PURCHASE, SALE_CREDIT_NOTE, PURCHASE_CREDIT_NOTE, or BANK_STATEMENT).
          example: SALE
          type: string
        failureReason:
          description: Error details when workflow has failed.
          type: string
        fileId:
          description: File identifier (MD5 hash).
          type: string
        fileName:
          description: Original filename of the uploaded attachment.
          example: invoice.pdf
          type: string
        fileType:
          description: File type of the uploaded attachment (PDF, PNG, JPG, CSV, etc.).
          example: PDF
          type: string
        fileUrl:
          description: URL of the uploaded file.
          type: string
        firebaseUpdated:
          description: When true, the real-time status notification has been sent.
          type: boolean
        organizationResourceId:
          description: Organization resource ID (UUIDv4).
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          type: string
        resourceId:
          description: Workflow resource ID (UUIDv4).
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          type: string
        status:
          description: Unified workflow status (SUBMITTED, PROCESSING, COMPLETED, FAILED).
          example: COMPLETED
          type: string
        updatedAt:
          description: Workflow last updated timestamp.
          example: '2024-01-15'
          type: string
      type: object
    MagicFileDetails:
      properties:
        fileId:
          description: MD5 hash identifier of the file.
          type: string
        fileName:
          description: Original file name.
          example: invoice.pdf
          type: string
        fileType:
          description: File MIME type.
          example: PDF
          type: string
        fileURL:
          description: URL of the uploaded file.
          type: string
      type: object
    ProcessBankStatementResponseData:
      properties:
        businessTransactionType:
          description: Type of transaction.
          example: BANK_STATEMENT
          type: string
        filename:
          description: Original file name of the uploaded attachment.
          example: statement.pdf
          type: string
        invalidFiles:
          description: Files that failed processing.
          items:
            $ref: '#/components/schemas/MagicFileResult'
          type: array
        validFiles:
          description: Files processed successfully.
          items:
            $ref: '#/components/schemas/MagicFileResult'
          type: array
      type: object
    ErrorResponseData:
      properties:
        error_type:
          description: Error category, for example validation_error, invalid_request_body, or internal_server_error.
          example: validation_error
          type: string
        errors:
          description: Error messages describing what went wrong.
          items:
            type: string
          type: array
      type: object
    MagicFileResult:
      properties:
        errorCode:
          description: Error code when processing failed.
          type: string
        errorMessage:
          description: Error message when processing failed.
          type: string
        fileDetails:
          allOf:
          - $ref: '#/components/schemas/MagicFileDetails'
          description: Details of the uploaded file.
        subscriptionFBPath:
          description: Subscription path for real-time status updates.
          type: string
        workflowResourceId:
          description: Resource ID of the workflow task, for tracking processing status.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: Organization API key. Pass it in the x-jk-api-key header on every request.
      in: header
      name: x-jk-api-key
      type: apiKey
x-refined-from:
- tinvio-com-openapi-original.yaml
- tinvio-com-openapi.yml