Figure Eight Workflows API

Copy, launch, pause and resume workflows, check status and configuration values

Operations 9

POST /workflows Create a new workflow #
POST /workflows/{workflow_id}/launch Launch a Workflow #
POST /workflows/{workflow_id}/pause Pause a Workflow #
POST /workflows/{workflow_id}/resume Resume a paused Workflow #
POST /workflows/{workflow_id}/copy Copy an existing Workflow #
GET /workflows/{workflow_id}/poll Poll the current state and metadata for a workflow #
GET /workflows/{workflow_id} Get current workflow config #
PATCH /workflows/{workflow_id} Partially update a Workflow #
DELETE /workflows/{workflow_id} Deletes a workflow #

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/figure-eight-workflows-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

figure-eight-workflows-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Appen Platform Workflows API
  version: 1.0.0
  description: '# Introduction

    Hello, and welcome to Appen, the leading data annotation platform for Machine Learning.'
  license:
    name: Licensed under Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: https://www.appen.com/privacy-statement/
  contact:
    email: help@appen.com
servers:
- url: https://api.appen.com/v1
  description: Production Server
tags:
- name: Workflows
  description: Copy, launch, pause and resume workflows, check status and configuration values
paths:
  /workflows:
    post:
      tags:
      - Workflows
      summary: Create a new workflow
      description: Create a Workflow for processing data via jobs in the core platform or models via the Model Gateway Services.
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  example: Data Parser Workflow
                description:
                  type: string
                  example: An optional description for this workflow
                user_id:
                  type: string
                  format: uuid
                  example: 00000000-0000-0000-0000-000000000001
      responses:
        '201':
          $ref: '#/components/responses/NewWorkflowResponse'
        '400':
          description: invalid input, object invalid due to missing team_id, user_id or name.
        '422':
          description: Unprocessable Entity. A request parameter was malformed or missing.
          content:
            application/json:
              schema:
                properties:
                  name:
                    type: string
                    example: must be present
      operationId: postWorkflows
      x-operation-id-source: derived
  /workflows/{workflow_id}/launch:
    servers:
    - url: https://api-beta.appen.com/v2
      description: Production Server - Latest API
    post:
      tags:
      - Workflows
      summary: Launch a Workflow
      description: Launches the Workflow to contributors, models to predict and/or scripts.
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      - $ref: '#/components/parameters/launch_rows_query'
      - $ref: '#/components/parameters/api_key'
      responses:
        '202':
          description: Accepted, i.e. row launch action was triggered and workflow data ingestion is being kicked off.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '400':
          description: Bad Request. You failed to pass one or more required parameters.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: The request was invalid
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: Unprocessable Entity. A request parameter was malformed or missing.
          content:
            application/json:
              schema:
                properties:
                  errors:
                    type: array
                    example:
                    - Workflow has only 1000 rows to order
      x-code-samples:
      - lang: Shell
        label: cURL
        source: 'curl -X POST \

          "https://api-beta.appen.com/v2/workflows/{workflow_id}/launch?&rows={num_rows_to_launch}"

          -H "Authorization: Token token={api_key}" \

          '
      operationId: postWorkflowsByWorkflowIdLaunch
      x-operation-id-source: derived
  /workflows/{workflow_id}/pause:
    servers:
    - url: https://api-beta.appen.com/v2
      description: Production Server - Latest API
    post:
      tags:
      - Workflows
      summary: Pause a Workflow
      description: Pauses a Running state Workflow only.
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      - $ref: '#/components/parameters/api_key'
      responses:
        '202':
          description: Accepted, i.e. action was triggered via AASM event or other method.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: Unprocessable Entity. A request parameter was malformed or missing.
          content:
            application/json:
              schema:
                properties:
                  errors:
                    type: array
                    example:
                    - Error while configuring action 'pause' for step 1234. Make sure the job 1234567 exists and you own it.
      x-code-samples:
      - lang: Shell
        label: cURL
        source: "curl -X POST \\\n\"https://api-beta.appen.com/v2/workflows/{workflow_id}/pause\" \\\n-H \"Authorization: Token token={api_key}\" \n"
      operationId: postWorkflowsByWorkflowIdPause
      x-operation-id-source: derived
  /workflows/{workflow_id}/resume:
    servers:
    - url: https://api-beta.appen.com/v2
      description: Production Server - Latest API
    post:
      tags:
      - Workflows
      summary: Resume a paused Workflow
      description: Resumes a Paused state Workflow only.
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      - $ref: '#/components/parameters/api_key'
      responses:
        '202':
          description: Accepted, i.e. action was triggered via AASM event or other method.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: Unprocessable Entity. A request parameter was malformed or missing.
          content:
            application/json:
              schema:
                properties:
                  errors:
                    type: array
                    example:
                    - The workflow is already running
      x-code-samples:
      - lang: Shell
        label: cURL
        source: "curl -X POST \\\n\"https://api-beta.appen.com/v2/workflows/{workflow_id}/resume\"\n-H \"Authorization: Token token={api_key}\" \n"
      operationId: postWorkflowsByWorkflowIdResume
      x-operation-id-source: derived
  /workflows/{workflow_id}/copy:
    servers:
    - url: https://api-beta.appen.com/v2
      description: Production Server - Latest API
    post:
      tags:
      - Workflows
      summary: Copy an existing Workflow
      description: Copy a new, paused or finished Workflow.
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      - $ref: '#/components/parameters/api_key'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  example: new workflow
      responses:
        '201':
          description: Copy service was able to copy workflow configuration successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: Unprocessable Entity. A request parameter was malformed or missing.
          content:
            application/json:
              schema:
                properties:
                  errors:
                    type: array
                    example:
                    - Workflow cannot be copied
      x-code-samples:
      - lang: Shell
        label: cURL
        source: "curl -X POST \\\n\"https://api-beta.appen.com/v2/workflows/{workflow_id}/copy\"\n-H \"Authorization: Token token={api_key}\" \n"
      operationId: postWorkflowsByWorkflowIdCopy
      x-operation-id-source: derived
  /workflows/{workflow_id}/poll:
    servers:
    - url: https://api-beta.appen.com/v2
      description: Production Server - Latest API
    get:
      tags:
      - Workflows
      summary: Poll the current state and metadata for a workflow
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      - $ref: '#/components/parameters/api_key'
      responses:
        '200':
          description: Workflow JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowCompact'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-code-samples:
      - lang: Shell
        label: cURL
        source: 'curl -X GET \

          "https://api-beta.appen.com/v2/workflows/{workflow_id}/poll"

          -H "Authorization: Token token={api_key}"

          '
      operationId: getWorkflowsByWorkflowIdPoll
      x-operation-id-source: derived
  /workflows/{workflow_id}:
    servers:
    - url: https://api-beta.appen.com/v2
      description: Production Server - Latest API
    get:
      tags:
      - Workflows
      summary: Get current workflow config
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      - $ref: '#/components/parameters/api_key'
      responses:
        '200':
          description: Workflow JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      x-code-samples:
      - lang: Shell
        label: cURL
        source: 'curl -X GET \

          "https://api-beta.appen.com/v2/workflows/{workflow_id}" \

          -H "Authorization: Token token={api_key}"

          '
      operationId: getWorkflowsByWorkflowId
      x-operation-id-source: derived
    patch:
      tags:
      - Workflows
      summary: Partially update a Workflow
      description: Update specific attributes of a given workflow, such as name or description.
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  example: Data Parser Workflow
                description:
                  type: string
                  example: An optional description for this workflow
                user_id:
                  type: string
                  format: uuid
                  example: 00000000-0000-0000-0000-000000000001
      responses:
        '200':
          $ref: '#/components/responses/NewWorkflowResponse'
        '400':
          description: invalid input, object invalid due to missing team_id, user_id or name.
        '422':
          description: Unprocessable Entity. A request parameter was malformed or missing.
          content:
            application/json:
              schema:
                properties:
                  name:
                    type: string
                    example: must be present
      operationId: patchWorkflowsByWorkflowId
      x-operation-id-source: derived
    delete:
      tags:
      - Workflows
      summary: Deletes a workflow
      description: Workflow deletion works only before first launch.
      parameters:
      - $ref: '#/components/parameters/workflow_id_param'
      responses:
        '200':
          description: Workflow successfully deleted
        '403':
          description: Delete Forbidden
          content:
            application/json:
              schema:
                properties:
                  errors:
                    type: array
                    example:
                    - Workflows cannot be deleted once they have been launched
      operationId: deleteWorkflowsByWorkflowId
      x-operation-id-source: derived
