Cyclr API

Cyclr's REST API allows partners to manage their accounts, install and authenticate connectors, install templates as cycles, build and configure cycle steps, and embed LAUNCH and Marketplace UIs into their host SaaS product. Authentication uses OAuth 2.0 client credentials issued in the Cyclr Console; account-scoped operations include the X-Cyclr-Account HTTP header.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

cyclr-cyclr-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Cyclr API
  description: >-
    Cyclr's REST API allows you to manage your Accounts and Cycles, as well as
    install Templates and Connectors. The API is divided into two parts: Partner
    Level and Account Level. You can use the same OAuth Access Token for both,
    but Account level endpoints require an additional X-Cyclr-Account HTTP header
    to identify which Cyclr Account to execute the call against.
  version: 1.0.0
  contact:
    name: Cyclr
    url: https://cyclr.com
  license:
    name: Proprietary
    url: https://cyclr.com/legal
servers:
  - url: https://api.cyclr.com/v1.0
    description: Cyclr US API
  - url: https://api.eu.cyclr.com/v1.0
    description: Cyclr EU API
  - url: https://api.au.cyclr.com/v1.0
    description: Cyclr AU API
security:
  - bearerAuth: []
tags:
  - name: Accounts
    description: Manage Cyclr accounts
  - name: Authentication
    description: Obtain access tokens for API authentication
  - name: Connectors
    description: Manage and install connectors
  - name: Cycles
    description: Manage integration cycles
  - name: Data on Demand
    description: API-driven data requests (proxy)
  - name: LAUNCH
    description: Deploy LAUNCH integration UI for end users
  - name: Marketplace
    description: Deploy Marketplace integration UI for end users
  - name: Steps
    description: Manage cycle steps, parameters, and field mappings
  - name: Templates
    description: Manage and install integration templates
