Service

API development

Interfaces between systems that keep working when one side changes.

At a glance

Typical timeline
Four weeks for a single integration; three to six months for an integration layer
Indicative price
Pending commercial sign-off · see engagement models
Stack we default to
  • Go
  • TypeScript
  • Node.js
  • PostgreSQL
  • Kafka
  • OpenTelemetry
Engagement models
  • Fixed-scope sprint
  • Time and materials
  • Outcome-based

The problem this addresses

Integrations are usually built once, under deadline, against whatever the other system happened to return that week. They then break silently, and the failure surfaces as a business problem days later.

What you get

  1. 01Documented interfaces with published contracts and versioning rules
  2. 02Contract tests that fail in continuous integration when either side drifts
  3. 03Observability on every integration point, with alerting on the failure modes that matter
  4. 04Adapters isolating third-party interfaces you do not control
  5. 05A written integration map of what talks to what, and what breaks if it stops

How the work runs

  1. 01

    Integration mapping

    We map every system boundary, including the undocumented ones, and identify which are under your control and which are not.

  2. 02

    Contract design

    Explicit contracts with versioning and deprecation rules agreed before implementation.

  3. 03

    Iterative delivery

    Interfaces delivered one at a time, each with tests and monitoring, rather than a big-bang integration layer.

  4. 04

    Failure rehearsal

    We break the integrations deliberately in a controlled environment and verify the alerting and degradation behave as designed.

Where this fits

API development is the right label when the value is in the connection rather than the interface a person uses. It frequently runs alongside custom software, where the integration layer is one part of a larger system.

Attribution before optimisation

The most common integration problem we are called into is not "it is slow" but "we cannot tell which part is slow". Tracing goes in first on every engagement, because optimising without attribution is guessing with a budget.

Questions

What clients ask before starting

REST, GraphQL, or something else?

Whatever fits the consumers. REST is the safe default for third-party and partner interfaces because it is universally understood. GraphQL earns its complexity when you have many clients with genuinely different data needs. Event-driven interfaces suit high-volume asynchronous flows. The wrong answer is picking one because it is current.

How do you handle third-party systems we do not control?

With an adapter layer, always. A vendor interface that your application code depends on directly means their next change is your next incident. An adapter means it is one file. This is not over-engineering; it is the cheapest insurance in integration work.

What does observability mean in practice here?

Distributed tracing across every hop so a slow or failing integration can be attributed in seconds, plus alerting on the specific failure modes — timeout, partial failure, silent schema change — rather than a generic error rate. Attribution before optimisation is a rule we apply to our own work.

Can you document APIs we already have?

Yes. Reverse-engineering contracts from an existing implementation, then putting contract tests around them, is a common first engagement. It converts undocumented tribal knowledge into something enforceable before anyone changes it.

Start with the facts

Tell us what you are trying to move and what it costs you today. If we are not the right people for it, we will tell you in the first reply.