Skip to main content

Integration Nodes

This page covers the configuration of workflow nodes that connect to external systems — the OCR Task Node, API Node, GitHub nodes, and Forge Function nodes. For the full list of available nodes, see Workflow Nodes.

OCR Task Node

The OCR Task Node runs optical character recognition on document pages, converting images of text into machine-readable text.

OCR Task Node settings

OCR Task Node settings

SettingDescription
OCR engineThe OCR engine to use. Currently offers a single option: Google Cloud Vision.
Pages that already have textHow the node treats pages that already contain machine-readable text: Skip pages with existing text, Remove all text and OCR every page, or OCR only the parts of the page without text.
Show image processing optionsExpands a set of additional image pre-processing controls, described below.

Image processing options

SettingDescription
AI assisted rotation - billed additionallyOCRs all 4 orientations with a low-cost model to determine orientation. Off by default; enabling it adds to OCR billing.
AI enrichment (Beta) - billed additionallyUses AI to improve OCR accuracy on scanned or handwritten documents. Off by default; enabling it adds to OCR billing.
Auto-rotate pagesRotates pages upright before OCR. On by default.
DeskewStraightens skewed pages before OCR. Unavailable when Pages that already have text is set to OCR only the parts of the page without text — pick a different option to use deskew.
Clean before OCRAttempts to clean whitespace from the page before OCR.
Output optimisationTrade-off between output file size and quality: None, Lossless, Lossy images, or Maximum (default).

API Node — Basic Settings & Authentication

The API Node sends an HTTP request to an external API. Settings are grouped into collapsible sections; Basic Settings, Headers, Body, and Test Request are expanded by default.

API Node Basic Settings, Authentication Settings, Headers, Body, and Test Request

API Node — Basic Settings, Authentication Settings, Headers, Body, and Test Request

SettingDescription
URLThe endpoint to call. Supports Jinja templating, e.g. {{ document.ref_number }} or {{ keystore('my_key') }}.
Request MethodGET, POST, PUT, or DELETE.
Save Raw DataSaves the raw response alongside the node's output.
HeadersRequest headers, entered as a Jinja-templated editor.
BodyRequest body, entered as a Jinja-templated editor.

Authentication Settings — the Authentication Method dropdown selects how the request authenticates; each method reveals its own fields.

MethodFields
None
BasicUsername, Key (password, selected from a saved Keystore entry)
API TokenAPI Token, API Secret
Token FetchRequest Method, Auth Request URL, Auth Request Headers, Auth Request Body, Token Path (dotted path to the token in the response), Expiry Path, Inject As (Bearer Token or Named Header), plus an optional Username + Key if the token-fetch request itself needs Basic auth
OAuth2 Client CredentialsToken URL, Client ID, Client Secret (Key), Scope (optional), Audience (optional)
Custom HeaderHeader Name, Value Template, optional Secret (Key)

Key fields are selected from previously-saved Keystore entries, or created inline via Add New Entry.

Response Validation — enabling Validate response signature (HMAC) verifies the response was genuinely sent by the configured endpoint.

FieldDescription
Algorithme.g. SHA512.
Signature KeyKey — the shared secret, selected from a saved Keystore entry.
Timestamp HeaderThe response header containing the request timestamp.
Signature HeaderThe response header containing the signature (default X-Signature).
Freshness (seconds)How old a timestamp can be before the response is rejected as stale.

API Node — Failure Routes & Failure Message Parsing

Failure Routes route the workflow down different paths when the request fails, evaluated top to bottom — the first match wins. Each rule adds a new output on the canvas node (labelled by Path name) that can be wired to a different branch. With no failure routes configured, a failed request stops the workflow at this node by default — the same failure that surfaces via the Workflow step failed pop-up and the Failed inbox status (see Inbox).

API Node Failure Routes and Failure Message Parsing settings

API Node — Failure Routes and Failure Message Parsing

