---
title: "Create a tabular data frame diff"
method: POST
path: "/api/repos/{namespace}/{repo_name}/compare/data_frames"
tags: ["Data Frames"]
---

# Create a tabular data frame diff

`POST /api/repos/{namespace}/{repo_name}/compare/data_frames`

## Request

- Base URL: `https://hub.oxen.ai`
- URL: `https://hub.oxen.ai/api/repos/{namespace}/{repo_name}/compare/data_frames`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/oxen/apis/oxen-server/docs/api/repos/:namespace/:repo_name/compare/data_frames/post.ts> (a function with typed inputs; its response is checked against the schema)

Create and cache a tabular diff comparing two data frames with configurable keys and target columns.

## Path parameters

- `namespace` string, required
- `repo_name` string, required

## Request body

- TabularCompareBody
  - `compare` TabularCompareTargetBody[], required
    - `compare_method` string, nullable
    - `left` string, nullable
    - `right` string, nullable
  - `compare_id` string, required
  - `display` TabularCompareTargetBody[], required
    - `compare_method` string, nullable
    - `left` string, nullable
    - `right` string, nullable
  - `keys` TabularCompareFieldBody[], required
    - `alias_as` string, nullable
    - `compare_method` string, nullable
    - `left` string, required
    - `right` string, required
  - `left` TabularCompareResourceBody, required
    - `path` string, required
    - `version` string, required
  - `right` TabularCompareResourceBody, required
    - `path` string, required
    - `version` string, required

## Response `200`

Data frame diff created and cached successfully

- CompareTabularResponse
  - `oxen_version` string, nullable
  - `status` string, required
  - `status_message` string, required
  - `dfs` CompareTabular, required
    - `display` TabularCompareTargetBody[], nullable
      - `compare_method` string, nullable
      - `left` string, nullable
      - `right` string, nullable
    - `dupes` CompareDupes, required
      - `left` integer, required
      - `right` integer, required
    - `keys` TabularCompareFieldBody[], nullable
      - `alias_as` string, nullable
      - `compare_method` string, nullable
      - `left` string, required
      - `right` string, required
    - `schema_diff` CompareSchemaDiff
      - `added_cols` CompareSchemaColumn[], required
        - `dtype` string, required
        - `key` string, required
        - `name` string, required
      - `removed_cols` CompareSchemaColumn[], required
        - `dtype` string, required
        - `key` string, required
        - `name` string, required
    - `source_schemas` CompareSourceSchemas, required
      - `left` Schema, required
        - `fields` Field[], required
          - `changes` Changes
            - `previous` PreviousField
              - …
            - `status` string, required
          - `dtype` string, required
          - `metadata` unknown
          - `name` string, required
        - `hash` string, required
        - `metadata` unknown
      - `right` Schema, required
        - `fields` Field[], required
          - `changes` Changes
            - `previous` PreviousField
              - …
            - `status` string, required
          - `dtype` string, required
          - `metadata` unknown
          - `name` string, required
        - `hash` string, required
        - `metadata` unknown
    - `summary` CompareSummary
      - `modifications` CompareTabularMods, required
        - `added_rows` integer, required
        - `modified_rows` integer, required
        - `removed_rows` integer, required
      - `schema` Schema, required
        - `fields` Field[], required
          - `changes` Changes
            - `previous` PreviousField
              - …
            - `status` string, required
          - `dtype` string, required
          - `metadata` unknown
          - `name` string, required
        - `hash` string, required
        - `metadata` unknown
    - `targets` TabularCompareTargetBody[], nullable
      - `compare_method` string, nullable
      - `left` string, nullable
      - `right` string, nullable
  - `messages` OxenMessage[], required
    - `description` string, required
    - `level` 'Info' | 'Warning' | 'Error', required
    - `title` string, required

## Other responses

- `400`: Bad Request (e.g., failed to parse body)
- `404`: Repository, revision, or file not found

---

[API](https://skmtc.dev/oxen/apis/oxen-server.md) - [All operations](https://skmtc.dev/oxen/apis/oxen-server/llms.txt) - [OpenAPI document](https://skmtc.dev/oxen/apis/oxen-server/revisions/2ae578129949?raw)
