lexoffice Event Subscriptions API

Webhook subscriptions for change events.

OpenAPI Specification

lexoffice-event-subscriptions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: lexoffice (lexware Office) Public Contacts Event Subscriptions API
  description: Public REST API for lexoffice, the German cloud accounting and invoicing SaaS from Lexware (Haufe Group), rebranded to "lexware Office" in 2025. The API lets developers push and pull business data - contacts, invoices, quotations, order confirmations, delivery notes, credit notes, dunnings, bookkeeping vouchers, files, payments, and profile metadata - and subscribe to webhooks through event subscriptions. All requests are authenticated with a Bearer API key generated by the account owner at https://app.lexware.de/addons/public-api. The API is rate limited to 2 requests per second per client (HTTP 429 on exceed). The API gateway moved from api.lexoffice.io to api.lexware.io on 26 May 2025; the legacy host remained available through December 2025. This document is a representative, hand-authored subset grounded in the public documentation at https://developers.lexware.io/docs/ - it is not the vendor's own machine-readable specification.
  version: '1.0'
  contact:
    name: lexware Office Developers
    url: https://developers.lexware.io/docs/
  license:
    name: Proprietary
    url: https://www.lexware.de/
servers:
- url: https://api.lexware.io/v1
  description: Lexware API gateway (current)
- url: https://api.lexoffice.io/v1
  description: Legacy lexoffice API gateway (retired end of 2025)
security:
- bearerAuth: []
tags:
- name: Event Subscriptions
  description: Webhook subscriptions for change events.
paths:
  /event-subscriptions:
    get:
      operationId: listEventSubscriptions
      tags:
      - Event Subscriptions
      summary: List event subscriptions
      responses:
        '200':
          description: A list of event subscriptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: array
                    items:
                      $ref: '#/components/schemas/EventSubscription'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createEventSubscription
      tags:
      - Event Subscriptions
      summary: Create an event subscription
      description: Registers an HTTPS callback URL for an event type. lexoffice POSTs a webhook payload to the callback URL when a matching event fires.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventSubscriptionInput'
      responses:
        '200':
          description: The created event subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /event-subscriptions/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getEventSubscription
      tags:
      - Event Subscriptions
      summary: Retrieve an event subscription
      responses:
        '200':
          description: The requested event subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteEventSubscription
      tags:
      - Event Subscriptions
      summary: Delete an event subscription
      responses:
        '204':
          description: The subscription was deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: The UUID of the resource.
      schema:
        type: string
        format: uuid
  schemas:
    Error:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        status:
          type: integer
        error:
          type: string
        path:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              violation:
                type: string
              field:
                type: string
              message:
                type: string
    EventSubscriptionInput:
      type: object
      required:
      - eventType
      - callbackUrl
      properties:
        eventType:
          type: string
          description: The event to subscribe to, e.g. contact.created, contact.changed, invoice.created, invoice.status.changed, voucher.created.
          example: invoice.created
        callbackUrl:
          type: string
          format: uri
          description: HTTPS URL that lexoffice POSTs the webhook payload to.
    EventSubscription:
      allOf:
      - $ref: '#/components/schemas/EventSubscriptionInput'
      - type: object
        properties:
          subscriptionId:
            type: string
            format: uuid
          organizationId:
            type: string
            format: uuid
          createdDate:
            type: string
            format: date-time
  responses:
    Unauthorized:
      description: Missing or invalid Bearer API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request payload failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Bearer API key generated by the account owner at https://app.lexware.de/addons/public-api and passed as `Authorization: Bearer YOUR_API_KEY`.'