Types of Extension Interfaces

We offer three interfaces that extension microservices can use. Each API has a different purpose, feel and characteristics, and you can even combine both APIs together in a single microservice.


The three most common use cases for applying a custom logic within Rossum is when you would like to perform custom checks on annotation data, matching the extracted data against a database or when saving extracted data to another system.

In the first use case, when you could check or update the data, annotation data is sent to a predefined endpoint of your microservice and according to the check, you could show an error, warning or info icon to the user in the Rossum validation screen. Such checks could include validating the format of the values against your custom format requirements.

In the second use case, you may want to compare the extracted data such as a purchase order number or a vendor name against an existing database. When the data is matched, a field in Rossum will be prefilled with an ID that you can use to pair the document with its purchase order or the vendor easily.

The third use case is when you would like to take the reviewed data and save it to some other system, e.g. your accounting system. In such a case, the extracted data is sent to another predefined endpoint where some transformation usually has to be done in order to send the data to the other system.

All of the use cases above can be implemented by using Webhooks. Webhooks can be set up for sending notifications about specific events from the Rossum app to the specified Webhook.

Read a guide about developing custom webhook or checkout technical description of the webhook API in our reference documentation.

Serverless Functions

If implementing and maintaining Webhooks is too demanding, you can extend Rossum by using Serverless Functions. In few minutes, you can write a piece of code that can:

  • show users custom messages in the validation screen
  • compute missing values such as tax rate
  • send data to external systems

Moreover, such code is run on the Rossum's infrastructure and needs no maintenance from your side. Using the Functions is very easy to configure and deploy. However, you should still consider using Webhooks when building a larger-scale extension. If your extension requires database resources, or simply contains so much code it should be versioned and split to several files, you should still choose the Webhooks interface.

For a high-level understanding of the Serverless Functions, read our Help Center article.

For more technical details, read a developer guide.

Custom UI Extension

At Rossum, we are trying to make the validation screen as customizable as possible. For now, Rossum has an option where you can add a custom button to the sidebar field panel of the validation screen. Such a button can either open a pop-up window in the browser where you could reuse the extracted data from the document. Or the button can be used for triggering a custom check when using a webhook for validating the data.

Example of a custom button in the app.Example of a custom button in the app.

Example of a custom button in the app.

Read a technical description of the custom UI API in our reference documentation.