Skip to content
Software engineering

APIs and integrations

Most organisations don't have a software problem so much as a joinery problem. The systems are fine individually; the cost is in the gaps between them, bridged by exports, re-keying, and a scheduled script somebody wrote years ago that everyone is afraid to touch.

The problem

Integrations that fail quietly

The dangerous integration is not the one that breaks loudly — it is the one that stops halfway and tells nobody. Records go missing, two systems drift apart, and the discrepancy surfaces weeks later during a reconciliation, by which time nobody can reconstruct what happened or when it started.

You’ll recognise this if

  • Someone exports a file from one system and imports it into another
  • Two systems that should agree regularly disagree
  • An integration exists but nobody is confident it is running
  • You are integrating with a partner and have to expose an API
What you get

What we actually deliver

Integrations that fail loudly

Retries with sensible backoff, dead-letter handling for what cannot be processed, and alerting when something stops. Silent failure is designed out.

APIs built for the people consuming them

Versioned, documented, authenticated, and rate-limited — so a partner or your own mobile team can integrate without a weekly call to interpret the behaviour.

Idempotency and reconciliation

Operations safe to retry without double-charging or duplicating, plus a way to check that two systems still agree and to see it when they don't.

A clear map of the flows

Documentation of what moves where, on what trigger, and who to call when it stops. Usually the first time an organisation has this written down.

How we work

The way we approach it

    Establish which system is authoritative

    For every field that exists in two places, one system has to be the source of truth. Most integration pain traces back to this never having been decided.

    Assume the other end will misbehave

    Third-party APIs go down, rate-limit without warning, and change shape unannounced. We build for that as the normal case rather than as an exception.

    Backfill deliberately

    Turning on a live sync is the easy half. Bringing across history correctly, without duplicating what is already there, is where the care is needed.

Outcomes

What changes

  • Manual export-and-import steps removed from daily work
  • Failures that raise an alert instead of surfacing at month-end
  • Systems that agree, and a way to verify that they do
  • An API a partner can integrate against without hand-holding
Questions

Asked often enough to answer here

What if a system has no API?

There is nearly always a route — a scheduled file export, a database replica, or a webhook. It is less elegant and needs more care, but it is common and we plan for it rather than treating it as a blocker.

Should we use an integration platform instead?

For standard connections between well-known products, often yes, and we will point you at one rather than bill you to rebuild it. Custom work earns its place where the logic is specific to you or the volume makes per-operation pricing painful.

Can you fix an integration we already have?

Yes. Reviewing an existing integration, finding why it drops records, and adding proper retries and alerting is a well-defined and usually short engagement.

Wherever you’re starting from, let’s figure out the next step.

Tell us what you’re building — we’ll tell you honestly whether we’re the right team for it.