Skip to content

Integration · implementation

How to Integrate a System That Has No API

Integration without API access is a way to exchange data through another permitted route, such as an export, file drop, approved database read or user interface. Ask the vendor what it supports first. Choose by the data you need, how fresh it must be and who will maintain the route.

Beezr · Published · 10 min read

Sandline, our example company, runs this on Beezr → see how

On this page

Monday morning. Yousef points at the warehouse PC. “It has no API.” Karim still needs its stock counts in Beezr each night.

Integration without API access starts with finding a door you're allowed to use. Then agree who keeps it open. We'll check five routes, follow Sandline's file and test what happens when it goes wrong.

What does integration without API access mean?

An API is an agreed way for software to ask for data or actions. OpenAPI shows how an HTTP contract sets out inputs and replies.

No such route? Look for another supported door.

Keep reading apart from writing. Sandline needs stock counts. Creating warehouse movements would be a different project, with different risks.

Is it a desktop app or a web page? A PC can run either. Microsoft's docs make that split clear.

How do you integrate legacy systems? Check five routes

Ask the vendor first. Get a sample with the stock fields. “We could build that” isn't a route you can test today.

Ask about What to request
Supported routes Export specification, reporting interface, approved read view, integration module or documented extension point

Try the existing export. Sit with Yousef and check codes, bins, units and source time. Does quantity mean counted stock or stock for sale?

Manual upload is a valid first version if everyone knows who does it.

Agree a file drop. The source makes a file at a set time. A process at your end picks it up.

Name who owns access, transport and checks that the whole file arrived. Keep upload as a visible step until someone owns pickup and starting the run.

Read the database with approval. Get the owner's consent first. Keep writes out.

A field you can read may still mean the wrong thing.

Database agreement What to check
Account and view Vendor-approved read account and documented reporting view
Permissions PostgreSQL's privileges separates selecting from inserting, updating and deleting
Upkeep Owner-approved query load, field meanings, upgrade tests and responsibility for schema changes

Try the browser route. Can the service reach the page and sign in? Check before you build.

Browser setup What matters
Beezr Web Agent CSS selectors find fields and buttons
Unattended sign-in CAPTCHA, two-factor prompts and bot protection can block it

If a person must answer a challenge, agree that step or choose another route. For desktop-only apps, assess files or a supported desktop tool.

Five doors to investigate Alternative routes, not five simultaneous implementations. Ask the vendor about a supported interface; check an export/report and upload owner; agree scheduled file delivery; use only an approved database read with a view owner; browser automation requires a reachable permitted web interface. Desktop-only systems need another route. Sample fields: NG-200, box, bin and stock timestamp. The destination is Beezr stock snapshot records. WarehouseStock countsVendorSupported?Export / reportUpload owner?Scheduled fileDelivery owner?Approved readView owner?Browser routeReachable web?NG-200 · box · binStock timestampBeezrStocksnapshotrecords
Five doors to investigate Alternative routes, not five simultaneous implementations. Ask the vendor about a supported interface; check an export/report and upload owner; agree scheduled file delivery; use only an approved database read with a view owner; browser automation requires a reachable permitted web interface. Desktop-only systems need another route. Sample fields: NG-200, box, bin and stock timestamp. The destination is Beezr stock snapshot records. WarehouseStock countsVendorSupported interface?Export / reportWho uploads?Scheduled fileWho delivers?Approved readView owner?Browser automationReachable web interface?NG-200 · box · binStock timestampBeezrStocksnapshotrecords
Each route needs permission, usable data and someone responsible for keeping it working.

Which route can you maintain?

These are our planning views, not measured scores. The work depends on what's there. A supported export can change the answer.

Route Setup effort Reliability depends on What breaks it Who maintains it
Vendor-supported interface Discovery first; implementation depends on what exists A documented contract and upgrade support Unsupported scope or a changed contract Vendor plus Karim
Manual export/report and import Lower when a usable report already exists A repeatable human checklist and data checks Missed upload, wrong report, wrong date Yousef for export; Karim for mapping
Scheduled file drop Moderate if export scheduling and transport exist File completeness, freshness and receipt checks Missing file, partial copy, changed headings Source operator plus Karim
Approved database read Moderate to higher, depending on vendor support Stable view, permissions and acceptable workload Schema change, revoked access, misunderstood fields Database owner plus Karim
Browser automation Moderate to higher, depending on page and sign-in behaviour Reachable pages, working selectors and tested authentication Page redesign, sign-in challenge, incomplete download Karim, with vendor change notices

