---
title: "Run sync pipeline (read → write)"
method: POST
path: "/pipeline_sync"
tags: ["Stateless Sync API"]
---

# Run sync pipeline (read → write)

`POST /pipeline_sync`

Without a request body, reads from the source connector and writes to the destination (backfill mode). With an NDJSON request body, uses the provided messages as input instead of reading from the source (push mode — e.g. piped webhook events).

## Query parameters

- `state_limit` integer — Stop streaming after N state messages.
- `time_limit` number — Stop streaming after N seconds.
- `run_id` string — Optional sync run identifier used to track bounded sync progress.

## Response `200`

NDJSON stream of sync messages

## Other responses

- `400` — Invalid params

## Changes

- **2026-04-21** `c19b0d0a0631` — 2 breaking, 1 warning
  - the response property `oneOf[#/components/schemas/StreamStatusMessage]/stream_status/oneOf[subschema #1]/time_range/gte` became optional for the status `200`
  - the response property `oneOf[#/components/schemas/StreamStatusMessage]/stream_status/oneOf[subschema #1]/time_range/lt` became optional for the status `200`
  - removed the optional property `oneOf[#/components/schemas/ControlMessage]/control/oneOf[subschema #1]/source_config/max_concurrent_streams` from the response with the `200` status
- **2026-04-20** `98cef0c30f36` — 1 breaking
  - the `header` request parameter `x-pipeline` became required
- **2026-04-20** `f65cba437180` — 1 info
  - added the required property `oneOf[#/components/schemas/EofMessage]/eof/status` to the response with the `200` status
- **2026-04-20** `66a8ac47e72b` — 2 warning, 2 info
  - deleted the `query` request parameter `sync_run_id`
  - removed the optional property `oneOf[#/components/schemas/EofMessage]/eof/ending_state/sync_run/sync_run_id` from the response with the `200` status
  - added the new optional `query` request parameter `run_id`
  - added the optional property `oneOf[#/components/schemas/EofMessage]/eof/ending_state/sync_run/run_id` to the response with the `200` status
- **2026-04-20** `1e719ad9a31f` — 1 breaking
  - removed the media type `application/json` from the request body

[Full history](https://skmtc.dev/stripe/apis/stripe-sync-engine/changes/pipeline_sync/post.md)

---

[API](https://skmtc.dev/stripe/apis/stripe-sync-engine.md) · [All operations](https://skmtc.dev/stripe/apis/stripe-sync-engine/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stripe/stripe-sync-engine/revisions/c19b0d0a0631/schema)