paths:
  /oauth/token:
    post:
      operationId: getAccessToken
      summary: Cyclr Get Access Token
      description: >-
        Obtain an OAuth 2.0 access token using Client Credentials flow. Provide
        your Cyclr Console Client ID and Client Secret to receive a Bearer
        token for use with all other API endpoints.
      tags:
        - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - grant_type
                - client_id
                - client_secret
              properties:
                grant_type:
                  type: string
                  enum:
                    - client_credentials
                  description: OAuth 2.0 grant type
                client_id:
                  type: string
                  description: Your Cyclr Console Client ID
                client_secret:
                  type: string
                  description: Your Cyclr Console Client Secret
      responses:
        '200':
          description: Access token issued successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    description: The Bearer access token
                  token_type:
                    type: string
                    description: Token type (Bearer)
                  expires_in:
                    type: integer
                    description: Token expiry time in seconds
        '400':
          description: Invalid credentials or request
  /accounts:
    get:
      operationId: listAccounts
      summary: Cyclr List Accounts
      description: Retrieve a list of all Cyclr accounts under the partner.
      tags:
        - Accounts
      parameters:
        - name: page
          in: query
          schema:
            type: integer
          description: Page number for pagination
        - name: pageSize
          in: query
          schema:
            type: integer
          description: Number of results per page
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Account'
        '401':
          description: Unauthorized
    post:
      operationId: createAccount
      summary: Cyclr Create Account
      description: Create a new Cyclr account under the partner.
      tags:
        - Accounts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountCreate'
      responses:
        '200':
          description: Account created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
  /accounts/{accountId}:
    get:
      operationId: getAccount
      summary: Cyclr Get Account
      description: Retrieve details of a specific Cyclr account.
      tags:
        - Accounts
      parameters:
        - $ref: '#/components/parameters/accountId'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          description: Unauthorized
        '404':
          description: Account not found
    put:
      operationId: updateAccount
      summary: Cyclr Update Account
      description: Update an existing Cyclr account.
      tags:
        - Accounts
      parameters:
        - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountCreate'
      responses:
        '200':
          description: Account updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          description: Unauthorized
        '404':
          description: Account not found
    delete:
      operationId: deleteAccount
      summary: Cyclr Delete Account
      description: Delete a specific Cyclr account.
      tags:
        - Accounts
      parameters:
        - $ref: '#/components/parameters/accountId'
      responses:
        '200':
          description: Account deleted successfully
        '401':
          description: Unauthorized
        '404':
          description: Account not found
  /accounts/{accountId}/signintoken:
    post:
      operationId: getAccountSignInToken
      summary: Cyclr Get Account Sign-In Token
      description: >-
        Generate a sign-in token for a specific account, allowing access to the
        Cyclr console for that account.
      tags:
        - Accounts
      parameters:
        - $ref: '#/components/parameters/accountId'
      responses:
        '200':
          description: Sign-in token generated
          content:
            application/json:
              schema:
                type: object
                properties:
                  Token:
                    type: string
                    description: The sign-in token
                  ExpiresAtUtc:
                    type: string
                    format: date-time
                    description: Token expiry time in UTC
        '401':
          description: Unauthorized
        '404':
          description: Account not found
  /connectors:
    get:
      operationId: listConnectors
      summary: Cyclr List Connectors
      description: >-
        Retrieve a list of available connectors. Use the query parameter to
        filter by connector name.
      tags:
        - Connectors
      parameters:
        - name: name
          in: query
          schema:
            type: string
          description: Filter connectors by name
        - name: page
          in: query
          schema:
            type: integer
          description: Page number for pagination
        - name: pageSize
          in: query
          schema:
            type: integer
          description: Number of results per page
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Connector'
        '401':
          description: Unauthorized
  /connectors/{connectorId}:
    get:
      operationId: getConnector
      summary: Cyclr Get Connector
      description: Retrieve details of a specific connector.
      tags:
        - Connectors
      parameters:
        - $ref: '#/components/parameters/connectorId'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connector'
        '401':
          description: Unauthorized
        '404':
          description: Connector not found
  /connectors/{connectorId}/install:
    post:
      operationId: installConnector
      summary: Cyclr Install Connector
      description: >-
        Install a connector into the current account. Requires the
        X-Cyclr-Account header.
      tags:
        - Connectors
      parameters:
        - $ref: '#/components/parameters/connectorId'
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
                  description: Display name for the installed connector
                Description:
                  type: string
                  description: Description for the installed connector
                AuthValue:
                  type: string
                  description: Authentication value for the connector
      responses:
        '200':
          description: Connector installed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstalledConnector'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
  /account/connectors:
    get:
      operationId: listAccountConnectors
      summary: Cyclr List Account Connectors
      description: >-
        List all connectors installed in the current account. Requires the
        X-Cyclr-Account header.
      tags:
        - Connectors
      parameters:
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InstalledConnector'
        '401':
          description: Unauthorized
  /account/connectors/{installedConnectorId}:
    get:
      operationId: getAccountConnector
      summary: Cyclr Get Account Connector
      description: >-
        Get details of a specific installed connector in the account. Requires
        the X-Cyclr-Account header.
      tags:
        - Connectors
      parameters:
        - name: installedConnectorId
          in: path
          required: true
          schema:
            type: string
          description: The ID of the installed connector
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstalledConnector'
        '401':
          description: Unauthorized
        '404':
          description: Installed connector not found
    delete:
      operationId: deleteAccountConnector
      summary: Cyclr Delete Account Connector
      description: >-
        Remove an installed connector from the account. Requires the
        X-Cyclr-Account header.
      tags:
        - Connectors
      parameters:
        - name: installedConnectorId
          in: path
          required: true
          schema:
            type: string
          description: The ID of the installed connector
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Connector removed successfully
        '401':
          description: Unauthorized
        '404':
          description: Installed connector not found
  /templates:
    get:
      operationId: listTemplates
      summary: Cyclr List Templates
      description: Retrieve a list of available integration templates.
      tags:
        - Templates
      parameters:
        - name: page
          in: query
          schema:
            type: integer
          description: Page number for pagination
        - name: pageSize
          in: query
          schema:
            type: integer
          description: Number of results per page
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Template'
        '401':
          description: Unauthorized
  /templates/{templateId}:
    get:
      operationId: getTemplate
      summary: Cyclr Get Template
      description: Retrieve details of a specific integration template.
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/templateId'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Template'
        '401':
          description: Unauthorized
        '404':
          description: Template not found
  /templates/{templateId}/install:
    post:
      operationId: installTemplate
      summary: Cyclr Install Template
      description: >-
        Install an integration template into the current account. Requires the
        X-Cyclr-Account header.
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/templateId'
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
                  description: Display name for the installed cycle
                Description:
                  type: string
                  description: Description for the installed cycle
      responses:
        '200':
          description: Template installed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Template not found
  /cycles:
    get:
      operationId: listCycles
      summary: Cyclr List Cycles
      description: >-
        Retrieve a list of all cycles in the current account. Requires the
        X-Cyclr-Account header.
      tags:
        - Cycles
      parameters:
        - $ref: '#/components/parameters/xCyclrAccount'
        - name: page
          in: query
          schema:
            type: integer
          description: Page number for pagination
        - name: pageSize
          in: query
          schema:
            type: integer
          description: Number of results per page
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Cycle'
        '401':
          description: Unauthorized
  /cycles/{cycleId}:
    get:
      operationId: getCycle
      summary: Cyclr Get Cycle
      description: >-
        Retrieve details of a specific cycle. Requires the X-Cyclr-Account
        header.
      tags:
        - Cycles
      parameters:
        - $ref: '#/components/parameters/cycleId'
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
        '401':
          description: Unauthorized
        '404':
          description: Cycle not found
    delete:
      operationId: deleteCycle
      summary: Cyclr Delete Cycle
      description: >-
        Delete a specific cycle. Requires the X-Cyclr-Account header.
      tags:
        - Cycles
      parameters:
        - $ref: '#/components/parameters/cycleId'
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Cycle deleted successfully
        '401':
          description: Unauthorized
        '404':
          description: Cycle not found
  /cycles/{cycleId}/activate:
    put:
      operationId: activateCycle
      summary: Cyclr Activate Cycle
      description: >-
        Activate a cycle so it begins running. Requires the X-Cyclr-Account
        header.
      tags:
        - Cycles
      parameters:
        - $ref: '#/components/parameters/cycleId'
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Cycle activated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
        '401':
          description: Unauthorized
        '404':
          description: Cycle not found
  /cycles/{cycleId}/deactivate:
    put:
      operationId: deactivateCycle
      summary: Cyclr Deactivate Cycle
      description: >-
        Deactivate a running cycle. Requires the X-Cyclr-Account header.
      tags:
        - Cycles
      parameters:
        - $ref: '#/components/parameters/cycleId'
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Cycle deactivated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
        '401':
          description: Unauthorized
        '404':
          description: Cycle not found
  /steps/{stepId}/parameters:
    get:
      operationId: getStepParameters
      summary: Cyclr Get Step Parameters
      description: >-
        Get the parameters for a specific step in a cycle. Requires the
        X-Cyclr-Account header.
      tags:
        - Steps
      parameters:
        - $ref: '#/components/parameters/stepId'
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StepParameter'
        '401':
          description: Unauthorized
        '404':
          description: Step not found
    put:
      operationId: updateStepParameters
      summary: Cyclr Update Step Parameters
      description: >-
        Update the parameters for a specific step in a cycle. Requires the
        X-Cyclr-Account header.
      tags:
        - Steps
      parameters:
        - $ref: '#/components/parameters/stepId'
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/StepParameter'
      responses:
        '200':
          description: Parameters updated successfully
        '401':
          description: Unauthorized
        '404':
          description: Step not found
  /steps/{stepId}/fieldmappings:
    get:
      operationId: getStepFieldMappings
      summary: Cyclr Get Step Field Mappings
      description: >-
        Get the field mappings for a specific step in a cycle. Requires the
        X-Cyclr-Account header.
      tags:
        - Steps
      parameters:
        - $ref: '#/components/parameters/stepId'
        - $ref: '#/components/parameters/xCyclrAccount'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FieldMapping'
        '401':
          description: Unauthorized
        '404':
          description: Step not found
    put:
      operationId: updateStepFieldMappings
      summary: Cyclr Update Step Field Mappings
      description: >-
        Update the field mappings for a specific step in a cycle. Requires the
        X-Cyclr-Account header.
      tags:
        - Steps
      parameters:
        - $ref: '#/components/parameters/stepId'
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/FieldMapping'
      responses:
        '200':
          description: Field mappings updated successfully
        '401':
          description: Unauthorized
        '404':
          description: Step not found
  /users/launch:
    post:
      operationId: deployLaunch
      summary: Cyclr Deploy LAUNCH
      description: >-
        Deploy the LAUNCH integration UI for a specific user, providing them
        with an interactive interface to set up integrations.
      tags:
        - LAUNCH
      parameters:
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - Username
              properties:
                Username:
                  type: string
                  description: The username of the user accessing LAUNCH
                Password:
                  type: string
                  description: Optional password for the user
                AccountName:
                  type: string
                  description: Display name for the account
                ConnectorAuthentications:
                  type: array
                  description: Pre-configured connector authentications
                  items:
                    type: object
                    properties:
                      Name:
                        type: string
                      Version:
                        type: string
                      AuthValue:
                        type: string
                      Properties:
                        type: array
                        items:
                          type: object
                          properties:
                            Name:
                              type: string
                            Value:
                              type: string
      responses:
        '200':
          description: LAUNCH deployed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  AccountId:
                    type: string
                    description: The Cyclr account ID
                  ExpiresAtUtc:
                    type: string
                    format: date-time
                    description: When the LAUNCH token expires
                  LaunchUrl:
                    type: string
                    format: uri
                    description: URL to redirect the user to for LAUNCH
                  Token:
                    type: string
                    description: LAUNCH access token
        '400':
          description: Bad request
        '401':
          description: Unauthorized
  /users/marketplace:
    post:
      operationId: deployMarketplace
      summary: Cyclr Deploy Marketplace
      description: >-
        Deploy the Marketplace integration UI for a specific user, providing
        them with an interface to browse and install available integrations.
      tags:
        - Marketplace
      parameters:
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - Username
                - MarketplaceId
              properties:
                Username:
                  type: string
                  description: The username of the user accessing the Marketplace
                Password:
                  type: string
                  description: Optional password for the user
                MarketplaceId:
                  type: string
                  description: The ID of the marketplace to deploy
                AccountName:
                  type: string
                  description: Display name for the account
      responses:
        '200':
          description: Marketplace deployed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  AccountId:
                    type: string
                    description: The Cyclr account ID
                  ExpiresAtUtc:
                    type: string
                    format: date-time
                    description: When the Marketplace token expires
                  MarketplaceUrl:
                    type: string
                    format: uri
                    description: URL to redirect the user to for the Marketplace
                  Token:
                    type: string
                    description: Marketplace access token
        '400':
          description: Bad request
        '401':
          description: Unauthorized
  /data:
    post:
      operationId: dataOnDemand
      summary: Cyclr Data On Demand
      description: >-
        Execute a data request through an installed connector, allowing you to
        make API-driven data requests without working with cycles.
      tags:
        - Data on Demand
      parameters:
        - $ref: '#/components/parameters/xCyclrAccount'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ConnectorAccountId:
                  type: string
                  description: The ID of the installed connector
                MethodId:
                  type: string
                  description: The ID of the connector method to call
                Parameters:
                  type: array
                  description: Parameters for the method call
                  items:
                    type: object
                    properties:
                      TargetFieldName:
                        type: string
                      Value:
                        type: string
      responses:
        '200':
          description: Data retrieved successfully
          content:
            application/json:
              schema:
                type: object
                description: Response data from the connector method
        '400':
          description: Bad request
        '401':
          description: Unauthorized
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        OAuth 2.0 Bearer token obtained from the /oauth/token endpoint using
        Client Credentials flow with your Cyclr Console Client ID and Client
        Secret.
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: string
      description: The unique identifier of the Cyclr account
    connectorId:
      name: connectorId
      in: path
      required: true
      schema:
        type: string
      description: The unique identifier of the connector
    templateId:
      name: templateId
      in: path
      required: true
      schema:
        type: string
      description: The unique identifier of the template
    cycleId:
      name: cycleId
      in: path
      required: true
      schema:
        type: string
      description: The unique identifier of the cycle
    stepId:
      name: stepId
      in: path
      required: true
      schema:
        type: string
      description: The unique identifier of the step
    xCyclrAccount:
      name: X-Cyclr-Account
      in: header
      required: true
      schema:
        type: string
      description: >-
        The API ID of the Cyclr Account to execute the call against. Required
        for all Account level endpoints.
  schemas:
    Account:
      type: object
      properties:
        Id:
          type: string
          description: Unique account identifier
        Name:
          type: string
          description: Account name
        Description:
          type: string
          description: Account description
        AudienceCount:
          type: integer
          description: Number of audiences in the account
        CreatedDate:
          type: string
          format: date-time
          description: When the account was created
        Connectors:
          type: array
          description: Connectors installed in the account
          items:
            $ref: '#/components/schemas/InstalledConnector'
    AccountCreate:
      type: object
      required:
        - Name
      properties:
        Name:
          type: string
          description: Account name
        Description:
          type: string
          description: Account description
        ApiId:
          type: string
          description: External API identifier for the account
    Connector:
      type: object
      properties:
        Id:
          type: integer
          description: Unique connector identifier
        Name:
          type: string
          description: Connector name
        Description:
          type: string
          description: Connector description
        Status:
          type: string
          description: Connector status
        Version:
          type: string
          description: Connector version
        Icon:
          type: string
          description: URL to the connector icon
        AuthType:
          type: string
          description: Authentication type used by the connector
          enum:
            - OAuth2
            - OAuth1
            - ApiKey
            - Basic
            - None
    InstalledConnector:
      type: object
      properties:
        Id:
          type: integer
          description: Installed connector identifier
        Name:
          type: string
          description: Installed connector name
        Description:
          type: string
          description: Installed connector description
        ConnectorId:
          type: integer
          description: Reference to the base connector
        Authenticated:
          type: boolean
          description: Whether the connector has been authenticated
        Status:
          type: string
          description: Installation status
    Template:
      type: object
      properties:
        Id:
          type: string
          description: Unique template identifier
        Name:
          type: string
          description: Template name
        Description:
          type: string
          description: Template description
        Connectors:
          type: array
          description: Connectors used by the template
          items:
            type: object
            properties:
              Id:
                type: integer
              Name:
                type: string
        Tags:
          type: array
          description: Tags associated with the template
          items:
            type: string
    Cycle:
      type: object
      properties:
        Id:
          type: string
          description: Unique cycle identifier
        Name:
          type: string
          description: Cycle name
        Description:
          type: string
          description: Cycle description
        Status:
          type: string
          description: Current cycle status
          enum:
            - Active
            - Inactive
            - Paused
            - Error
        CreatedDate:
          type: string
          format: date-time
          description: When the cycle was created
        LastRunDate:
          ty

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cyclr/refs/heads/main/openapi/cyclr-cyclr-openapi.yml