A login alone proves little. Sandline needs a checked stock snapshot in Beezr, with a source time everyone understands.

Build the handoff around a stock snapshot

Karim finds a web app on the warehouse network. It has an Export to Excel button. A Web Agent will fetch the file each night.

If that fails, Yousef exports and uploads it by hand.

A snapshot is the reported quantity at a given time. It isn't an instruction to add that count to yesterday's stock.

These rows are test data, not real stock:

Product code Bin Quantity Unit Source timestamp
NG-200 A-01 40 box 2026-10-17 22:00, warehouse local time
HLM-01 B-02 400 piece 2026-10-17 22:00, warehouse local time

NG-200 is nitrile gloves by the box. HLM-01 is a safety helmet sold by the piece. Use source snapshot time, not upload time.

Keep source columns and unit codes in one place. Map BOX to box there and check product codes.

Technical term What it means here
Anti-corruption layer A translation boundary keeps the old data model from spreading into the new one. It needs upkeep too.

Sandline · example

The same stock file turns up again

Yousef uploads the test file: NG-200 has 40 boxes; HLM-01 has 400 pieces. Karim checks the mapping and source time before confirming.

Later, the same file returns. In the workflow version, Load data checks its source snapshot ID. A Decision uses Karim's tested rule to stop a repeat.

A later NG-200 count of 35 boxes is a new balance. Don't add 35 to 40. Show Layla which snapshot is current and reviewed; keep the old source date.

How the nightly download runs

  1. Open and sign in — reach the warehouse browser page.
  2. Choose the report — click Export with the selectors you chose.
  3. Wait for the file — a click alone doesn't prove download.
  4. Read the table — choose the sheet and heading settings for the list.
  5. Check the rows — use a Loop, mappings and Decisions. Send exceptions for approval before accepting the stock snapshot.

Agree who starts the run each night. Set up that trigger or outside schedule as part of the project.

Check the stock before accepting it Warehouse export has exactly two test rows: NG-200, A-01, 40, box; HLM-01, B-02, 400, piece. Both source timestamps are 2026-10-17 22:00 warehouse local time. Configured checks validate SKU, unit, freshness and snapshot identity. Passing data becomes an accepted Beezr stock snapshot; exceptions go to Yousef / Karim for review. Repeating the snapshot is not a new stock movement. A Web Agent download is an alternative only if a permitted web interface exists. Warehouse exportNG-200 · A-01 · 40 · boxHLM-01 · B-02 · 400 · piece2026-10-17 22:00Warehouse local timeKnown SKU?Correct unit?Fresh source time?Seen this snapshot?BeezrAcceptedstocksnapshotReview taskYousef / Karim
Check the stock before accepting it Warehouse export has exactly two test rows: NG-200, A-01, 40, box; HLM-01, B-02, 400, piece. Both source timestamps are 2026-10-17 22:00 warehouse local time. Configured checks validate SKU, unit, freshness and snapshot identity. Passing data becomes an accepted Beezr stock snapshot; exceptions go to Yousef / Karim for review. Repeating the snapshot is not a new stock movement. A Web Agent download is an alternative only if a permitted web interface exists. Warehouse exportNG-200 · A-01 · 40 · boxHLM-01 · B-02 · 400 · piece2026-10-17 22:00Warehouse local timeKnown SKU?Correct unit?Fresh source time?Seen this snapshot?BeezrAcceptedstocksnapshotReview taskYousef / Karim
The handoff is complete when the stock data is checked, not when Export is clicked.

How Beezr does it

The Web Agent job runs in its own queue service. The workflow waits, then gets a fresh copy of the record. Load any lists you still need again.

Have a CSV in a file field? The parser reads its typed columns into a named list. This differs from a Web Agent Excel download or an import preview.

Choose your path in Beezr's integration options.

What if the count can't be trusted?

Use these pass/fail tests:

