Sample Documents
ACORD 25 Certificate
This is a blank ACORD 25 Certificate of Liability Insurance. We’ll extract data from a declarations page and use it to fill this form.
View the sample form: ACORD 25 Certificate of Liability Insurance (PDF)
Declarations Page (Source Data)
The declarations page contains all policy details: insured name, policy numbers, effective dates, and coverage limits. This is the source data we’ll extract.Create API Key
1
Open Studio
Go to studio.reducto.ai and sign in. From the home page, click API Keys in the left sidebar.

2
View API Keys
The API Keys page shows your existing keys. Click + Create new API key in the top right corner.

3
Configure Key
In the modal, enter a name for your key and set an expiration policy (or select “Never” for no expiration). Click Create.

4
Copy Your Key
Copy your new API key and store it securely. You won’t be able to see it again after closing this dialog.
Set the key as an environment variable:

Part 1: Extract from Declarations Page
The declarations page contains all the policy details needed to fill an ACORD 25: insured name, policy number, effective/expiration dates, and coverage limits.Studio Walkthrough
1
Upload Declarations PDF
Go to studio.reducto.ai and create an Extract pipeline. Upload the declarations page PDF.Extract reads the document and lets you define a schema to pull specific fields as structured JSON.
2
Build the Schema
In the Schema Builder, define fields matching the declarations page structure. Click Add Field for each:
Field descriptions help the LLM locate the right values. Be specific about where each field appears. See the Complete Schema below for a copy-paste version.
policy_number(text) - “Policy number from the declarations page”named_insured(object) - “Policyholder information”name(text) - “Insured name”address(text) - “Mailing address”
effective_date(text) - “Policy effective date”expiration_date(text) - “Policy expiration date”insurer_name(text) - “Insurance company name”umbrella_occurrence_limit(number) - “Each occurrence limit”umbrella_aggregate_limit(number) - “Aggregate limit”

Schema Builder with declarations page fields defined
3
Run Extraction
Click Run. The Results tab shows extracted data as JSON:

Extraction results from the declarations page
Using the API
Let’s walk through extracting policy data step by step.Step 1: Initialize the client
Start by importing Reducto and creating a client. The client reads your API key from theREDUCTO_API_KEY environment variable automatically.
Step 2: Upload your document
Upload the declarations page PDF. This returns afile_id that you’ll use for extraction. Reducto stores the file temporarily so you can process it without re-uploading.
Step 3: Define the schema structure
The schema tells Reducto what fields to extract. Start with the basic structure:Step 4: Add simple fields
Add the basic policy fields. Each field needs atype and a description. The description is important because it tells the LLM where to find the value.
Step 5: Add nested objects
For grouped information like the insured’s details, use a nested object:Step 6: Add coverage limits
For numeric values like coverage limits, usetype: "number". Reducto will return these as integers or floats, not strings.
Complete Schema
Here’s the complete schema you can copy and paste:Step 7: Run the extraction
Pass your schema to the Extract API using theinstructions parameter:
instructions parameter wraps your schema. This structure allows for additional options like system prompts.
Step 8: Access the results
The extracted data is inresult.result[0] (the API returns an array for multi-document support). Each field from your schema becomes a key in the response:
Part 2: Fill ACORD 25 Certificate
Use the extracted policy data to fill a blank ACORD 25 certificate. The Edit API detects form fields and fills them based on natural language instructions.Studio Walkthrough
1
Upload Blank ACORD 25
Create an Edit pipeline in Studio. Upload a blank ACORD 25 PDF.Edit detects all fillable fields in the form: text boxes, checkboxes, and dropdowns.
2
Write Fill Instructions
In the Edit Instructions panel, describe what values to fill. Reference the data you extracted:Be explicit about field locations when the form has similar fields (e.g., multiple policy number boxes).
3
Run and Download
Click Run. Edit fills the form and returns a download link. The filled PDF has all your values in the correct fields.

Filled ACORD 25 certificate ready for download
Using the API
Now let’s fill the ACORD 25 with the extracted data.Step 1: Upload the blank form
Upload the blank ACORD 25 PDF. Edit uses the same upload mechanism as Extract.Edit uses
document_url instead of input. This is because Edit modifies documents rather than reading them.Step 2: Write fill instructions
Edit uses natural language instructions instead of a schema. Describe what values should go where. Reference the section names on the form to help Edit find the right fields.topmostSubform[0].Page1[0].f1_1[0]. Edit uses AI to understand context, so “Insured Name” works even if the PDF field is named something obscure.
Step 3: Run the Edit API
Pass your instructions to the Edit API:- Detects all fillable fields in the PDF
- Reads surrounding context (labels, headers) to understand each field
- Maps your instructions to the appropriate fields
- Fills the values and returns the modified document
Step 4: Download the result
The response includes a URL to download the filled form:Complete Workflow
The full pipeline extracts data from a declarations page and fills an ACORD 25:Tips
Handling checkboxes
ACORD 25 has multiple checkbox fields (policy types, coverage indicators). Be explicit in your instructions:Form schema for production
For high-volume certificate generation, save theform_schema from your first Edit response. This skips field detection on subsequent calls.