Skip to main content
The walkthrough below has tabs at each step — pick UI to drive everything from app.anyformat.ai, or curl / TypeScript / Python to drive the API directly. The four paths produce the same result.
Not a developer? Follow the UI tab the whole way down and ignore curl / TypeScript / Python — you can build and run everything from app.anyformat.ai without writing any code. For more advanced workflows (sorting documents by type, splitting files, validation rules), see Studio.Even if you do plan to integrate via the API, we recommend building your first workflow in the UI — it’s faster to iterate on fields visually, and once it works you can copy the workflow ID and call it from code.

Before you start

Create an account at app.anyformat.ai. That’s it.

1. Create a workflow

A workflow defines what data to extract. We’ll build a simple invoice processor with three fields: invoice_number, total_amount, issue_date.
  1. From the home screen, type a description of what you want to extract (e.g. “Invoice processing: extract invoice number, total, and issue date”).
  2. Drag in a sample invoice PDF (optional but recommended — anyformat will suggest fields from the document).
  3. Click the send icon (the arrow button in the text box) to start.
anyformat opens the workflow workspace with the document on the left and the fields panel on the right. Review the suggested fields and adjust as needed.Once your fields look right, copy the workflow ID from the URL or workflow settings — you’ll need it if you want to run this workflow via the API later.
This is the simple Parse → Extract shape. You can also build parse-only workflows, sort mixed document types with Classify, or split multi-document files — all by arranging the steps yourself in Studio.

2. Run the workflow on a document

From the workflow workspace, drag in (or upload via the Add document button) the invoice you want to process. Processing starts automatically and usually completes in 10–60 seconds depending on the document.You can also open a single document (click its filename) and run it from the Process document button on the right.

3. Get the extracted data

Results appear in the workflow workspace as soon as processing finishes — no refresh needed.
  • Table view shows all your documents at once. The first tab lists your documents (one row each); extra tabs show the output of each step in your workflow.
  • Document view (click a filename) shows one document on its own, with each extracted value highlighted on the page it came from — click a field to see where it came from.
Export the results as CSV, Excel, or JSON from the workflow view. See Outputs for the differences.
A completed result looks like this (one section per node type that ran — parse and extractions here; classifications and splits are empty because this workflow has neither):
{
  "collection_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "verification_url": "https://app.anyformat.ai/workflows/.../files/...",
  "parse": { "markdown": "<DOCUMENT id=\"1\" page=\"1\">...", "text": "...", "parse_confidence": 94.2, "layout_confidence": 87.4, "blocks": [] },
  "classifications": [],
  "splits": [],
  "extractions": [
    {
      "split_name": null,
      "partition": null,
      "fields": {
        "invoice_number": {
          "value": "INV-2024-0847",
          "confidence": 97.0,
          "evidence": [{"text": "Invoice #INV-2024-0847", "page_number": 1}],
          "verification_status": "not_verified"
        },
        "total_amount": {
          "value": 4087.50,
          "confidence": 96.0,
          "evidence": [{"text": "Total: $4,087.50", "page_number": 2}],
          "verification_status": "not_verified"
        },
        "issue_date": {
          "value": "2024-03-15",
          "confidence": 93.0,
          "evidence": [{"text": "Date: March 15, 2024", "page_number": 1}],
          "verification_status": "not_verified"
        }
      }
    }
  ]
}
See Runs & results for the model behind these sections, and Response formats for every field in the envelope.

Complete script

The three steps above are narrative slices of the same script. Here they are end-to-end as a single pasteable block.
import { Anyformat, Schema } from "@anyformat/sdk";

const af = new Anyformat({ apiKey: process.env.ANYFORMAT_API_KEY! });
const file: File = /* a File with .name set, e.g. new File([bytes], "invoice.pdf") */;

const result = await af
  .workflow("Invoice Processing", "Extract key data from invoices")
  .parse()
  .extract([
    Schema.string("invoice_number", "The unique invoice identifier"),
    Schema.float("total_amount",    "Total invoice amount"),
    Schema.date("issue_date",       "Date when the invoice was issued"),
  ])
  .run(file)
  .wait();

console.log(result.field("invoice_number")?.value);
console.log(result.field("total_amount")?.value);
console.log(result.field("issue_date")?.value);

Where to go next

Build workflows

Deeper walkthrough of the Define → Refine → Publish lifecycle in the UI

Recipes

End-to-end examples — invoices, resumes, contracts, receipts, and more

Coding assistant

Let Claude Code build and run anyformat workflows from your editor

API reference

Every endpoint, every response, every error code