Test input or event Expected behaviour to agree
Yesterday's file arrives today Flag the source timestamp; don't present it as a fresh count.
A file contains an unknown SKU Hold that row for mapping review; don't guess the product.
NG-200 uses pieces instead of boxes Require an agreed conversion or correction before acceptance.
A file is empty or incomplete Preserve the previous accepted snapshot and show the failed handoff.
The same batch is processed again Recognise its identity; don't create a stock movement or duplicate accepted batch.
A browser selector or sign-in flow changes Stop the failed route and use the agreed manual fallback.

Store the source batch ID and review state on records. Use Decisions to split good rows from rows that need review. Add approval for a person to accept or reject.

Yousef owns what the numbers mean; Karim repairs the link. Hana should see a new snapshot before it feeds a finance decision.

Choose a route with an owner

  • If a supported interface fits → test it first. Agree its contract and support.
  • If an export is fresh enough → prove import first. Add scheduling after the file works.
  • If scheduled export and transport exist → agree a file drop. Name the owner of collection and missing-file checks.
  • If approved database access fits → use a documented read view. Agree load and schema changes.
  • If only a browser route fits → test a Web Agent. Include sign-in, download and page changes.
  • If no allowed route fits → keep a controlled manual handoff or change the need. Settle access before promising hands-off runs.

Myth / Reality

“If someone can click it, a robot can do it nightly.” Check browser access, reach and sign-in. A demo isn't an upkeep plan.

Our take

Our take. Start with the smallest useful read. A checked snapshot proves fields, units and ownership before you automate.

Key takeaways

  • If you're technical: define snapshot ID, units and repeats first. Check browser versus desktop support.
  • If you're not: ask to see a stale file and failed export.
  • Every route needs an owner.
  • Choose import, CSV parsing or Excel download on purpose. Agree scheduling and delivery too.

Build Sandline's stock-count handoff in Beezr

Start with a checked import, then have a Web Agent fetch exports.

  1. Create snapshot records — add code, bin, quantity, unit, source time and review state.
  2. Prove import — use CSV, XLSX or XLS. Map IDs and fix Must fix rows before confirming.
  3. Set up download — sign in, export Excel and read its table into a list.
  4. Check and review — use Loop, Load data and Decisions for product and snapshot checks. Add exception approval.
  5. Check failures — check run history, then correct or use manual import.

Questions readers ask

Can integration without API access always work?

Data on screen doesn't prove you can get it out. Check which route gives you the fields you need. Treat writes as their own task, with vendor support and checks.

How do you import legacy system data in Beezr?

Get the module's import template and map your file to it. Put Excel data on the first sheet, with headings at the top. Check new rows, updates and rows to review in Beezr's data tools.

Fix rows marked Must fix before you confirm. Watch the ID field too:

ID choice Result
Existing Beezr record ID Updates that record
Empty ID Creates a new record, including on repeat import
Warehouse SKU Not a Beezr record ID; don't expect a product-code match

Choose new snapshots or updates to known records. Test that choice.

What should a CSV file agreement cover?

Agree the file rules, then test a name with punctuation.

CSV detail Agreement
Format Headings, types, encoding and quoting
Text RFC 4180 covers commas and line breaks in fields; it notes common US-ASCII usage. Agree encoding for Arabic and accented names.
RPA vs API: what's the difference?

RPA is software that uses an app's screens like a person. An API uses the app's defined software interface. Prefer a supported API that fits.

Tool scope What to check
Microsoft desktop flows Legacy and desktop applications
Microsoft UI elements Distinct desktop and web elements
Beezr Web Agents Browser interaction; assess desktop automation as a separate capability

The screen is just the start. Ask who will keep this route working. Then show that person a failed run, as well as a good one.

Sandline Supplies is a fictional example company.

Sources

  1. Common Format and MIME Type for Comma-Separated Values (CSV) Files, RFC 4180 · RFC Editor · 2005-10
  2. Privileges, PostgreSQL 18 · PostgreSQL Global Development Group · Accessed 2026-10-17
  3. Automate using UI elements · Microsoft · Updated 2026-05-14
  4. Introduction to desktop flows · Microsoft · Updated 2026-08-23
  5. OpenAPI Specification v3.1.1 · OpenAPI Initiative · 2024-10-24
  6. Anti-Corruption Layer pattern · Microsoft · Updated 2026-05-28

Related guides

Your process, made concrete.

Let's talk

Show us how the work runs today. We'll work through what to build with you.

Talk to us