---
title: "Validate a data feed without writing rows"
method: POST
path: "/data-feeds/preview"
tags: ["DataFeeds"]
---

# Validate a data feed without writing rows

`POST /data-feeds/preview`

## Request body

- DataFeedPreviewRequest
  - `feedType` 'emissions.seed.v1', required
  - `feedVersion` string, required
  - `idempotencyKey` string, required
  - `mode` 'upsert', required
  - `organizationExternalId` string — Optional legacy cross-check only. The selected Greentally organization header is authoritative.
  - `rows` EmissionSeedFeedRow[], required
    - `activityType` string
    - `amount` number, required
    - `categoryName` string, required
    - `cost` number
    - `currency` string
    - `departmentId` string
    - `emission` number, required
    - `endDate` string, date-time, required
    - `factor` number
    - `factorName` string
    - `id` string, required
    - `kind` 'activity' | 'spend', required
    - `locationId` string
    - `metadata` object
    - `productId` string
    - `recycledAmount` number
    - `scope` integer, required
    - `startDate` string, date-time, required
    - `subCategoryName` string, required
    - `supplierDisplay` string
    - `unit` string, required

## Response `200`

Previewed data feed job

- DataFeedJobResponse
  - `data` DataFeedJob, required
    - `actorUserId` string, required
    - `committedAt` string, date-time
    - `createdAt` string, date-time, required
    - `feedType` string, required
    - `feedVersion` string, required
    - `id` string, required
    - `idempotencyKey` string, required
    - `mode` string, required
    - `organizationId` string, required
    - `result` object, required
    - `status` 'previewed' | 'imported' | 'failed', required
    - `summary` DataFeedSummary, required
      - `activityRowCount` integer, required
      - `endDate` string, date-time
      - `errors` string[], required
      - `metricRowCount` integer, required
      - `rowCount` integer, required
      - `spendRowCount` integer, required
      - `startDate` string, date-time
      - `totalEmissionKgCO2e` number, required
      - `warnings` string[], required
    - `updatedAt` string, date-time, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/greentally/esgai-api/revisions/09945036a28b/schema)
