Amperity Workflow API

List, run, and stop workflows.

Operations 4

GET /workflow/runs GET /workflow/runs #
POST /workflow/runs POST /workflow/runs #
GET /workflow/runs/{workflow-id} GET /workflow/runs/{workflow-id} #
POST /workflow/runs/{workflow-id}/stop POST /workflow/runs/{workflow-id}/stop #

Documentation

Specifications

Other Resources

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/amperity-workflow-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 email required.

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

OpenAPI Specification

amperity-workflow-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Amperity Workflow API
  contact:
    url: https://docs.amperity.com/api/
  version: '1.0'
  description: 'Operations tagged Workflow across 2 of this provider''s published API definitions: amperity-control-plane-2024-04-01-openapi.json, amperity-control-plane-unstable-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.amperity.com/api
  description: Amazon AWS
- url: https://<tenant-id>.amperity.com/api
  description: Microsoft Azure
  variables:
    tenant-id:
      default: your-tenant-id
      description: Your Amperity tenant ID.
security:
- BearerAuth: []
tags:
- name: Workflow
  description: List, run, and stop workflows.
paths:
  /workflow/runs:
    get:
      tags:
      - Workflow
      summary: GET /workflow/runs
      operationId: list-workflows
      description: 'Use the **GET /workflow/runs** endpoint to return a list of workflows that exist within

        the date range defined in the request.

        '
      parameters:
      - $ref: '#/components/parameters/ApiVersionHeader'
      - $ref: '#/components/parameters/AmperityTenant'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/NextToken'
      - $ref: '#/components/parameters/WithTotal'
      - name: created_from
        in: query
        required: false
        description: 'A timestamp that defines the start (inclusive) of the time window in which one or more

          workflows started to run. See the **created_to** request parameter.


          This timestamp may be a partial timestamp, such as YYYY-MM-DD. The timestamp must be in ISO-8601 format and is in Coordinated Universal Time (UTC).


          > **Important:** Only workflows that have a **created_at** value that falls within this time window is returned. See the **created_at** response property for the GET /workflow/runs/{id} endpoint.

          '
        schema:
          type: string
          format: date-time
          default: '2026-04-01T00:00:00Z'
          example: '2026-04-01T00:00:00Z'
      - name: created_to
        in: query
        required: false
        description: 'A timestamp that defines the end (exclusive) of the time window in which one or more

          workflows started to run. See the **created_from** request parameter.


          This timestamp may be a partial timestamp, such as YYYY-MM-DD. The timestamp must be in ISO-8601 format and is in Coordinated Universal Time (UTC).


          > **Important:** Only workflows that have a **created_at** value that falls within this time window is returned. See the **created_at** response property for the GET /workflow/runs/{id} endpoint.

          '
        schema:
          type: string
          format: date-time
          default: '2026-04-30T00:00:00Z'
          example: '2026-04-30T00:00:00Z'
      - name: ended_from
        in: query
        required: false
        description: 'A timestamp that defines the start (inclusive) of the time window in which one or more

          workflows stopped running. See the **ended_to** request parameter.


          This timestamp may be a partial timestamp, such as YYYY-MM-DD. The timestamp must be in ISO-8601 format and is in Coordinated Universal Time (UTC).


          > **Important:** Only workflows that have an **ended_at** value that falls within this time window is returned. See the **ended_at** response property for the GET /workflow/runs/{id} endpoint.

          '
        schema:
          type: string
          format: date-time
          default: '2026-04-01T00:00:00Z'
          example: '2026-04-01T00:00:00Z'
      - name: ended_to
        in: query
        required: false
        description: 'A timestamp that defines the end (exclusive) of the time window in which one or more

          workflows stopped running. See the **ended_from** request parameter.


          This timestamp may be a partial timestamp, such as YYYY-MM-DD. The timestamp must be in ISO-8601 format and is in Coordinated Universal Time (UTC).


          > **Important:** Only workflows that have an **ended_at** value that falls within this time window is returned. See the **ended_at** response property for the GET /workflow/runs/{id} endpoint.

          '
        schema:
          type: string
          format: date-time
          default: '2026-04-30T00:00:00Z'
          example: '2026-04-30T00:00:00Z'
      - name: state
        in: query
        required: false
        description: 'Return a list of workflows that only match the specified workflow state. May be one of the following:


          - Started

          - In progress

          - Stopping

          - Stopped

          - Succeeded


          > **Note:** This is the same value that is visible from the Status column on each individual workflow page.

          '
        schema:
          type: string
          default: succeeded
          example: succeeded
      - name: type
        in: query
        required: false
        description: 'Return a list of workflows that only match the specified workflow type.


          > **Tip:** Use this endpoint to return a list of workflows and workflow types, and then use a value from the `type` response parameter to make a new request that filters by that workflow type value.

          '
        schema:
          type: string
          default: courier.group/run
          example: courier.group/run
      responses:
        '200':
          description: The **200** response returns a list of workflows.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
    post:
      tags:
      - Workflow
      summary: POST /workflow/runs
      operationId: run-workflow
      description: 'Use the **POST /workflow/runs** endpoint to start a workflow. Supports running courier

        groups, orchestration groups, and campaigns.

        '
      parameters:
      - $ref: '#/components/parameters/ApiVersionHeader'
      - $ref: '#/components/parameters/AmperityTenant'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowRunRequest'
      responses:
        '201':
          description: The **201** response returns details for the workflow that was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
    servers:
    - url: https://app.amperity.com/api
      description: Amazon AWS
    - url: https://<tenant-id>.amperity.com/api
      description: Microsoft Azure
      variables:
        tenant-id:
          default: your-tenant-id
          description: Your Amperity tenant ID.
  /workflow/runs/{workflow-id}:
    get:
      tags:
      - Workflow
      summary: GET /workflow/runs/{workflow-id}
      operationId: get-workflow
      description: 'Use the **GET /workflow/runs/{id}** endpoint to return details for a specific workflow.

        '
      parameters:
      - $ref: '#/components/parameters/ApiVersionHeader'
      - $ref: '#/components/parameters/AmperityTenant'
      - name: workflow-id
        in: path
        required: true
        description: 'The unique identifier for a workflow, similar to: `wf-20240603-12345-MNabc`. The workflow ID must be in the URL. For example: /workflow/runs/wf-20240603-12345-MNabc. Use the GET /workflow/runs endpoint to get a list of workflow IDs or copy the ID from the Workflows page in Amperity.

          '
        schema:
          type: string
          default: wf-20240603-12345-MNabc
          example: wf-20240603-12345-MNabc
      - name: view
        in: query
        required: false
        description: 'Set this value to overview to return only the following parameters: created_at, ended_at, id, name, state, tenant, and type. Set this value to verbose to return all response parameters for the workflow, including for any tasks that were started by the workflow. Default value: overview.

          '
        schema:
          type: string
          enum:
          - overview
          - verbose
          default: overview
      responses:
        '200':
          description: The **200** response returns details for the named workflow.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    servers:
    - url: https://app.amperity.com/api
      description: Amazon AWS
    - url: https://<tenant-id>.amperity.com/api
      description: Microsoft Azure
      variables:
        tenant-id:
          default: your-tenant-id
          description: Your Amperity tenant ID.
  /workflow/runs/{workflow-id}/stop:
    post:
      tags:
      - Workflow
      summary: POST /workflow/runs/{workflow-id}/stop
      operationId: stop-workflow
      description: 'Use the **POST /workflow/runs/{id}/stop** endpoint to stop a running workflow.

        '
      parameters:
      - $ref: '#/components/parameters/ApiVersionHeader'
      - $ref: '#/components/parameters/AmperityTenant'
      - name: workflow-id
        in: path
        required: true
        description: 'The Amperity internal identifier for the workflow. For example: `wf-20240619-14418-6UhqSe`. On the workflows page, under Actions, copy the workflow id from the dropdown.

          '
        schema:
          type: string
          default: wf-20240603-12345-MNabc
          example: wf-20240603-12345-MNabc
      responses:
        '200':
          description: The **200** response returns details for the workflow that was stopped.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    servers:
    - url: https://app.amperity.com/api
      description: Amazon AWS
    - url: https://<tenant-id>.amperity.com/api
      description: Microsoft Azure
      variables:
        tenant-id:
          default: your-tenant-id
          description: Your Amperity tenant ID.