FieldDescription
Path nameLabel for the output this rule follows; wire it to a branch on the canvas.
Failure typeTimeout, HTTP error status, Null / empty response, Regex match on response, Queue limit reached, or Catch all failures.

Failure Message Parsing controls how the readable failure reason (shown in the inbox, the initiator pop-up, and the failure email) is pulled out of a failure response. Steps run in order; the first step that extracts anything wins. Left empty, built-in heuristics are used.

ExtractorFields
Regex over response bodyPattern (group 1 is used when present), Max matches
XML / HTML elementsElement names (comma-separated, priority order), Max matches
JSON keysJSON keys (dotted paths, comma-separated)

Email the initiator on terminal failure — when the request fails for good (no retry left, or a non-retryable failure), the workflow initiator receives an email with the parsed failure reason and a link that opens the failure dialog.

API Node — Auto Retry

The API Node includes an Auto Retry section. When enabled, a failed request is retried automatically instead of failing straight away, spreading retries out over time with a randomised, decaying delay. When retries are exhausted, any configured Failure Routes take over.

API Node Auto Retry settings

API Node — Auto Retry settings

SettingDescription
Enable auto retryTurns on automatic retry behaviour for this node.
Retry onWhich failure types trigger a retry: Timeout, HTTP error status, Null / empty response, Other errors.
Max retriesThe maximum number of retry attempts.
First retry delayHow long to wait before the first retry. Retries are checked on a 5-minute schedule, so delays are chosen in 5-minute steps; the first retry happens at the next check after the chosen delay has elapsed.
Delay decay factorMultiplier applied to the delay between successive retries.
Max delayThe upper limit on the delay between retries.
Jitter (0–1)How much the delay is randomised. 1 spreads retries fully across the window so items that failed together do not all retry at the same instant; 0 uses a fixed delay.

API Node — Concurrency & burst control

The API Node also includes a Concurrency & burst control section, for limiting how many requests this node sends to a slow or rate-limited endpoint. When the limit is reached, the run is queued and retried automatically instead of failing.

API Node Concurrency and burst control settings

API Node — Concurrency & burst control settings

SettingDescription
Limit concurrent requestsTurns on concurrency/burst limiting for this node. Off by default.
Group requests byWhat counts as "the same endpoint" for the limits below. Defaults to URL (host and path) — each endpoint gets its own allowance. Other options include sharing one allowance across a whole host (Server) or across the whole node regardless of destination (This node).
Requests at the same timeHow many requests may be in progress simultaneously. A further request waits until one of these gets a reply.
Requests per time windowTotal requests allowed in each window, whether or not they overlap. Left at 0, this time-based limit is off and only the simultaneous limit applies.
Wait for a free slot (seconds)How long a held-up request waits for a slot before it is queued for the next sweep. Most congestion clears within seconds, so a short wait usually sends the request straight away. Set to 0 to queue immediately instead of waiting.

A live summary above these fields restates the configured limits in plain language (e.g. "At most 2 requests at a time to each URL (host and path). A held-up request waits up to 30s, then queues for the next sweep."). A queued run is retried on the next sweep, roughly every 5 minutes, and is shown as Queued in the Inbox rather than as a failure. A queue that never clears can be routed using the Queue limit reached option in the node's Failure Routes settings.

API Node — Pagination & Payload Transformation

Pagination Settings configure paging through a multi-page API response.

FieldDescription
Pagination VariableFree-text field.
Pagination MultiplierFree-text field.

Payload Transformation Settings reshape the response before it is saved, via a top-to-bottom list of steps — each transforms the output of the one above it.

Conversion TypeFields
XML To Dict
Key ExtractionNested Key
String to JSON
JSON to Dataframe
Virtual Key GenerationResult Key Name, New Virtual Key Name (add multiple via Add)
Merge DictsKey Extraction Path (add multiple via Add)
Reggex ExtractionReggex Pattern — this is the live product's own spelling of both the option and its field label, not a docs typo
Column GenerationResult Column Name

