In this section, we will see how to use the methods of the client.processors.automations module. Please check the API Reference for more details.


Introduction

A deployment allows you to analyze files and send the extracted data to your backend. You can create 4 types of deployments:

  • Links: Share links to upload files.
  • Mailboxes: Set up mailboxes to forward emails to.
  • Endpoints: Create an endpoint to send data to.
  • Outlook Plugin: Create and install an Outlook plugin to extract data from emails.

You can create, monitor, update, delete and test all the deployments in the dashboard.

Test

Test Webhook

from uiform import UiForm

uiclient = UiForm()
log = uiclient.processors.automations.tests.webhook(
    automation_id="lnk_1573aadc-e1ff-4569-80dc-05e71a6c4ff2",
)

Test Document Upload

from uiform import UiForm

uiclient = UiForm()
log = uiclient.processors.automations.tests.upload(
    automation_id="lnk_1573aadc-e1ff-4569-80dc-05e71a6c4ff2",
    document = "invoice.pdf"
)


Object

Object
Link

An Link object containing the extraction link configuration.

Create

from uiform import UiForm

uiclient = UiForm()

# Step 1: Create a processor
processor = uiclient.processors.create(
    name="Invoice Processor",
    model="gpt-4.1-nano",
    json_schema=json_schema,
)

# Step 2: Create a link automation and attach it to the processor
link = uiclient.processors.automations.links.create(
    name="Invoices",
    processor_id=processor.id,
    webhook_url="https://your_server.com/invoices/webhook",
)

Get

from uiform import UiForm

uiclient = UiForm()
link_obj = uiclient.processors.automations.links.get(
    link_id="lnk_1573aadc-e1ff-4569-80dc-05e71a6c4ff2"
)

List

from uiform import UiForm

uiclient = UiForm()
list_link_obj = uiclient.processors.automations.extraction_links.list()

Update

from uiform import UiForm

uiclient = UiForm()
link_obj = uiclient.processors.automations.links.update(
    link_id="lnk_1573aadc-e1ff-4569-80dc-05e71a6c4ff2",
    name="Updated Invoices"
)

Delete

from uiform import UiForm

uiclient = UiForm()
uiclient.processors.automations.links.delete(
    link_id="lnk_1573aadc-e1ff-4569-80dc-05e71a6c4ff2"
)

Mailbox


Object

Object
Mailbox

An Mailbox object containing the extraction mailbox configuration.

Create

from uiform import UiForm

uiclient = UiForm()

# Step 1: Create a processor
processor = uiclient.processors.create(
    name="Invoice Processor",
    model="gpt-4.1-nano",
    json_schema=json_schema,
)

# Step 2: Create a mailbox automation and attach it to the processor
mailbox = uiclient.processors.automations.mailboxes.create(
    email="invoices@mailbox.uiform.com",
    name="Invoice Mailbox",
    processor_id=processor.id,
    webhook_url="https://your_server.com/invoices/webhook",
    authorized_domains=["uiform.com", "gmail.com"],
    authorized_emails=["john@doe.com", "jane@doe.com"]
)

Get

from uiform import UiForm

uiclient = UiForm()

mailbox = uiclient.processors.automations.mailboxes.get(
    email="invoices@mailbox.uiform.com",
)

List

from uiform import UiForm

uiclient = UiForm()

list_mailboxes = uiclient.processors.automations.mailboxes.list()

Update

from uiform import UiForm

uiclient = UiForm()

mailbox = uiclient.processors.automations.mailboxes.update(
    email="invoices@mailbox.uiform.com",
    webhook_url="https://your_server.com/invoices/webhook"
)

Delete

from uiform import UiForm

uiclient = UiForm()

uiclient.processors.automations.mailboxes.delete(
    email="invoices@mailbox.uiform.com"
)

Test Email forwarding

from uiform import UiForm

uiclient = UiForm()

mailbox_log = uiclient.processors.automations.mailboxes.test_email_forwarding(
    email="invoices@mailbox.uiform.com",
    document="invoice.eml"
)

Endpoint


Object

Object
Endpoint

An Endpoint object containing the extraction endpoint configuration.

Create

from uiform import UiForm

uiclient = UiForm()

# Step 1: Create a processor
processor = uiclient.processors.create(
    name="Invoice Processor",
    model="gpt-4.1-nano",
    json_schema=json_schema,
)

