Erply task API

The task API from Erply — 4 operation(s) for task.

Operations 6

GET /api/v1/task Look up any tasks
POST /api/v1/task Add a new task record
POST /api/v1/task/reschedule Reschedule tasks if so configured
DELETE /api/v1/task/{taskId} Delete one task record
PATCH /api/v1/task/{taskId} Update task record
DELETE /api/v1/task/{taskId}/{repeatId} Delete one task within a recurring task chain

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/erply-task-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

erply-task-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: "\n\n## Overview\n\n\n\nThis application offers an API for managing assignments and tasks.\n\n\n\nGraphQL endpoint for the same API is [also available](/graph)\n\n\n\n<details><summary>Authentication</summary>\n\n\n\n> \n\n> Authenticate using your Erply credentials and get a sessionKey. This sessionKey and your Erply clientCode must be provided in the HTTP headers of every request. You do not have to authenticate against this API - valid Erply sessionKey-s from other sources are also acceptable. To authenticate using this API, use the `POST /api/v1/auth` endpoint.\n\n>\n\n</details>\n\n"
  title: assignments Assortment Task API
  contact: {}
  version: 2.36.5
tags:
- name: task
paths:
  /api/v1/task:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - task
      summary: Look up any tasks
      parameters:
      - example: 1
        description: Task ID-s
        name: id
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: lunchbreak
        description: Task types. By default returns all
        name: type
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - example: 1
        description: List of workorder ID-s
        name: workorderId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: Workorder customer ID-s
        name: workorderCustomerId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: Workorder contact ID-s
        name: workorderContactId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: List of item ID-s
        name: itemId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: List of row ID-s
        name: rowId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: List of row product ID-s
        name: rowProductId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: '1'
        description: List of row product codes
        name: rowProductCode
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - example: 1
        description: List of row product group ID-s
        name: rowProductGroupId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: '1'
        description: Row title matching
        name: rowTitleLike
        in: query
        schema:
          type: string
      - example: 1
        description: List of workorder warehouse ID-s
        name: warehouseId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: List of resource ID-s
        name: resourceId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: 1
        description: List of assigned-to Employee ID-s
        name: assignedToId
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: integer
      - example: '2020-06-06T13:55:00Z'
        description: Task time range lower bound (yyyy-mm-ddThh:mm:ssZ or a UNIX timestamp). Defaults to Unix Epoch. If no filtering by workorder, item or row ID is applied, difference between rangeStart and rangeEnd must be less than 61 days
        name: rangeStart
        in: query
        schema:
          type: string
      - example: '2020-06-06T13:55:00Z'
        description: Task time range upper bound (yyyy-mm-ddThh:mm:ssZ or a UNIX timestamp). Defaults to NOW. If no filtering by workorder, item or row ID is applied, difference between rangeStart and rangeEnd must be less than 61 days
        name: rangeEnd
        in: query
        schema:
          type: string
      - example: true
        description: If task start and end time must fit entirely inside the filter range
        name: rangeStrict
        in: query
        schema:
          type: boolean
      - example: true
        description: If linked row notes should also be returned in the response
        name: withRowNotes
        in: query
        schema:
          type: boolean
      - description: Label type
        name: labelType
        in: query
        schema:
          type: string
      - description: Labels under the specified type that must match
        name: label
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - example: true
        description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - example: 30
        description: Result page size. Defaults to 20
        name: pageSize
        in: query
        schema:
          type: integer
      - example: 2
        description: Result page number. Defaults to 1
        name: pageNr
        in: query
        schema:
          type: integer
      - example: -id
        description: 'Allows specifying in which order the rows should be returned. Supported values are: `id`, `startAt`. It is possible to reverse the order by adding a `-` prefix to the sorting keyword'
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TaskResponse'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - task
      summary: Add a new task record
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskRequest'
        description: Task record
        required: true
  /api/v1/task/reschedule:
    post:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      description: 'Allows to execute task rescheduling logic if the account has been configured accordingly. When triggered, tasks which were left unclosed (in states other that `done`) in the account''s timezone yesterday, will be rescheduled for today and set to `blocked` state.


        #### Configuration ####


        Functionality can be enabled or disabled in Cafa. If there is no configuration in Cafa, calling this function will generate a Cafa entry with default values.


        > Field         | Value&nbsp;       | Description

        > --------------|-------------------|----

        > `application` | assignments       | Application name. Has to be `assignments`

        > `level`       | Company           | Level is the operating level where the config will be stored. Has to be `Company`

        > `name`        | task_rescheduling | Name of the configuration. Has to be `task_rescheduling`

        > `value`       | true              | If task rescheduling is enabled or not. Must be parseable as a boolean. Will default to `false`

        >


        Additionally, this functionality is affected by Erply configuration parameter `timezone` which is briefly described in Erply API docs: https://learn-api.erply.com/requests/getconfparameters

        '
      tags:
      - task
      summary: Reschedule tasks if so configured
      responses:
        '202':
          description: Accepted
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /api/v1/task/{taskId}:
    delete:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      description: Delete one task record
      tags:
      - task
      summary: Delete one task record
      parameters:
      - description: Task id
        name: taskId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    patch:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - task
      summary: Update task record
      parameters:
      - description: Task id
        name: taskId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskRequest'
        description: Task record
        required: true
  /api/v1/task/{taskId}/{repeatId}:
    delete:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      description: Delete one task within a recurring task chain
      tags:
      - task
      summary: Delete one task within a recurring task chain
      parameters:
      - description: Task id
        name: taskId
        in: path
        required: true
        schema:
          type: integer
      - description: Recurring task repeatId
        name: repeatId
        in: path
        schema:
          type: integer
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
components:
  schemas:
    TaskResponse:
      type: object
      properties:
        assignedToId:
          type: integer
          example: 1
        createdAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        createdById:
          type: integer
          example: 1
        data:
          type: object
        duration:
          description: 'Number of minutes that have been spent on the task. This is either the user defined value

            `userDuration` or calculated automatically from the difference between `startAt` and `endAt`.

            Nil if these fields are not set'
          type: integer
          example: 1
        endAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        id:
          type: integer
          example: 1
        itemId:
          type: integer
          example: 1
        labels:
          type: array
          items:
            $ref: '#/components/schemas/LabelResponse'
        repeatEndAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        repeatId:
          type: integer
          example: 1
        repeatStartAt:
          description: Start of the repeated task range for easier access
          type: string
          example: '2022-01-01T00:00:00Z'
        resourceId:
          type: integer
          example: 1
        rowId:
          type: integer
          example: 1
        rowNotes:
          type: array
          items:
            $ref: '#/components/schemas/NoteResponse'
        rrule:
          type: string
          example: RRULE:FREQ=DAILY;UNTIL=20220919T063000Z
        startAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        title:
          type: string
          example: Row A;Row B
        type:
          type: string
          example: default
        updatedAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        updatedById:
          type: integer
          example: 1
        userDuration:
          description: User defined number of minutes that have been spent on the task
          type: integer
          example: 1
        warehouseId:
          type: integer
          example: 1
        workorderId:
          type: integer
          example: 1
    TaskRequest:
      type: object
      properties:
        assignedToId:
          type: integer
          example: 1
        data:
          type: object
        endAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        id:
          type: integer
          example: 1
        repeatId:
          description: Index of the task in a repeated task chain. Index is 0 based so 0 is a valid value
          type: integer
          example: 1
        resourceId:
          type: integer
          example: 1
        rowId:
          type: integer
          example: 1
        rrule:
          description: RRule definition (RFC 2445). Eg. `RRULE:FREQ=DAILY;COUNT=10`
          type: string
          example: RRULE:FREQ=DAILY;UNTIL=20220919T063000Z
        startAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        title:
          type: string
          example: some title
        type:
          type: string
          example: default
        userDuration:
          description: 'User definable number of minutes that have been spent on the task. This will be used to fill

            the response field `duration`. If not set, `duration` will be automatically calculated from

            the difference between `startAt` and `endAt`'
          type: integer
          example: 1
        warehouseId:
          type: integer
          example: 1
        workorderId:
          type: integer
          example: 1
    LabelResponse:
      type: object
      properties:
        createdAt:
          type: string
        createdById:
          type: integer
        label:
          type: string
        labelType:
          type: string
        taskId:
          type: integer
        workorderId:
          type: integer
    NoteResponse:
      type: object
      properties:
        createdAt:
          type: string
        createdById:
          type: integer
        data:
          type: object
        id:
          type: integer
        itemId:
          type: integer
        rowId:
          type: integer
        taskId:
          type: integer
        text:
          type: string
        type:
          type: string
        updatedAt:
          type: string
        updatedById:
          type: integer
        workorderId:
          type: integer
  securitySchemes:
    AccessToken:
      type: apiKey
      name: accessToken
      in: header
    ErplyClientCode:
      type: apiKey
      name: clientCode
      in: header
    ErplyJWT:
      type: apiKey
      name: jwt
      in: header
    ErplySession:
      type: apiKey
      name: sessionKey
      in: header
    RequestKey:
      type: apiKey
      name: requestKey
      in: header