API Node — Test Request & Equivalent Code

The Test Request panel previews the live response of the configured request without running a full workflow instance.

FieldDescription
Sample Document Number (optional)A sample document ID to resolve any document-based templating in the URL, Headers, or Body.
Send test requestSends the request now and shows a pass/fail result inline (e.g. Test request failed with the HTTP status).

Equivalent Code shows a ready-to-run code snippet built from the node's current settings — secrets are shown as environment variables, and templates render server-side at run time. Language defaults to cURL; a Copy button copies the snippet.

GitHub Commit Node

The GitHub Commit Node commits one or more documents to a connected GitHub repository. It requires the connector's contents_write feature to be enabled (and workflow_files if committing under .github/workflows) — otherwise the run is refused.

GitHub Commit Node settings

GitHub Commit Node — Repository and branch settings

SettingDescription
RepositoryThe connected GitHub repository to commit to.
BranchThe branch to commit onto. Supports Jinja templating against the source document.
Base branch (optional)When the branch does not exist yet, it is forked from this branch. Defaults to the repository's default branch if left blank.
Create branch if missingCreates the branch when it does not exist. If off and the branch is missing, the node fails.
Delete branch on completionDeletes the branch once the downstream GitHub Action run finishes — useful for cleaning up throwaway branches. Requires a GitHub Action Node in poll or webhook mode after this node.
What to commitSelects which document(s) this node commits (see below).
Repository path (optional)Subfolder in the repository to place the file(s) under. Left blank, files commit at the repository root using each document's original filename.
Commit message (optional)Overrides the default commit message. Supports Jinja templating.

What to commit offers three options:

What to commit selector options

What to commit — selector options

OptionDescription
Workflow documentThe item this workflow started from.
Node inputDocuments produced by previous nodes.
Specific document IDsA comma-separated list of document IDs to commit.

GitHub Action Node — Run Tracking

The GitHub Action Node dispatches a GitHub Actions workflow run and, depending on the selected Run Tracking Mode, can wait for that run to finish before proceeding. It requires the connector's actions feature to be enabled, otherwise the run is refused.

SettingDescription
RepositoryThe connected GitHub repository.
Workflow FileThe workflow filename in .github/workflows on the chosen ref. It must declare a workflow_dispatch trigger and a docwize_run_id input, and echo it via run-name so Docwize can identify the run.
Ref (branch or tag)The branch or tag to dispatch against. Supports Jinja templating.
Workflow InputsExtra workflow_dispatch inputs passed to the run. Values support Jinja templating and are rendered at dispatch time. A docwize_run_id correlation token is added automatically.
Run Tracking ModeFire and forget (dispatch and continue immediately), Poll for completion (pause and poll the Actions API until the run finishes), or Await webhook (pause and resume when GitHub delivers the workflow_run completion webhook; a watchdog poll recovers missed deliveries).

If the target workflow file is unlikely to support run correlation, a pre-flight warning appears in the dialog:

Run tracking may not work for this workflow warning

Pre-flight warning: run tracking may not work for this workflow

To poll or await a run, the workflow file must declare a workflow_dispatch trigger, declare a docwize_run_id input, and echo it into its top-level run-name (e.g. run-name: "${{ inputs.docwize_run_id }}"). Without the run-name echo, Docwize cannot correlate the run and the node hangs until it times out. Fire and forget mode is unaffected.

The node routes to one of three outputs: On success (the run completed successfully), On failure (the run completed but failed), or On infrastructure error (Docwize couldn't dispatch or track the run at all — for example a connector or API problem, distinct from the GitHub Actions run itself failing).

Forge Function Node

A Forge Function node runs the corresponding uploaded function against the workflow document and its files. Its output side has one port per output route declared in the function's manifest, instead of a fixed set of ports — for example, a function might expose Appended, No PDF, and Error routes, each connecting to a different next step.