# Step 2: Create an endpoint automation and attach it to the processor
endpoint = uiclient.processors.automations.endpoints.create(
    name="Invoice Extraction Endpoint",
    processor_id=processor.id,
    webhook_url="https://your_server.com/invoices/webhook",
)

Get

from uiform import UiForm

uiclient = UiForm()

endpoint_obj = uiclient.processors.automations.endpoints.get(
    endpoint_id="endp_9b6a8c8d-254d-4f4b-8f8e-5b2e1b6b3c9a"
)

List

from uiform import UiForm

uiclient = UiForm()

list_endpoints = uiclient.processors.automations.endpoints.list()

Update

from uiform import UiForm

uiclient = UiForm()

updated_endpoint = uiclient.processors.automations.endpoints.update(
    endpoint_id="endp_9b6a8c8d-254d-4f4b-8f8e-5b2e1b6b3c9a",
    name="Updated Invoice Extraction Endpoint"
)

Delete

from uiform import UiForm

uiclient = UiForm()

uiclient.processors.automations.endpoints.delete(
    endpoint_id="endp_9b6a8c8d-254d-4f4b-8f8e-5b2e1b6b3c9a"
)


Outlook Plugin


Object

Object
Outlook

An Outlook object containing the extraction outlook plugin configuration.

Create

from uiform import UiForm

uiclient = UiForm()

# Step 1: Create a processor
processor = uiclient.processors.create(
    name="Invoice Processor",
    model="gpt-4.1-nano",
    json_schema=json_schema,
)

# Step 2: Create an Outlook plugin automation and attach it to the processor
outlook_plugin = uiclient.processors.automations.outlook.create(
    name="Invoice Plugin",
    processor_id=processor.id,
    webhook_url="https://your_server.com/invoices/webhook",
    authorized_domains=["uiform.com"],
    authorized_emails=["john@doe.com", "jane@doe.com"],
)

Get

from uiform import UiForm

uiclient = UiForm()

outlook_plugin = uiclient.processors.automations.outlook.get(
    outlook_id="outlook_56b30f29-ccf2-41b8-8b26-15481f2a78f1"
)

List

from uiform import UiForm

uiclient = UiForm()

list_outlooks = uiclient.processors.automations.outlook.list()

Update

from uiform import UiForm

uiclient = UiForm()

updated_outlook_plugin = uiclient.processors.automations.outlook.update(
    outlook_id="outlook_56b30f29-ccf2-41b8-8b26-15481f2a78f1",
    name="Updated Invoice Plugin"
)

Delete

from uiform import UiForm

uiclient = UiForm()

uiclient.processors.automations.outlook.delete(
    outlook_id="outlook_56b30f29-ccf2-41b8-8b26-15481f2a78f1"
)

Logs

Every time a deployment (link, mailbox, endpoint, or Outlook add-in) triggers a webhook, a log entry is created. These logs let you

  1. Inspect the raw request ↔ response cycle.
  2. Debug failed calls (4xx/5xx).
  3. Rerun a call with one click/line of code, without resending the original file/email.

Object

Object
AutomationLog

A single webhook attempt.

Get

from uiform import UiForm

uiclient = UiForm()
log = uiclient.processors.automations.logs.get(
    log_id="log_a12b3c4d-e5f6-7890-ab12-3c4d5e6f7890"
)

List

Available filters:

Argument Example Notes before / after “log_xxx” Cursor pagination. limit 50 1-100, default 10. order “asc” / “desc” By created_at. status_code 404 Exact match. status_class “5xx” Shorthand class. automation_id “lnk_…” Restrict to one automation. webhook_url “https://…”, partial match supported. schema_id / schema_data_id “sch_…”, “scd_…” Trace logs back to a schema run.


from uiform import UiForm

uiclient = UiForm()
page = uiclient.processors.automations.logs.list(
    limit=20,
    status_class="4xx",
    automation_id="lnk_1573aadc-e1ff-4569-80dc-05e71a6c4ff2"
)

# page.data -> list[AutomationLog]
# page.before / page.after -> cursors for the next call

Rerun

Use this when the original call failed (or you just want to replay it). The rerun is performed server-side, using the exact same payload; no need to re-upload the document/email.

from uiform import UiForm

uiclient = UiForm()
rerun_log = uiclient.processors.automations.logs.rerun(
    log_id="log_a12b3c4d-e5f6-7890-ab12-3c4d5e6f7890"
)