Paragon Managed Sync API

Normalized third-party data ingestion pipelines and records.

OpenAPI Specification

useparagon-managed-sync-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Paragon ActionKit Managed Sync API
  description: 'Unofficial, community-authored OpenAPI description of Paragon''s embedded integration platform APIs, compiled by API Evangelist from Paragon''s public documentation. Paragon exposes several distinct API surfaces across different hosts: the Connect API (zeus.useparagon.com) for managing authenticated users, connected credentials, integrations, workflow triggers, and proxied third-party requests; ActionKit (actionkit.useparagon.com) for listing and running prebuilt LLM-ready actions; and Managed Sync (sync.useparagon.com / managed-sync.useparagon.com) for normalized third-party data ingestion and permission checks.

    Nearly all requests are authenticated with a Paragon User Token, an RS256-signed JWT that your application signs with the private signing key from the Paragon dashboard (Settings > SDK Setup) and that Paragon verifies with the matching public key. In production most developers use Paragon''s Connect SDK and Connect Portal, which sit in front of this API; the raw HTTP surface documented here is used for server-side and headless integrations.

    Endpoint paths and payloads are approximate representations of Paragon''s documented behavior and should be verified against the official docs.'
  version: '1.0'
  contact:
    name: Paragon Support
    url: https://docs.useparagon.com/
  termsOfService: https://www.useparagon.com/legal/terms-of-service
servers:
- url: https://zeus.useparagon.com
  description: Connect API (users, credentials, integrations, workflow triggers, proxy)
- url: https://actionkit.useparagon.com
  description: ActionKit API (list and run prebuilt actions)
- url: https://proxy.useparagon.com
  description: Proxy API (alternate host for passthrough third-party requests)
- url: https://sync.useparagon.com
  description: Managed Sync API (data ingestion pipelines)
- url: https://managed-sync.useparagon.com
  description: Managed Sync records and Permissions API
security:
- ParagonUserToken: []
tags:
- name: Managed Sync
  description: Normalized third-party data ingestion pipelines and records.
paths:
  /api/syncs:
    post:
      operationId: createSync
      tags:
      - Managed Sync
      summary: Create a Managed Sync pipeline
      description: Enables a fully managed, normalized ingestion pipeline for the authenticated user's connected integration (CRM, ticketing, file storage, or accounting). Paragon performs an initial backfill and then keeps data current with incremental syncs, emitting record_updated webhooks on change.
      servers:
      - url: https://sync.useparagon.com
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSyncRequest'
      responses:
        '201':
          description: The created sync pipeline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sync'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listSyncs
      tags:
      - Managed Sync
      summary: List Managed Sync pipelines
      description: Lists the sync pipelines configured for the authenticated user.
      servers:
      - url: https://sync.useparagon.com
      responses:
        '200':
          description: The list of syncs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Sync'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /sync/{syncId}/records:
    get:
      operationId: listSyncRecords
      tags:
      - Managed Sync
      summary: List normalized records for a sync
      description: Returns a page of normalized, unified records ingested by the given sync pipeline. Use the returned cursor to page through the full replica.
      servers:
      - url: https://managed-sync.useparagon.com
      parameters:
      - name: syncId
        in: path
        required: true
        schema:
          type: string
      - name: cursor
        in: query
        required: false
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A page of normalized records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordPage'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /sync/{syncId}/records/{recordId}/content:
    get:
      operationId: getRecordContent
      tags:
      - Managed Sync
      summary: Get the content of a synced record
      description: Retrieves the underlying content for a single normalized record (for example, the file body for a file-storage ingestion).
      servers:
      - url: https://managed-sync.useparagon.com
      parameters:
      - name: syncId
        in: path
        required: true
        schema:
          type: string
      - name: recordId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The record content.
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    RecordPage:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            additionalProperties: true
        nextCursor:
          type: string
          nullable: true
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
    CreateSyncRequest:
      type: object
      required:
      - integration
      - pipeline
      properties:
        integration:
          type: string
          description: The integration type to sync (e.g. salesforce).
        pipeline:
          type: string
          description: The named ingestion pipeline (e.g. crm, tickets, files, accounting).
        configuration:
          type: object
          additionalProperties: true
    Sync:
      type: object
      properties:
        id:
          type: string
        integration:
          type: string
        pipeline:
          type: string
        status:
          type: string
          enum:
          - INITIALIZING
          - BACKFILLING
          - ACTIVE
          - PAUSED
          - ERROR
        createdAt:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Missing or invalid Paragon User Token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ParagonUserToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'A Paragon User Token: an RS256-signed JWT whose subject identifies the end user. Sign it with the private signing key from Settings > SDK Setup in the Paragon dashboard; Paragon verifies it with the matching public key.'