components:
  schemas:
    Workflow:
      type: object
      description: A workflow.
      required:
      - id
      - state
      - type
      - name
      - tenant
      - created_at
      properties:
        id:
          type: string
          description: The unique identifier for the workflow.
          example: wf-20240619-14418-6UhqSe
        state:
          type: string
          description: The current state of the workflow.
          example: succeeded
        type:
          type: string
          description: The type of workflow.
          example: campaign.send
        name:
          type: string
          description: The name of the workflow.
          example: Customer Attribute Daily
        tenant:
          type: string
          description: The unique identifier for the tenant.
          example: <tenant-id>
        created_at:
          type: string
          format: date-time
          description: The date and time at which a workflow started.
          example: '2026-06-19T04:00:18.764Z'
        ended_at:
          type: string
          format: date-time
          description: 'The date and time at which a workflow ended.


            > **Note:** The amount of time that elapsed between `created_at` and `ended_at` is the runtime for the workflow.

            '
          example: '2026-06-19T04:03:10.119Z'
        principal_id:
          type: string
          description: 'A unique identifier for the Amperity user who started the workflow. For example: `google-apps|socktown@socktown.com`.

            '
          example: google-apps|<tenant-id>@<tenant-id>.com
        principal_name:
          type: string
          description: 'The name of the Amperity user who started the workflow. For example: `Justin Scott` or `Automated workflow`.

            '
          example: Justin Scott
        principal_email:
          type: string
          description: The email address for the user who started the workflow.
          example: justin.scott@<tenant-id>.com
        launched_version:
          type: string
          description: 'A unique identifier that describes the configuration state of Amperity at the start of the workflow. The value for this property is similar to: `etv-20240210-12345-6AbCDE`.

            '
          example: etv-20240210-12345-6AbCDE
        current_version:
          type: string
          description: 'A unique identifier that describes the configuration state of Amperity at the end of the workflow or at the time an error occurred. The value for this property is similar to: `etv-20240210-12345-6AbCDE`.

            '
          example: etv-20240210-12345-6AbCDE
        warn_after_ms:
          type: integer
          description: 'The length of time in milliseconds after which a warning is sent that notifies users that a workflow is running longer than expected. This parameter only applies to workflows that use SQL to write tables to storage.

            '
          example: 86400000
        task_instances:
          type: array
          description: The list of tasks in the workflow. Populated only when view is set to verbose.
          items:
            $ref: '#/components/schemas/WorkflowTaskInstance'
        error:
          allOf:
          - $ref: '#/components/schemas/WorkflowError'
          description: 'An error associated with this workflow. Populated only for workflows in an error state.

            '
    WorkflowTaskInstance:
      type: object
      description: A task within a workflow.
      required:
      - id
      - state
      - tenant
      properties:
        id:
          type: string
          description: The unique identifier for the task instance.
          example: wft-20240619-14574-6kyYdY
        state:
          type: string
          description: 'The current state of the task. For example:


            - Scheduled

            - Started

            - In progress

            - Running

            - Finalizing

            - Succeeded

            - Stopping

            - Stopped

            - Failed

            - Skipped

            - Canceled

            '
          example: failed
        tenant:
          type: string
          description: The unique identifier for the tenant.
          example: <tenant-id>
        created_at:
          type: string
          format: date-time
          description: The date and time at which a workflow task started.
          example: '2026-06-19T04:02:54.433Z'
        ended_at:
          type: string
          format: date-time
          description: The date and time at which a workflow task ended.
          example: '2026-06-19T04:03:10.094Z'
        execution_type:
          type: string
          description: 'The service that runs a workflow task. Possible return values are spark-sql, prodigal, prodigal-aurora, databricks, identity, task-identity, legacy.

            '
          example: spark-sql
        label:
          type: string
          description: The name of the task instance.
          example: Sending treatment customer_attribute_group to destination - S3
        run_id:
          type: string
          description: 'A unique identifier provided to the task instance to support situations where execution engines cannot provide a run ID. The value for this property is similar to: `abc-20240210-12345-6AbCDE`.

            '
          example: orb-20240619-EDnCxzmhrLN
        state_changed_at:
          type: string
          format: date-time
          description: 'The date and time at which the task completed and the state of the workflow was updated. This can be the same value as ended_at.

            '
          example: '2026-06-19T04:03:10.094Z'
        task_definition_id:
          type: string
          description: 'A unique identifier for a task definition. These values often contain human-readable strings within a series of alphanumeric characters.

            '
          example: send/ct-2yrcnb2Hn/ptg-2XsDnXwEu/pd-2ycaK3gfh
        task_definition_type:
          type: string
          description: 'The task definition type. The possible values for this property are similar to the type property for the workflow. For example, `bridge.sync` or `campaign.append-results`.

            '
          example: campaign.send
        timeout_ms:
          type: integer
          description: The length of time in milliseconds after which a running task instance will be forced to stop.
          example: 172800000
        workflow_id:
          type: string
          description: The unique identifier for the workflow to which this task belongs.
          example: wf-20240619-14418-6UhqSe
        error:
          allOf:
          - $ref: '#/components/schemas/WorkflowError'
          description: 'An error associated with this task. Populated only for tasks in an error state.

            '
    ErrorResponse:
      type: object
      description: An error response returned by the API.
      required:
      - status
      - message
      additionalProperties: false
      properties:
        status:
          type: integer
          description: The HTTP status code.
          example: 400
        message:
          type: string
          description: A description of the error.
          example: An unexpected error occurred.
    WorkflowRunRequest:
      type: object
      description: The request body used to start a new workflow.
      required:
      - config_id
      additionalProperties: false
      properties:
        config_id:
          type: string
          description: 'The configuration ID of the workflow. This may be the ID for a courier group,

            orchestration group, or campaign.


            You can find the ID for the workflow to be run in the following locations:


            - From the Sources page, open the menu in the same row as the courier group, and then select Copy ID.

            - From the Destinations page, open the menu in the same row as the orchestration group, and then select Copy ID.

            - From the Campaigns page, open the menu in the same row as the campaign, and then select Copy ID.

            '
          default: cg-123ABc4DE
          example: cg-123ABc4DE
        range_from:
          type: string
          format: date-time
          description: 'String. Required for file-based workflows. Courier groups only.


            > **Important:** A value for `range_from` must be specified for any courier group that is configured to pull files from cloud storage: SFTP, Amazon S3, Azure Blob Storage, or Google Cloud Storage.


            A timestamp that defines the start (inclusive) of the time window for which couriers in the workflow should pull data. See the `range_to` request parameter.


            A timestamp must be in ISO-8601 format and in Coordinated Universal Time (UTC).


            > **Tip:** Use with `range_to` to define a date range within which to look for files. This date range is inclusive of `range_from` and exclusive of `range_to`. Use without `range_to` to define a specific day on which to run the workflow.

            '
          default: '2026-10-01T00:00:00Z'
          example: '2026-10-01T00:00:00Z'
        range_to:
          type: string
          format: date-time
          description: 'String. Optional. Courier groups only.


            > **Important:** A value for `range_from` must be specified when `range_to` is included in the request.


            A timestamp that defines the end (exclusive) of the time window for which couriers in the workflow should pull data. See the `range_from` request parameter.


            A timestamp must be in ISO-8601 format and in Coordinated Universal Time (UTC).

            '
          default: '2026-10-07T00:00:00Z'
          example: '2026-10-07T00:00:00Z'
        run_mode:
          type: string
          description: 'String. Optional. Courier groups only.


            Indicates the run mode for the courier group workflow. Possible values: `full`, `refresh`, or `source`.


            - Use `full` to pull data, refresh domain tables, run Stitch, update databases, then send workflow results downstream. All activations, including orchestrations, campaigns, and journeys, that are associated with this workflow is run.

            - Use `refresh` to pull data, refresh domain tables, run Stitch, and then update databases.

            - Use `source` to pull data and refresh domain tables.


            > **Tip:** `run_mode` will default to the run mode that is configured for the scheduled workflow. You may override the configured setting by providing a value for `run_mode` in the request.

            '
          enum:
          - source
          - refresh
          - full
          default: full
          example: full
    WorkflowError:
      type: object
      description: An error associated with a workflow or workflow task.
      required:
      - type
      - message
      additionalProperties: false
      properties:
        type:
          type: string
          description: A period-delimited string that indicates where an error occurred.
          example: amperity.workflow.task.stitch/table
        message:
          type: string
          description: The error message.
          example: Found table in an invalid state.
        attribution:
          type: string
          description: 'The source of the error. May be attributed to `customer` or `platform`.


            - `customer` indicates the source of the error is one or more configuration issues within Amperity. These issues can often be resolved by updating the configuration, and then restarting or rerunning the workflow.

            - `platform` indicates there is an issue with components or services that Amperity relies on to process the workflow. These issues are often transient and rerunning the workflow will resolve the error. In some cases, this type of error may require help from Amperity Support.

            '
          example: customer
        data:
          description: 'Additional data associated with the error. May be absent or null when no additional data is available.

            '
    WorkflowList:
      type: object
      description: A paginated list of workflows.
      required:
      - data
      additionalProperties: false
      properties:
        data:
          type: array
          description: Workflow items on this page.
          items:
            $ref: '#/components/schemas/Workflow'
        next_token:
          type: string
          description: 'The cursor value to use in a subsequent request to return the next page of results. When empty, the last page has been returned.

            '
          example: ZVEy1iwsKBs9a6H
        total:
          type: integer
          description: The total count of all results. Only returned when with_total is set to true.
  responses:
    BadRequest:
      description: Bad Request — the request was malformed or contained invalid parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Not Found — the requested resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: Internal Server Error — an unexpected error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Not Authorized — the API key does not have permission for this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication Required — no valid Bearer token was provided.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    AmperityTenant:
      name: amperity-tenant
      in: header
      required: true
      description: The unique identifier for the tenant.
      schema:
        type: string
        example: <tenant-id>
    ApiVersionHeader:
      name: api-version
      in: header
      required: true
      description: 'A supported version of the Amperity API. For example: 2024-04-01.'
      schema:
        type: string
        enum:
        - '2024-04-01'
        default: '2024-04-01'
        example: '2024-04-01'
    NextToken:
      name: next_token
      in: query
      required: false
      description: 'An opaque token that is used to paginate results. Omit the `next_token` property

        to return the first page. Use the cursor value for `next_token` that was returned

        in a response to view the next page of results.


        For example: `ABCd1fghIJk2l3M`


        > **Note:** The possible values for `next_token` are returned within the 200 response.


        > **Important:** The value for `next_token` cannot be null.

        '
      schema:
        type: string
        example: ZVEy1iwsKBs9a6H
    WithTotal:
      name: with_total
      in: query
      required: false
      description: 'Set this value to `true` to include a total count of all results. Default value: `false`.


        > **Note:** Obtaining the total count of all results can be an expensive operation when there is a high number of pages in the results set.

        '
      schema:
        type: boolean
        default: false
    Limit:
      name: limit
      in: query
      required: false
      description: The maximum number of records to include in a single page of results.
      schema:
        type: integer
    ApiVersionHeader_2:
      name: api-version
      in: header
      required: true
      description: 'A supported version of the Amperity API. For example: 2024-04-01.'
      schema:
        type: string
        enum:
        - '2024-04-01'
        - unstable
        default: unstable
        example: '2024-04-01'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Authenticate using a Bearer token generated from an Amperity API key. Include the token in the Authorization header of every request.

        '
x-refined-from:
- amperity-control-plane-2024-04-01-openapi.json
- amperity-control-plane-unstable-openapi.json