> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filefeed.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Compare two pipeline runs (delta)

> Compares the processed files of two runs of the SAME pipeline (for example yesterday's ingest vs today's) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (`completed`, `delivered`, or `acknowledged`), and must be visible to the caller. The response carries summary counts plus a single paginated `changes` list (added entries first, then removed).



## OpenAPI

````yaml /api-reference/openapi.json get /pipeline-runs/delta
openapi: 3.0.3
info:
  title: FileFeed API
  version: '2026-05-25'
  description: >-
    Official FileFeed REST API for connections, pipelines, schemas, pipeline
    runs, webhooks, outbound uploads, documents, files, and notifications.
    Date-based API versioning is controlled by the `FileFeed-Version` request
    header (default `2024-09-01`; latest `2026-05-25`); this document describes
    the `2026-05-25` shape.
servers:
  - url: https://api.sftpsync.io
security:
  - ApiKeyAuth: []
tags:
  - name: Connections
  - name: Pipelines
  - name: Schemas
  - name: Pipeline Runs
  - name: Webhooks
  - name: Outbound Uploads
  - name: Documents
  - name: Files
  - name: Notifications
  - name: Clients (deprecated)
paths:
  /pipeline-runs/delta:
    get:
      tags:
        - Pipeline Runs
      summary: Compare two pipeline runs (delta)
      description: >-
        Compares the processed files of two runs of the SAME pipeline (for
        example yesterday's ingest vs today's) and returns the records added and
        removed. The diff is a whole-record multiset difference — the platform
        has no record-identity key, so a changed row surfaces as one removed
        plus one added. Both runs must belong to the same pipeline, must be in a
        processed state (`completed`, `delivered`, or `acknowledged`), and must
        be visible to the caller. The response carries summary counts plus a
        single paginated `changes` list (added entries first, then removed).
      parameters:
        - name: baseRunId
          in: query
          required: true
          schema:
            type: string
          description: Baseline (earlier) pipeline run id — the "before" side.
        - name: compareRunId
          in: query
          required: true
          schema:
            type: string
          description: >-
            Comparison (later) pipeline run id — the "after" side. Must belong
            to the same pipeline as baseRunId.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
          description: Offset into the flattened changes list.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
          description: Maximum number of change entries to return (1–1000).
      responses:
        '200':
          description: The delta between the two runs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PipelineRunDelta'
        '400':
          description: >-
            Same run id given twice, the two runs belong to different pipelines,
            a run is not in a processed state, or a processed file is not a
            record array.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: >-
            A run was not found in the workspace or is not visible to the
            caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    PipelineRunDelta:
      type: object
      description: Record-level delta between two runs of the same pipeline.
      properties:
        baseRunId:
          type: string
        compareRunId:
          type: string
        pipelineId:
          type: string
          description: The pipeline definition both runs belong to.
        summary:
          $ref: '#/components/schemas/PipelineRunDeltaSummary'
        changes:
          type: array
          items:
            $ref: '#/components/schemas/PipelineRunDeltaChange'
          description: Changed records for this page (added first, then removed).
        pagination:
          $ref: '#/components/schemas/PipelineRunDeltaPagination'
      required:
        - baseRunId
        - compareRunId
        - pipelineId
        - summary
        - changes
        - pagination
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
        statusCode:
          type: integer
        error:
          type: string
    PipelineRunDeltaSummary:
      type: object
      description: Aggregate counts for a pipeline-run delta.
      properties:
        baseCount:
          type: integer
          description: Records in the base run's processed file.
        compareCount:
          type: integer
          description: Records in the compare run's processed file.
        addedCount:
          type: integer
          description: Records present in the compare run but not the base run.
        removedCount:
          type: integer
          description: Records present in the base run but not the compare run.
      required:
        - baseCount
        - compareCount
        - addedCount
        - removedCount
    PipelineRunDeltaChange:
      type: object
      description: >-
        A single changed record. `added` = present only in the compare run;
        `removed` = present only in the base run.
      properties:
        changeType:
          type: string
          enum:
            - added
            - removed
        record:
          type: object
          additionalProperties: true
          description: >-
            The processed record (a row of the processed file) that was added or
            removed.
      required:
        - changeType
        - record
    PipelineRunDeltaPagination:
      type: object
      description: Pagination metadata for the flattened changes list.
      properties:
        total:
          type: integer
          description: Total change entries (addedCount + removedCount).
        offset:
          type: integer
        limit:
          type: integer
        returned:
          type: integer
          description: Number of change entries returned in this page.
      required:
        - total
        - offset
        - limit
        - returned
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````