Hightouch Sync Templates API

The Sync Templates API from Hightouch — 2 operation(s) for sync templates.

Operations 4

GET /sync-templates/{syncTemplateId} Get Sync Template #
PATCH /sync-templates/{syncTemplateId} Update Sync Template #
GET /sync-templates List Sync Templates #
POST /sync-templates Create Sync Template #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hightouch:hightouch-sync-templates-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hightouch-sync-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hightouch Sync Templates API
  version: 1.0.0
  description: Hightouch Public Rest API to access syncs, models, sources and destinations
  contact:
    name: Hightouch
    url: https://hightouch.com
servers:
- url: https://api.hightouch.com/api/v1
tags:
- name: Sync Templates
paths:
  /sync-templates/{syncTemplateId}:
    get:
      operationId: GetSyncTemplate
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncTemplate'
              examples:
                Example 1:
                  value:
                    id: 1
                    name: Salesforce Contacts Template
                    description: Reusable template for syncing contacts to Salesforce.
                    workspaceId: 1
                    createdAt: '2022-02-16T21:37:58.510Z'
                    updatedAt: '2022-02-16T21:37:58.510Z'
                    modelId: 42
                    destinationId: 17
                    configuration:
                      mode: upsert
                      object: Contact
                      externalIdMapping:
                        from: email
                        to: Email
                      mappings: []
                      configVersion: 1
                    schedule: null
                    schedulePaused: false
                    tags: {}
                    overrideConfig:
                      mappings:
                        overridable: true
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
      description: Retrieve a sync template given its ID
      summary: Get Sync Template
      security:
      - bearerAuth: []
      parameters:
      - description: The id of the sync template
        in: path
        name: syncTemplateId
        required: true
        schema:
          format: double
          type: number
      tags:
      - Sync Templates
    patch:
      operationId: UpdateSyncTemplate
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/SyncTemplate'
                - $ref: '#/components/schemas/ValidateErrorJSON'
                - $ref: '#/components/schemas/InternalServerError'
              examples:
                Example 1:
                  value:
                    id: 1
                    name: Salesforce Contacts Template (v2)
                    workspaceId: 1
                    createdAt: '2022-12-12T22:46:57.618Z'
                    updatedAt: '2022-12-15T20:23:22.319Z'
                    modelId: 42
                    destinationId: 17
                    configuration:
                      mode: upsert
                      object: Contact
                      externalIdMapping:
                        from: email
                        to: Email
                      mappings: []
                      configVersion: 1
                    schedule: null
                    schedulePaused: true
                    tags: {}
                    overrideConfig:
                      mappings:
                        overridable: true
                      externalIdMapping:
                        overridable: true
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '500':
          description: Something went wrong
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      description: 'Update an existing sync template


        Patch a sync template based on its Hightouch ID. The `destinationId` of a

        sync template cannot be changed after creation. Syncs created from the

        template pick up a new `configuration` on their next run; a new

        `overrideConfig` replaces the previous one and applies to the next write

        of each sync''s `syncTemplateOverrides`.'
      summary: Update Sync Template
      security:
      - bearerAuth: []
      parameters:
      - description: The sync template's ID
        in: path
        name: syncTemplateId
        required: true
        schema:
          format: double
          type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncTemplateUpdate'
            example:
              name: Salesforce Contacts Template (v2)
              schedulePaused: true
              overrideConfig:
                mappings:
                  overridable: true
                externalIdMapping:
                  overridable: true
      tags:
      - Sync Templates
  /sync-templates:
    get:
      operationId: ListSyncTemplates
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/SyncTemplate'
                    type: array
                required:
                - data
                type: object
              examples:
                Example 1:
                  value:
                    data:
                    - id: 1
                      name: Salesforce Contacts Template
                      description: Reusable template for syncing contacts to Salesforce.
                      workspaceId: 1
                      createdAt: '2022-02-16T21:37:58.510Z'
                      updatedAt: '2022-02-16T21:37:58.510Z'
                      modelId: 42
                      destinationId: 17
                      configuration:
                        mode: upsert
                        object: Contact
                        externalIdMapping:
                          from: email
                          to: Email
                        mappings: []
                        configVersion: 1
                      schedule: null
                      schedulePaused: false
                      tags: {}
                      overrideConfig:
                        mappings:
                          overridable: true
                    hasMore: false
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      description: List all the sync templates in the current workspace
      summary: List Sync Templates
      security:
      - bearerAuth: []
      parameters:
      - description: filter based on name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: set the offset on results (for pagination)
        in: query
        name: offset
        required: false
        schema:
          default: 0
          format: double
          type: number
      - description: limit the number of objects returned (default is 100)
        in: query
        name: limit
        required: false
        schema:
          default: 100
          format: double
          type: number
      - description: specify the order
        in: query
        name: orderBy
        required: false
        schema:
          default: id
          type: string
          enum:
          - id
          - name
          - createdAt
          - updatedAt
      tags:
      - Sync Templates
    post:
      operationId: CreateSyncTemplate
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/SyncTemplate'
                - $ref: '#/components/schemas/ValidateErrorJSON'
                - $ref: '#/components/schemas/InternalServerError'
              examples:
                Example 1:
                  value:
                    id: 1
                    name: Salesforce Contacts Template
                    workspaceId: 1
                    createdAt: '2022-12-12T22:46:57.618Z'
                    updatedAt: '2022-12-12T22:46:57.618Z'
                    modelId: 42
                    destinationId: 17
                    configuration:
                      mode: upsert
                      object: Contact
                      externalIdMapping:
                        from: email
                        to: Email
                      mappings: []
                      configVersion: 1
                    schedule: null
                    schedulePaused: false
                    tags: {}
                    overrideConfig:
                      mappings:
                        overridable: true
        '401':
          description: Unauthorized
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '500':
          description: Something went wrong
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      description: 'Create a new sync template


        A sync template holds a destination configuration that syncs created from

        it share. `overrideConfig` names the configuration fields those syncs may

        set for themselves; every other field is locked to the template''s value.

        Create a sync from the template with `POST /syncs` and `syncTemplateId`.'
      summary: Create Sync Template
      security:
      - bearerAuth: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncTemplateCreate'
            example:
              name: Salesforce Contacts Template
              modelId: 42
              destinationId: 17
              configuration:
                mode: upsert
                object: Contact
                externalIdMapping:
                  from: email
                  to: Email
                mappings: []
              overrideConfig:
                mappings:
                  overridable: true
      tags:
      - Sync Templates
