Erply sync API

The sync API from Erply — 3 operation(s) for sync.

Operations 3

GET /api/v1/sync/device Sync devices
GET /api/v1/sync/workorder Sync workorders
GET /configurations/sync Sync configurations

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-sync-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-sync-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 Sync API
  contact: {}
  version: 2.36.5
tags:
- name: sync
paths:
  /api/v1/sync/device:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - sync
      summary: Sync devices
      parameters:
      - description: Last record ID from previous page
        name: lastIdRetrieved
        in: query
        schema:
          type: integer
      - description: Last modification time of records (unix timestamp)
        name: lastModified
        in: query
        schema:
          type: integer
      - description: Result page size
        name: take
        in: query
        schema:
          type: integer
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeviceListResponse'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /api/v1/sync/workorder:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - sync
      summary: Sync workorders
      parameters:
      - description: Last record ID from previous page
        name: lastIdRetrieved
        in: query
        schema:
          type: integer
      - description: Last modification time of records (unix timestamp)
        name: lastModified
        in: query
        schema:
          type: integer
      - description: Result page size
        name: take
        in: query
        schema:
          type: integer
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SyncResponse'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /configurations/sync:
    get:
      security:
      - sk: []
      - cc: []
      - hmac-auth: []
      - jwt: []
      description: 'Request the configurations with the intention to sync some or all of the configurations created or modified since the lastModified timestamp.

        At most, 5000 configurations will be returned from this endpoint in one request.

        Continue making requests with the same lastModified to get the remaining configurations. The API remembers itself where you left off.'
      tags:
      - sync
      summary: Sync configurations
      parameters:
      - description: UNIX timestamp used for the HMAC Auth method only
        name: timestamp
        in: header
        schema:
          type: string
      - description: change since date for the configurations to sync
        name: lastModified
        in: query
        required: true
        schema:
          type: integer
      - description: the ID of the last configuration in the previous response. It is the responsibility of the API client to extract this value and use it for the next call.
        name: lastIdRetrieved
        in: query
        schema:
          type: integer
      - description: Number of records to return. If API client omits this parameter, the 20 is the default value.
        name: take
        in: query
        schema:
          type: integer
      - description: optionally return total number of records in the X-Total-Count response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/configuration'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response'
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
    DeviceListResponse:
      type: object
      properties:
        identity:
          type: integer
        records:
          type: array
          items:
            $ref: '#/components/schemas/DeviceResponse'
        totalCount:
          type: integer
    SyncResponse:
      type: object
      properties:
        cancelledAt:
          type: string
        cancelledById:
          type: integer
        confirmedAt:
          type: string
        confirmedById:
          type: integer
        contactId:
          type: integer
        createdAt:
          type: string
        createdById:
          type: integer
        customerId:
          type: integer
        data:
          type: object
        deviceId:
          type: integer
        deviceUse:
          description: Stored in device_log table
          type: integer
        emsThreadId:
          type: integer
        entity:
          type: string
        hasDocCredit:
          type: boolean
        id:
          type: integer
        items:
          description: Items the items linked to the workorder
          type: array
          items:
            $ref: '#/components/schemas/ItemResponse'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/LabelResponse'
        netTotal:
          type: number
        noteCount:
          type: integer
        notes:
          description: Notes the notes linked to the workorder
          type: array
          items:
            $ref: '#/components/schemas/NoteResponse'
        order:
          type: integer
        paid:
          type: number
        parentId:
          type: integer
        priority:
          type: string
        productStockState:
          type: string
        progress:
          type: number
        receivedAt:
          type: string
        receivedById:
          type: integer
        referenceNo:
          type: string
        returnedAt:
          type: string
        returnedById:
          type: integer
        rows:
          description: Rows the rows belonging to the workorder
          type: array
          items:
            $ref: '#/components/schemas/RowResponse'
        salepointId:
          type: integer
        state:
          type: string
        taskScheduledState:
          type: string
        tasks:
          description: Tasks the tasks belonging to the workorder
          type: array
          items:
            $ref: '#/components/schemas/TaskResponse'
        taxExempt:
          type: boolean
        templateId:
          type: integer
        title:
          type: string
        total:
          type: number
        transactionalState:
          type: string
        type:
          type: string
        updatedAt:
          type: string
        updatedById:
          type: integer
        vatTotal:
          type: number
        warehouseId:
          type: integer
        workorderGroupId:
          type: integer
        workorderNo:
          type: string
    DeviceResponse:
      type: object
      properties:
        brand:
          type: string
          example: Volvo
        callerAccess:
          type: boolean
          example: false
        color:
          type: string
          example: yellow
        createdAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        createdById:
          type: integer
          example: 1
        customerId:
          type: integer
          example: 1
        data:
          type: object
        dateSoldAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        hidden:
          type: boolean
          example: false
        id:
          type: integer
          example: 1
        invoiceId:
          type: integer
          example: 1
        limitedAccess:
          type: boolean
          example: false
        model:
          type: string
          example: S90
        notes:
          type: string
          example: Some notes
        productId:
          type: integer
          example: 1
        productName:
          type: string
          example: Some product
        registration:
          type: string
          example: 123 abc
        relevance:
          type: number
          example: 0.5
        serial:
          type: string
          example: '123'
        updatedAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        updatedById:
          type: integer
          example: 1
        version:
          type: string
          example: '1'
        warrantyEndAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        warrantyStartAt:
          type: string
          example: '2022-01-01T00:00:00Z'
        year:
          type: string
          example: '2020'
    configuration:
      type: object
      properties:
        added:
          type: integer
        addedby_id:
          type: integer
        application:
          type: string
          example: erply-to-woo-sync
        changed:
          type: integer
        changedby_id:
          type: integer
        id:
          type: string
        level:
          description: Level is optional
          type: string
          example: Pos
        level_id:
          description: LevelID is optional
          type: string
          example: '1'
        name:
          type: string
          example: adyen
        type:
          description: Type is optional
          type: string
          example: payment
        value: {}
    LabelResponse:
      type: object
      properties:
        createdAt:
          type: string
        createdById:
          type: integer
        label:
          type: string
        labelType:
          type: string
        taskId:
          type: integer
        workorderId:
          type: integer
    RowResponse:
      type: object
      properties:
        amount:
          type: number
        confirmedAt:
          type: string
        confirmedById:
          type: integer
        createdAt:
          type: string
        createdById:
          type: integer
        data:
          type: object
        discount:
          type: number
        id:
          type: integer
        isLinked:
          type: boolean
        itemId:
          type: integer
        netTotal:
          type: number
        nonStockProduct:
          type: boolean
        order:
          type: integer
        parentLinkId:
          type: integer
        price:
          type: number
        productCode:
          type: string
        productId:
          type: integer
        productName:
          type: string
        productOriginalPrice:
          type: number
        productUnitId:
          type: integer
        productUpcEan:
          type: string
        purchaseOrderRowId:
          type: integer
        state:
          type: string
        taxExempt:
          type: boolean
        title:
          type: string
        total:
          type: number
        updatedAt:
          type: string
        updatedById:
          type: integer
        vatRateId:
          type: integer
        vatTotal:
          type: number
        workorderId:
          type: integer
    ItemResponse:
      type: object
      properties:
        createdAt:
          type: string
        createdById:
          type: integer
        data:
          type: object
        id:
          type: integer
        templateId:
          type: integer
        templateSourceId:
          type: integer
        text:
          type: string
        updatedAt:
          type: string
        updatedById:
          type: integer
        workorderId:
          type: integer
    response:
      type: object
      properties:
        id:
          type: integer
        message:
          type: string
        statusCode:
          type: string
    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