VBRO Technology
New

AI chatbots, WhatsApp automation and workflow agents — See the reference architectures we deploy.

See our AI solutions

Web Development

API Development & Integration

Interfaces other people can build against.

An API is a contract with people who are not in the room. They cannot ask what a field means, they will not read a long document, and once they have integrated they cannot easily be asked to change. That makes the initial design unusually consequential.

We build and document APIs for mobile clients, partner integrations, internal service boundaries and public developer platforms — including the parts that decide whether an API is pleasant to use: consistent errors, predictable pagination, sensible versioning and documentation that matches the implementation.

Most of the difficulty is not in serving the data. It is in staying compatible while the system behind the API changes.

The problem

What this solves

APIs that grow without a versioning strategy end up unable to change. Every field is potentially depended upon by a client that cannot be updated, so the only safe action is to add, and the surface expands until it cannot be reasoned about.

Inconsistency is the other tax. Errors returned in three different shapes, pagination that differs by endpoint, and dates in mixed formats each force the consumer to write special cases, and every special case is a place their integration can break.

  • No versioning strategy

    Every field might be depended on, so nothing can ever be changed or removed.

  • Inconsistent errors and pagination

    Consumers write a special case per endpoint, and each one is a future breakage.

  • Documentation that has drifted

    Written by hand, out of date within a release, and now actively misleading.

  • No idempotency on writes

    A client retry after a timeout creates a duplicate rather than resolving the original.

Our approach

How we go about it

We design the contract before the implementation, and validate it with someone who will consume it. Ten minutes of a client developer reading a draft specification catches things no amount of internal review does.

Consistency is enforced structurally: one error shape across every endpoint, one pagination mechanism, ISO-8601 timestamps in UTC, and predictable resource naming. Documentation is generated from the same definition the implementation validates against, so it cannot drift into describing an API that no longer exists.

Versioning and deprecation are decided at the start. Additive changes go into the current version; breaking changes get a new one with an announced timeline. Rate limiting, authentication and idempotency for anything that writes are designed in rather than added once someone has a problem.

Capabilities

What is included

  • REST and GraphQL API design

  • Authentication, versioning and rate limiting

  • Third-party and payment gateway integration

  • Webhook delivery and idempotent processing

  • OpenAPI documentation

  • Monitoring and alerting for integration health

Outcomes

What changes for you

  • Contract designed first

    Reviewed by an actual consumer before the implementation makes it expensive to change.

  • Consistent by construction

    One error shape, one pagination model, one timestamp format across every endpoint.

  • Documentation that cannot drift

    Generated from the same specification the implementation is validated against.

  • Safe to retry

    Idempotency keys on writes, so a timeout does not become a duplicate.

Frequently asked questions

Common questions about api development & integration.

REST or GraphQL?
REST for most cases: simpler to cache, simpler to debug, simpler to secure, and every consumer already knows it. GraphQL earns its place when clients genuinely need to compose varied queries — typically a public platform with many diverse consumers, or a mobile client fetching deep nested data over a slow connection. It also brings real work in query cost limiting and authorisation per field, which should be planned rather than discovered.
How do you handle breaking changes?
By avoiding them where possible and announcing them where not. Additive changes go into the current version. A genuine breaking change gets a new version, both run in parallel for a stated period, and consumers are told with enough notice to act. Removing an endpoint because the internal model changed, without warning, is how an API loses its users.
Can you document an API we already have?
Yes. That usually means writing a specification against the actual current behaviour — which is frequently different from the intended behaviour — and then wiring validation to it so implementation and documentation stay together from that point on. The discrepancies found during that exercise tend to be valuable in themselves.
Share this

Building an API other teams will depend on?

The contract is the expensive part to change. It is worth an hour before any of it is written.

Where we work

582 cities across 19 countries.

See all locations