components:
  schemas:
    SyncTemplate:
      description: 'A sync template defines a reusable sync configuration that can be shared

        across multiple syncs. User Groups can be granted access to

        templates so users can create syncs from them without seeing the raw

        destination credentials.'
      properties:
        id:
          type: number
          format: double
          description: The sync template's id
        name:
          type: string
          description: The sync template's name
        description:
          type:
          - string
          - 'null'
          description: The sync template's description
        workspaceId:
          type: number
          format: double
          description: The id of the workspace that the sync template belongs to
        createdAt:
          type: string
          format: date-time
          description: The timestamp when the sync template was created
        updatedAt:
          type: string
          format: date-time
          description: The timestamp when the sync template was last updated
        modelId:
          type: number
          format: double
          description: The id of the parent Model that the sync template is connected to
        destinationId:
          type: number
          format: double
          description: 'The id of the Destination that the sync template is connected to.

            Cannot be changed after creation.'
        configuration:
          properties: {}
          additionalProperties: {}
          type: object
          description: 'The sync template''s configuration. The schema depends on the

            destination type.


            Consumers should NOT make assumptions on the contents of the

            configuration. It may change as Hightouch updates its internal code.'
        schedule:
          properties: {}
          additionalProperties: {}
          type:
          - object
          - 'null'
          description: 'The sync template''s schedule. May be null if the template does not

            impose a schedule on its child syncs.'
        schedulePaused:
          type: boolean
          description: Whether the sync template's schedule is paused
        tags:
          properties: {}
          additionalProperties:
            type: string
          type: object
          description: The tags of the sync template
        matchboosterRegion:
          type:
          - string
          - 'null'
          description: 'Match Booster region for syncs created from this template.

            Null means inherit the model''s single-region default at runtime.'
        overrideConfig:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/SyncTemplateOverrideOption'
          type:
          - object
          - 'null'
          description: 'Which configuration fields syncs created from this template may override,

            keyed by configuration field path (for example "externalIdMapping" or

            "target.schema"). A field is unlocked when listed with

            `overridable: true`; every other field is locked to the template''s value.

            Null when no field is overridable.'
      required:
      - id
      - name
      - workspaceId
      - createdAt
      - updatedAt
      - modelId
      - destinationId
      - configuration
      - schedule
      - schedulePaused
      - tags
      - overrideConfig
      type: object
      additionalProperties: false
    SyncTemplateOverrideOption:
      description: Whether syncs created from a sync template may set a configuration field.
      properties:
        overridable:
          type: boolean
          description: 'True when syncs created from the template may set the field through

            `syncTemplateOverrides`.'
      required:
      - overridable
      type: object
      additionalProperties: false
    InternalServerError:
      type: string
      enum:
      - Internal Server Error
    ValidateErrorJSON:
      properties:
        message:
          type: string
          enum:
          - Validation failed
        details:
          properties: {}
          additionalProperties: {}
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
    SyncTemplateUpdate:
      description: 'The input for updating a Sync Template. `destinationId` cannot be changed

        after creation.'
      properties:
        name:
          type: string
          description: The sync template's name
        configuration:
          properties: {}
          additionalProperties: {}
          type: object
          description: 'The sync template''s configuration. The schema depends on the

            destination type.


            Consumers should NOT make assumptions on the contents of the

            configuration. It may change as Hightouch updates its internal code.'
        description:
          type:
          - string
          - 'null'
          description: The sync template's description
        modelId:
          type: number
          format: double
          description: The id of the parent Model that the sync template is connected to
        schedule:
          properties: {}
          additionalProperties: {}
          type:
          - object
          - 'null'
          description: 'The sync template''s schedule. May be null if the template does not

            impose a schedule on its child syncs.'
        schedulePaused:
          type: boolean
          description: Whether the sync template's schedule is paused
        tags:
          properties: {}
          additionalProperties:
            type: string
          type: object
          description: The tags of the sync template
        matchboosterRegion:
          type:
          - string
          - 'null'
          description: 'Match Booster region for syncs created from this template.

            Null means inherit the model''s single-region default at runtime.'
        overrideConfig:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/SyncTemplateOverrideOption'
          type:
          - object
          - 'null'
          description: 'Which configuration fields syncs created from this template may override,

            keyed by configuration field path (for example "externalIdMapping" or

            "target.schema"). A field is unlocked when listed with

            `overridable: true`; every other field is locked to the template''s value.

            Null when no field is overridable.'
      type: object
      additionalProperties: false
    SyncTemplateCreate:
      description: 'The input for creating a Sync Template. A `slug` is generated automatically

        from the name; it is a legacy column and is no longer accepted on input.'
      properties:
        name:
          type: string
        description:
          type: string
        modelId:
          type: number
          format: double
        destinationId:
          type: number
          format: double
        configuration:
          properties: {}
          additionalProperties: {}
          type: object
        schedule:
          properties: {}
          additionalProperties: {}
          type: object
        schedulePaused:
          type: boolean
        matchboosterRegion:
          type:
          - string
          - 'null'
        overrideConfig:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/SyncTemplateOverrideOption'
          type:
          - object
          - 'null'
      required:
      - name
      - modelId
      - destinationId
      - configuration
      type: object
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Bearer
x-provenance:
  method: harvested
  publisher: Hightouch
  source: https://api.hightouch.com/api/swagger.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)