components:
  parameters:
    launch_rows_query:
      in: query
      name: rows
      required: true
      schema:
        type: integer
      description: The number of rows to launch through the specified workflow
    workflow_id_param:
      in: path
      name: workflow_id
      required: true
      schema:
        type: integer
      description: The `id` of a **Workflow** belonging to the **Requestor** or accessible to the **Admin**.
      example: 123
    api_key:
      name: key
      in: query
      required: true
      description: "Your personal Appen API key; used to access the Appen platform. Can be found in your [account settings](https://client.appen.com/account/api). Variable name: `{api_key}`. \n"
      schema:
        type: string
  schemas:
    WorkflowStep:
      type: object
      required:
      - workflow_id
      - data_processor_type
      - data_processor_id
      properties:
        id:
          type: integer
          example: 79
          readOnly: true
        data_processor_id:
          type: string
          example: '1234567'
        data_processor_type:
          type: string
          readOnly: true
          example: Builder::Job
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        step_options:
          type: object
          example: {}
        routes:
          type: array
          items:
            $ref: '#/components/schemas/StepRoute'
    FilterRule:
      type: object
      required:
      - comparison_field
      - comparison_value
      - comparison_operation
      - rule_connector
      properties:
        id:
          type: integer
          example: 956
          readOnly: true
        comparison_field:
          type: string
          example: img_is_cat
        comparison_operation:
          type: string
          enum:
          - ==
          - <
          - '>'
          - '!='
          - =~
          - <=
          - '>='
          example: ==
        comparison_value:
          type: string
          example: 'true'
        rule_connector:
          type: string
          enum:
          - all
          - and
          - or
          - rnd
          - csp
          - els
          example: and
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    WorkflowCompact:
      type: object
      required:
      - name
      - team_id
      - user_id
      properties:
        id:
          type: integer
          example: 79
        team_id:
          type: string
          format: uuid
          example: 4ff9bd89-4cc4-4324-a533-d8466d6596fe
        user_id:
          type: string
          format: uuid
          example: ec006e04-86d6-40d6-aaed-5d717a1be778
        name:
          type: string
          example: Three step image categorization and rating 001
        description:
          type: string
          example: Route cat images routed by categories (inferred by a model) to people to for rating cuteness.
        status:
          type: string
          example: running
        status_description:
          type: string
          example: null
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Workflow:
      type: object
      required:
      - name
      - team_id
      - user_id
      properties:
        id:
          type: integer
          example: 79
        workflow_id:
          type: integer
          format: string
          deprecated: true
        team_id:
          type: string
          format: uuid
          example: 4ff9bd89-4cc4-4324-a533-d8466d6596fe
        user_id:
          type: string
          format: uuid
          example: ec006e04-86d6-40d6-aaed-5d717a1be778
        name:
          type: string
          example: Three step image categorization and rating 001
        description:
          type: string
          example: Route cat images routed by categories (inferred by a model) to people to for rating cuteness.
        status:
          type: string
          example: paused
        status_description:
          type: string
          example: Paused by admin
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        steps:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowStep'
    StepRoute:
      type: object
      required:
      - workflow_step_id
      - destination_step_id
      properties:
        id:
          type: integer
          example: 197
          readOnly: true
        workflow_step_id:
          type: integer
          example: 79
        destination_step_id:
          type: integer
          example: 80
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        filter_rules:
          type: array
          items:
            $ref: '#/components/schemas/FilterRule'
  responses:
    '404':
      description: 'Not Found. The resource you are referencing does not exist, or you don''''t own it.

        '
    NewWorkflowResponse:
      description: The response of a new workflow
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
                example: 1234
              name:
                type: string
                example: Data Parser Workflow
              description:
                type: string
                example: A sample description for this workflow
              status:
                type: string
                example: new
              status_description:
                type: string
                example: null
              team_id:
                type: string
                format: uuid
                example: 00000000-0000-0000-0000-000000000002
              orderer_rows:
                type: integer
                example: 0
              created_at:
                description: Timestamp of when the workflow was created
                type: string
                format: date-time
                readOnly: true
              updated_at:
                description: Timestamp of the last User or API action that changed a workflow state or setting
                type: string
                format: date-time
                readOnly: true
              workflow_id:
                type: integer
                example: 1234
              steps:
                type: array
                items:
                  type: object
                example: []
              url:
                type: string
                example: https://api-beta.appen.com/v2/workflows/1234
    '403':
      description: 'Access Denied. You do not have permission to access the resource you are referencing.

        '
    '422':
      description: 'Unprocessable Entity. A request parameter was malformed or missing.

        '