Tools and configJson
Every tool you can run over the API, and the reliable way to find the exact configJson each one needs: capture it from the dashboard, then run it at scale.
By Operelio team · Updated July 2026
On this page7
How tools work on the API
Every job names a toolType, telling the API which tool to run, and a configJson, holding that tool's settings. The toolType is a short slug that matches the tool's page in the dashboard: /app/tools/deduplicate runs toolType "deduplicate". The configJson is different for every tool, because every tool has different options.
You don't have to reverse-engineer configJson. Because the API runs exactly what the dashboard runs, the safest way to get a working configJson is to set the tool up once in the dashboard and copy what it sends. The discovery loop below shows how.
The tools you can run
Every toolType, the dashboard name it matches, whether it takes one file or several, and whether it can run in a batch:
| toolType | Dashboard name | Files | Batch |
|---|---|---|---|
| excel_to_csv | Excel to CSV | One | Yes |
| csv_to_excel | CSV to Excel | One | Yes |
| clean_headers | Clean Headers | One | Yes |
| health_check | Health Check | One | Yes |
| deduplicate | Deduplicate | One | Yes |
| transpose | Transpose / Unpivot | One | Yes |
| find_replace | Find & Replace | One | No |
| filter_extract | Filter & Extract | One | No |
| column_manager | Column Manager | One | No |
| apply_fixes | Health Check (apply fixes) | One | No |
| crm_formatter | CRM Formatter | One | No |
| split | Split File | One | No |
| vlookup | Match & pull columns | Two | No |
| compare_files | Compare Files | Two | No |
| merge | Merge Files | Two or more | No |
| workflow | Workflow Builder | One | No |
Single-file tools take one inputFileId. Two-file tools (Match & pull columns, Compare) and Merge take a primary inputFileId plus the other file ids inside configJson. Workflow runs a chain you describe in configJson. Batch (the six "Yes" tools) is Agency only, and Excel to CSV needs an Excel file while CSV to Excel needs a CSV.
Find a tool's configJson from the dashboard
This is the reliable way to get a correct configJson for any tool: run it once in the dashboard with the browser's network inspector open, and copy the request it sends.
Open browser DevTools
In the dashboard, open DevTools (Cmd+Option+I on a Mac, F12 on Windows) and go to the Network tab. Tick "Preserve log" so the request stays visible after the page moves.
Set the tool up the way you want it
Open the tool, e.g. Deduplicate at /app/tools/deduplicate, and choose the exact options you'd use in production: match columns, rules, modes, whatever the tool offers.
Click Run and find the request
In the Network tab, find the POST request to /api/jobs (or /api/jobs/batch for a batch tool). Open its Payload or Request tab. The body is JSON with inputFileId, toolType, and configJson.
Copy the configJson into your script
Lift the configJson value into your code. It is stable across runs, so the same configJson on a different file produces the same kind of output.
Run a tool once, capture its configJson, and you have a working recipe for it. The dashboard is where you discover the shape; the API is where you run it at scale.
Worked example: deduplicate a file
Here is the deduplicate configJson from the quickstart on its own. Only the toolType and configJson change from tool to tool; the upload, poll, and download around them stay the same.
curl -X POST https://operelio.com/api/v1/jobs \
-H "Authorization: Bearer op_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"inputFileId": "8f3b7a10-2c4d-4e6a-9b1f-0d5c8e2a7f34",
"toolType": "deduplicate",
"configJson": {
"columns": ["email"],
"keepStrategy": "first",
"caseInsensitive": true,
"trimWhitespace": true
}
}'This configJson is what the Deduplicate page sends for "match on email, keep the first occurrence, ignore case and spacing". To see the exact shape for any other tool, capture it with the discovery loop above.
Common request shapes
A few patterns you'll reach for often:
| What you want | How to do it |
|---|---|
| Run one tool on one file | POST /uploads, then POST /jobs with inputFileId + toolType + configJson. |
| Run one tool on many files | POST /uploads for each file, then POST /jobs/batch with fileIds (array) + toolType + configJson. Agency only. |
| Run a two-file tool (Match & pull columns, Compare, Merge) | POST /uploads for each file, then POST /jobs with the primary inputFileId; pass the other file ids inside configJson. Capture the exact field names from the dashboard. |
| Run a workflow chain | POST /jobs with toolType "workflow" and configJson: { "workflow": { "steps": [...], "outputFormat": "csv" } }. Build the workflow in the dashboard first and capture the step shape. |
| Apply fixes from a Health Check | POST /jobs with toolType "apply_fixes" and the Health Check job's id in configJson.sourceJobId. Capped at 3 apply_fixes per Health Check. |
One rule for CRM Formatter
CRM Formatter (toolType "crm_formatter") can't be a step inside a workflow on the API. In the dashboard it runs as an automatic step after a workflow finishes, using the mapping screen, which an API call has no way to reach. To format for a CRM from the API, run your workflow first, then send its output to a separate crm_formatter job. A workflow whose last step is crm_formatter is rejected with that guidance. Formatting for a custom, in-house CRM has its own guide.
Frequently asked questions
How do I figure out what configJson a tool needs?
Run the tool once in the dashboard with the Network tab of DevTools open. When you click Run, the dashboard POSTs to /api/jobs; the request body's configJson is exactly what you send via the API. The discovery loop above walks through it.
Can I run several files through one tool in a single request?
Yes, for the six batchable tools (Excel to CSV, CSV to Excel, Clean Headers, Health Check, Deduplicate, Transpose), using POST /jobs/batch. Batch is on Agency, up to 50 files and 500,000 rows total. One batch is one API call, not one per file.
Do plan limits still apply when I call via the API?
Yes, exactly as in the dashboard. A Find & Replace job via the API costs one job, and any feature that needs a higher plan in the dashboard needs it via the API too.
Ready to get started?
Upload a file and run your first transformation. Free, no credit card required.