---
title: "Run Docs-to-Digital on an existing Plaid JSON"
method: POST
path: "/v2/book/{book_uuid}/docs-to-digital"
tags: ["Cash Flow Analytics"]
---

# Run Docs-to-Digital on an existing Plaid JSON

`POST /v2/book/{book_uuid}/docs-to-digital`

## Request

- Base URL: `https://api.ocrolus.com`
- URL: `https://api.ocrolus.com/v2/book/{book_uuid}/docs-to-digital`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.ocrolus.com/oauth/token`

Triggers a Docs-to-Digital comparison on a Plaid JSON <<glossary:Document>> already uploaded to a <<glossary:Book>>, without re-uploading the file. Use this when a Plaid JSON was uploaded with `upload_intent=add_analytics` (or before Docs-to-Digital intent was set) and you now want to compare it against the Book's bank statement data.

To upload a new Plaid JSON and request Docs-to-Digital in the same call, see [Upload aggregator JSON to Book](ref:upload-json) instead.

> 📘 Prerequisites
> - The Book already contains at least one Plaid JSON Document.
> - The Book already contains bank statement data to compare against.
> - Complete the [Docs-to-Digital matching — Prerequisites](doc:docs-to-digital-matching) steps.

### Retry behavior

This endpoint is safe to call more than once with the same `uploaded_doc_uuids`. A Document that already completed a Docs-to-Digital run comes back in `skipped_doc_uuids` instead of being reprocessed, so retrying doesn't create a duplicate Document or duplicate transactions.

## Path parameters

- `book_uuid` string, uuid, required

## Request body

- object
  - `uploaded_doc_uuids` string[], required: Document UUIDs of Plaid JSON Documents already uploaded to the Book. Get these from [Book information](ref:book-info) or [Book list](ref:book-list) endpoints.

## Response `200`

Document processing and skip status

- object
  - `started` boolean: Returns `true` if at least one requested document was newly triggered, or `false` if all requested documents were skipped.
  - `accepted_doc_uuids` string[]: Document UUIDs for which a new Docs-to-Digital job started. Processing is asynchronous, results arrive through the same channels as the upload-based flow.
  - `skipped_doc_uuids` string[]: Document UUIDs excluded from this run because they already completed a Docs-to-Digital comparison.

## Other responses

- `400`: Invalid request or ineligible data
- `500`: Internal Server Error

---

[API](https://skmtc.dev/ocrolus/apis/analyze.md) - [All operations](https://skmtc.dev/ocrolus/apis/analyze/llms.txt) - [OpenAPI document](https://skmtc.dev/ocrolus/apis/analyze/revisions/4ef40f224ab5?raw)
