APIs for your own apps, your partners, or the public — versioned, documented and protected.
Before you read: Written from live engineering practice — the money-moving, million-user work our team runs on our own products, set down so anyone building something can learn from it.
01 · What it is
An API is a product with its own users, and we build them like one: versioned so existing consumers never break, documented so strangers can integrate without a phone call, and protected so abuse doesn't drain your resources. We handle the machinery most people get wrong — scoped keys, OAuth flows, rate limits that are actually enforced, webhooks signed and retried so your partners can trust them, and usage metering so you know who is consuming what.
What a api development build covers:
APIs at TGJOF are products with their own users, their own contracts and their own trust boundaries. We build interfaces that a partner can build on safely — versioned, documented, rate-limited and verified at the edge of every money flow.
What we do
How we do it
02 · The full discipline
An API is not a file of endpoints. It is a contract between you and everyone who depends on your software — your own app, your partner's integration, a stranger integrating at 2am, the sandbox, the future version of your own product. Those people cannot see your screens; they see your API, and it either lets them in or it does not.
We build APIs the way we build money systems, because at the centre of Kenyan software there is almost always an API moving money, identity or records. Every endpoint is versioned so existing consumers never break, documented so a stranger integrates on the first try, protected against the noisy internet that hammers every exposed surface, and measured so we know who consumes what, when, and against which limits.
Everything below is the full discipline of API development — the contract design, the versioning, the security on every side, the rate and abuse controls, the webhooks, the observability, the developer experience, the scaling reality, and how we actually build and ship an API that other builders learn to trust.
03
Most software teams treat the API as plumbing for their own screens. That is a leak of ambition. An API has its own customers — engineers, partners, systems, your future self — and they each measure it differently: does it work? is it stable? is it documented? does it explain its failures? We engineer the API as the product it actually is.
The test of an API is uncomplicated: a stranger with the documentation should integrate on the first attempt, and a partner who integrated two versions ago should still work today. Everything else is detail.
04
A well-designed API is a specific, teachable craft — the same discipline that makes a good spreadsheet or a good form. Each choice below is a promise to whoever calls you:
Every design decision above is a small trust deposit with the people who build on you. An API that keeps its promises quietly is the API that becomes the backbone of someone else's product.
05
APIs that never change stagnate; APIs that change carelessly break partners. Versioning is how a live API improves without punishing the customers who believed in it:
Versioning is the difference between an API people build their business on and an API people flee. We keep the platform's promises so the platform keeps its partners.
06
An exposed API learns within minutes how much of the internet is hammering for free — scanning paths, trying default keys, probing for mistakes. Security is not a layer; it is the standing posture of every request that arrives:
We harden our own payments API against the internet every day. An API on our watch is built as if its keys are already half-leaked and the internet is already curious — because both are true for every API eventually.
07
Below is the concrete checklist we run against every API we build or audit. Each item is a real control with a real test — the same ones that catch problems on live systems:
This checklist saved real products on real nights. Every item corresponds to a class of exploit we have seen in the wild — including inside software that believed it was already secure — and each has a test that runs before deploy.
08
Identity is the first conversation a caller has with an API, and the wrong one poisons everything that follows. We build auth with the current best practice handling humans, machines and the awkward in-between:
We have run real OAuth, magic-link, device-link and session-light gates on a live platform. Modern identity looks unglamorous: short lives, verified grants, and the ability to say no instantly.
09
Webhooks are where integrations either shine or silently corrupt data. A signed, idempotent, retried and dead-lettered webhook delivery is the difference between a partner that trusts you and a partnership that ended in blame at 3am:
Our own payments platform lives on verified, idempotent callbacks — the exact discipline Daraja, C2B, B2B and B2C require for real money. A webhook we send is a promise we can prove; a webhook we receive is a claim we verify before we act.
The loop we run for real-money callbacks (this is the part that separates a toy from a platform):
10
Every good API needs a policy for 'how much is too much' — per key, per consumer and per spike. Limits are not punishment; they are how a shared resource stays healthy for everyone:
We enforce rate limits on every money path in our own platform — 5-second windows per user per action, checked at the gateway and inside logic. A well-limited API is a calm API; an API without limits discovers why it needed them in an incident.
On money APIs the rate limit is a financial control, so we make ours stronger than a generic throttle:
11
You cannot run an API you cannot see being used. Metering is how the operators — and the billing team — know what the API actually does, who it serves and where the demand grows:
Metering and observability are the same muscle: you can only run, protect and bill what you can actually see. We instrument APIs the way we instrument money — every meaningful call measured, every limit visible.
12
An API's closest customer is a developer whose patience is finite. Developer experience is not a courtesy; it is the difference between partners who integrate in an afternoon and leads that hire someone else because your docs were exhausting:
The highest compliment an API receives is not 'it's fast' — it is 'I shipped my first call without asking anyone'. We design the surface so that silence is the normal outcome.
13
Not every API answers immediately. Long tasks, batched processing and event streams want a different shape — and the honest API says clearly which kind it is:
A confusing API hides its asynchrony; a confident API declares it. We design each operation to be either honestly synchronous or honestly event-driven — and never silently kind-of-both.
14
An API that is fast at a thousand calls and crawling at a million was built for the smaller number. The discipline below is what keeps an API's promises as the callers and the data grow — for real, not on a slide:
We have profiled APIs where one missing index turned a partner's call into a thirty-second crawl, and one N+1 query quietly tripled database load. Performance is a design property, found before the users feel it — and measured again after.
15
An API's clients cannot be regression-tested by a browser; the contract must be proven by machine, on every change, so the people who depend on you are never surprised by a deploy:
We deploy APIs the same way we deploy payments — in small, proven, reversible steps. A release that passes our API suite is a release we can ship before lunch and stand behind after dinner.
16
The same engineering discipline shown throughout this list — visible, iterative and ending with the customer owning everything — is how an API gets built:
You own the code, the contract, the pipeline and every key. No lock-in, no hostageware, no 'it only works in our basement' — the API other people build their business on is an API you own and can run anywhere.
17
Because an API becomes part of other people's software, we are direct about the realities you will meet on every build:
Honest scoping is part of the contract too. We will tell you when an API is overkill, when a webhook is the wrong shape, and when your real need is a clean integration rather than a public surface.
The toolchain
Every layer below is chosen to make an API trustworthy: a contract that keeps its promises, security that treats every request as hostile, rate and abuse control that keeps the resource fair, webhooks that can be proven, and observability that shows the whole picture. These are the exact patterns behind our live payments API — verified, idempotent and hardened.
01
The shape the callers speak
02
Who is calling, and what they may do
03
The API as a public door
04
Integrations that can be proven
05
Fair, visible, billable
06
Seeing the API while it runs
07
The API people enjoy
08
The contract proven by machine
Lifecycle
An API is not a delivery; it is a living contract with its own users, evolving by version, protected against the internet and proven by test. This is the lifecycle we carry every API through.
01
The consumers first — who is calling, what journeys they walk, and the five paths that must work before the hundred niceties.
02
Resources, status codes, errors, pagination and idempotency — the agreement drafted before the implementation.
03
Auth, scopes, rate limits, verification and the OWASP controls as the foundation, not the finish.
04
Endpoints against one trusted data layer, with contract tests enforcing the promises.
05
The five critical journeys, the error paths and the version promise — tested the way the callers will test them.
06
Signed, idempotent, retried and dead-lettered webhooks — the trust machinery for integrations.
07
Interactive docs, examples, sandbox and quick starts — so a stranger ships on the first attempt.
08
Metering, logs, alerts and per-consumer dashboards — an API that cannot be seen cannot be run.
09
Contract and load rehearsed on staging, then a controlled first wave of real consumers.
10
Versions maintained, deprecations announced, sunset dates kept — the old contract honoured while the new grows.
11
Abuse, limits, errors and trend — the quiet attack and the runaway key spotted before anyone notices them.
12
Code, contract, documentation and pipeline delivered — the API your partners trust is an API you own.
Closing
API Development is where software meets software: a contract people build on, protected against the internet, proven by test and measured with honesty. That includes:
An API is the only part of your product that other people's software depends on — and the only part that cannot hide behind a good interface. When the contract is stable, the security is real, the webhooks can be proven and the errors teach, an API becomes the quiet backbone that other builds rest on without ever noticing it is there.
We build APIs the way we build money systems — because at the centre of Kenyan software there is almost always an API moving money, identity or records. Every endpoint, every token, every webhook and every rewritten retry is held to the standard of real trust.
Previous capability
Backend Engineering
Next capability
Payment & Transaction Systems
The discipline above is what we run on our own products every day. If it would help on yours, our door is open.