---
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

- `time_limit` number — Stop streaming after N seconds.
- `soft_time_limit` number — Soft wall-clock deadline in seconds. Stops reading from the source between messages; the destination continues to drain and flush until time_limit fires.
- `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-23** `32948b4a64a1` — 1 info
  - added the new optional `query` request parameter `soft_time_limit`
- **2026-04-21** `d5eaf6622a23` — 2 breaking
  - the response property `oneOf[#/components/schemas/ControlMessage]/control/oneOf[subschema #2]/destination_config/oneOf[#/components/schemas/DestinationGoogleSheetsConfig]/access_token` became optional for the status `200`
  - response property `oneOf[#/components/schemas/ControlMessage]/control/oneOf[subschema #2]/destination_config/oneOf[#/components/schemas/DestinationGoogleSheetsConfig]/access_token` list-of-types was widened by adding types `null` to media type `application/x-ndjson` of response `200`
- **2026-04-21** `ea8ba2f05502` — 1 warning
  - deleted the `query` request parameter `state_limit`
- **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

[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/399c9fa011ec/schema)
