---
title: "Get Stored Sync Run"
method: GET
path: "/api/v1/sync/history/{run_key}"
tags: ["External: Sync Status"]
---

# Get Stored Sync Run

`GET /api/v1/sync/history/{run_key}`

One stored sync run with its per-data-type breakdown.

## Path parameters

- `run_key` string, required

## Headers

- `X-Open-Wearables-API-Key` string, nullable

## Response `200`

Successful Response

- SyncRunDetail — A stored sync run with its per-data-type breakdown. Separate from SyncRunRecord so listing runs does not lazy-load the children.
  - `run_key` string, required
  - `user_id` string, uuid, required
  - `provider` string, required
  - `source` 'pull' | 'webhook' | 'sdk' | 'backfill' | 'xml_import' | 'linked_account', required — How the sync was initiated / what transport delivers data.
  - `scope` 'historical' | 'live', required — Whether the run backfills history or delivers current data.
  - `status` 'in_progress' | 'success' | 'partial' | 'failed' | 'cancelled' | 'skipped' | 'unfinished' | 'stale', required — Overall outcome state for the run.
  - `trace_id` string, nullable
  - `window_start` string, date-time, nullable
  - `window_end` string, date-time, nullable
  - `started_at` string, date-time, required
  - `ended_at` string, date-time, nullable
  - `items_inserted` integer
  - `items_updated` integer
  - `error` string, nullable
  - `data_types` SyncRunDataTypeRecord[]
    - `data_type` string, required
    - `kind` 'series' | 'score' | 'profile' | 'event' | 'task', required — What sort of thing a data type entry describes. Providers report at different granularities. SDK uploads report per series type, while REST pulls report per fetch task, and one task can write several series types. The kind records which of those a row represents so the two are not confused.
    - `status` 'in_progress' | 'success' | 'partial' | 'failed' | 'cancelled' | 'skipped' | 'unfinished' | 'stale', required — Overall outcome state for the run.
    - `native_type` string, nullable
    - `reported_records` integer, nullable
    - `items_inserted` integer
    - `items_updated` integer
    - `covered_start` string, date-time, nullable
    - `covered_end` string, date-time, nullable
    - `error_code` string, nullable
    - `error` string, nullable
    - `attempt` integer

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-08** `4e61b8720ebb` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openwearables/apis/open-wearables-api/changes/api/v1/sync/history/:run_key/get.md)

---

[API](https://skmtc.dev/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.dev/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openwearables/apis/open-wearables-api/revisions/6962739bc168?raw)
