> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useparagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Get the current status of a Sync

# Get Sync Status

Once you have a Sync enabled for a particular Connected User, you can start to poll its status.


## OpenAPI

````yaml get /api/syncs/{syncId}
openapi: 3.0.0
info:
  title: Paragon Sync API
  description: API for managing Syncs and permissions for Connected Users
  version: 1.0.0
servers:
  - url: https://sync.useparagon.com
    description: Production server
security:
  - bearerAuth: []
paths:
  /api/syncs/{syncId}:
    get:
      summary: Get Sync Status
      description: Get the status of a Sync for a Connected User
      parameters:
        - name: syncId
          in: path
          required: true
          schema:
            type: string
          description: ID of the sync to get the status of
      responses:
        '200':
          description: Sync status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncStatus'
        '401':
          description: Unauthorized
        '404':
          description: Sync not found
components:
  schemas:
    SyncStatus:
      type: object
      required:
        - status
        - summary
      properties:
        status:
          $ref: '#/components/schemas/StatusField'
        credentialId:
          type: string
          description: The ID of the credential used to authenticate this Sync
        summary:
          type: object
          required:
            - totalRecords
            - syncedRecordsCount
          description: Metrics on the sync progress and last seen record timestamps
          properties:
            totalRecords:
              type: integer
              description: Total number of records in the Sync
            syncedRecordsCount:
              type: integer
              description: Number of records that have been synced
            lastSyncedAt:
              type: string
              format: date-time
              description: Timestamp of when the Sync was last completed
            latestCursor:
              type: string
              description: >-
                A paging cursor pointing to records that will be created,
                updated, or deleted after the `lastSyncedAt` timestamp
        rateLimitBackoffMs:
          type: integer
          description: >-
            If the sync status is `RATE_LIMITED`, the duration (in milliseconds)
            that the Sync is backing off before it resumes fetching data, in
            response to the third-party API's rate limit.


            The Sync resumes automatically once this back-off period has passed.
            We recommend waiting at least this long before polling the Sync
            status again.
          example: 30000
        reason:
          type: string
          description: >-
            If the sync status is `ERRORED`, this field will be populated with a
            message explaining why the sync failed.
          example: Credential ID [id] is no longer valid or has been deleted.
    StatusField:
      type: string
      enum:
        - INITIALIZING
        - ACTIVE
        - IDLE
        - RATE_LIMITED
        - DISABLED
        - ERRORED
      description: "Current state of Sync activity.\nPossible values:\n- `INITIALIZING`: The Sync has just been created and is pending its first run.\n- `ACTIVE`: The Sync is actively fetching new data.\n- `IDLE`: The Sync has completed and is watching for updates to synced data.\n\t- Check `summary.lastSyncedAt` to see if the sync has successfully completed.\n- `RATE_LIMITED`: The Sync is backing off because the third-party API's rate limit was reached. Check `rateLimitBackoffMs` for the back-off duration. The Sync resumes automatically once the back-off period passes.\n- `DISABLED`: The Sync has been paused temporarily by the [Disable a Sync](/managed-sync/api/disable-sync) endpoint.\n- `ERRORED`: The Sync has been suspended due to an error. Check [Webhook Events](/managed-sync/webhooks) for additional error details."
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Paragon User Token. Add to the Authorization header of your requests.

````