Extend Extract API

The Extract API from Extend — 6 operation(s) for extract.

OpenAPI Specification

extend-ai-extract-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Extend Batch Extract API
  description: The Extend API turns documents into high quality structured data. It exposes file management, synchronous and asynchronous document processors (parse, extract, classify, split), reusable processor definitions (extractors, classifiers, splitters), durable multi-step workflows and workflow runs, evaluation sets, and batch processing. All requests are authenticated with a Bearer API token and should pin an API version via the x-extend-api-version header.
  termsOfService: https://www.extend.ai
  contact:
    name: Extend Support
    url: https://docs.extend.ai
  version: '2026-02-09'
servers:
- url: https://api.extend.ai
  description: Extend production API
security:
- BearerAuth: []
tags:
- name: Extract
paths:
  /extract:
    post:
      operationId: extractFile
      tags:
      - Extract
      summary: Extract from a file (synchronous)
      description: Synchronously extract structured fields from a document using an inline config or a saved extractor. Five minute timeout; use POST /extract_runs for production.
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtractRequest'
      responses:
        '200':
          description: A processed extract run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorRun'
        default:
          $ref: '#/components/responses/ApiError'
  /extract_runs:
    post:
      operationId: createExtractRun
      tags:
      - Extract
      summary: Create an extract run (asynchronous)
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtractRequest'
      responses:
        '200':
          description: The created extract run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorRun'
        default:
          $ref: '#/components/responses/ApiError'
  /extract_runs/{id}:
    get:
      operationId: getExtractRun
      tags:
      - Extract
      summary: Get an extract run
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      - $ref: '#/components/parameters/PathId'
      responses:
        '200':
          description: The requested extract run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorRun'
        default:
          $ref: '#/components/responses/ApiError'
  /extractors:
    get:
      operationId: listExtractors
      tags:
      - Extract
      summary: List extractors
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      - $ref: '#/components/parameters/NextPageToken'
      - $ref: '#/components/parameters/MaxPageSize'
      responses:
        '200':
          description: A page of extractors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  extractors:
                    type: array
                    items:
                      $ref: '#/components/schemas/Processor'
                  nextPageToken:
                    type: string
        default:
          $ref: '#/components/responses/ApiError'
    post:
      operationId: createExtractor
      tags:
      - Extract
      summary: Create an extractor
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorCreateRequest'
      responses:
        '200':
          description: The created extractor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Processor'
        default:
          $ref: '#/components/responses/ApiError'
  /extractors/{id}:
    get:
      operationId: getExtractor
      tags:
      - Extract
      summary: Get an extractor
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      - $ref: '#/components/parameters/PathId'
      responses:
        '200':
          description: The requested extractor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Processor'
        default:
          $ref: '#/components/responses/ApiError'
    post:
      operationId: updateExtractor
      tags:
      - Extract
      summary: Update an extractor
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      - $ref: '#/components/parameters/PathId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessorCreateRequest'
      responses:
        '200':
          description: The updated extractor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Processor'
        default:
          $ref: '#/components/responses/ApiError'
  /extractors/{id}/versions:
    post:
      operationId: createExtractorVersion
      tags:
      - Extract
      summary: Create an extractor version
      parameters:
      - $ref: '#/components/parameters/ApiVersion'
      - $ref: '#/components/parameters/PathId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                releaseType:
                  type: string
                  enum:
                  - MAJOR
                  - MINOR
                  - PATCH
                description:
                  type: string
                config:
                  type: object
      responses:
        '200':
          description: The created extractor version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Processor'
        default:
          $ref: '#/components/responses/ApiError'
components:
  schemas:
    Processor:
      type: object
      properties:
        object:
          type: string
          example: processor
        id:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - EXTRACT
          - CLASSIFY
          - SPLIT
        version:
          type: string
        config:
          type: object
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    RunStatus:
      type: string
      enum:
      - PENDING
      - PROCESSING
      - PROCESSED
      - FAILED
      - CANCELLED
      - NEEDS_REVIEW
      - REJECTED
    FileInput:
      oneOf:
      - $ref: '#/components/schemas/FileFromUrl'
      - $ref: '#/components/schemas/FileFromId'
      - $ref: '#/components/schemas/FileFromText'
    FileFromUrl:
      type: object
      required:
      - url
      properties:
        url:
          type: string
        name:
          type: string
        settings:
          type: object
          properties:
            password:
              type: string
    RunMetadata:
      type: object
      additionalProperties: true
      description: Custom metadata for a run, up to 10KB.
    ExtractRequest:
      type: object
      required:
      - file
      properties:
        file:
          $ref: '#/components/schemas/FileInput'
        extractor:
          type: object
          properties:
            id:
              type: string
            version:
              type: string
            overrideConfig:
              type: object
        config:
          type: object
          description: Inline extract config with schema, baseProcessor, extractionRules.
        metadata:
          $ref: '#/components/schemas/RunMetadata'
    ProcessorRun:
      type: object
      properties:
        object:
          type: string
          example: processor_run
        id:
          type: string
        status:
          $ref: '#/components/schemas/RunStatus'
        type:
          type: string
          enum:
          - EXTRACT
          - CLASSIFY
          - SPLIT
        file:
          type: object
        output:
          type: object
          additionalProperties: true
        config:
          type: object
        usage:
          type: object
        dashboardUrl:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    FileFromId:
      type: object
      required:
      - id
      properties:
        id:
          type: string
    FileFromText:
      type: object
      required:
      - text
      properties:
        text:
          type: string
    ApiError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        retryable:
          type: boolean
        requestId:
          type: string
    ProcessorCreateRequest:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        config:
          type: object
  parameters:
    PathId:
      name: id
      in: path
      required: true
      schema:
        type: string
    MaxPageSize:
      name: maxPageSize
      in: query
      required: false
      schema:
        type: integer
    NextPageToken:
      name: nextPageToken
      in: query
      required: false
      schema:
        type: string
    ApiVersion:
      name: x-extend-api-version
      in: header
      required: false
      description: API version to pin the request to, for example 2026-02-09.
      schema:
        type: string
        example: '2026-02-09'
  responses:
    ApiError:
      description: Error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Provide your Extend API token as a Bearer token in the Authorization header.