Live sandbox
A real API, not a screenshot of one.
This is the kind of thing we build: websites, web apps, mobile apps, e-commerce stores and the APIs that hold them together. The console below is one of those builds, live and open for you to call.
What we build
Technology, end to end.
From the first page a visitor sees to the API behind it, we build the whole stack. Everything below ships live, and you can test the API pattern on this very page.
Websites
You need to be found and trusted online before a single phone call.
Marketing sites, company sites and storefronts that load fast and rank, built around what the business actually sells.
Web apps
You are running crucial work on spreadsheets and chasing documents.
Dashboards, portals and tools your team, customers or partners log into and work in daily.
Mobile apps
You want the service in your customers’ pockets, not just in a browser tab.
iOS and Android apps, built when the job really needs to live in the pocket rather than the browser.
E-commerce stores
You want orders taken while you sleep, with the admin handled.
Order-taking storefronts with catalogues, carts, checkout and the fulfilment loop closed behind them.
APIs & integrations
You have two systems that refuse to talk to each other.
The connective tissue between systems, built so two platforms talk without a human re-typing anything.
Automation & tooling
You are paying people to move information between tools by hand.
Internal systems that stop manual work: dispatch, pricing, data routing and the dashboard that watches it all.
Try one yourself
This endpoint prices a delivery, live.
It is public, rate-limited, and it behaves the way we build integrations for clients, because it was built the same way. Call it from the console below, or from your terminal.
Loading the console…
Sandbox environment. Distances are straight-line with a road correction factor, and the rate card is illustrative; it is not GoFlow’s live commercial pricing. No data is stored beyond a five-minute idempotency cache.
What it demonstrates
The unglamorous parts, which are the parts that matter.
Anyone can return JSON. The difference between an integration that survives contact with production and one that does not comes down to four behaviours, all of which are live in this endpoint.
Schema validation
Every field is validated before anything runs. Invalid input returns 422 with a per-field explanation, not a stack trace and not a silent default.
Idempotent replay
Send the same request twice with the same Idempotency-Key and the second returns the stored response with Idempotency-Replayed: true. This is what stops a retried webhook becoming a duplicate delivery.
Rate limiting
Fixed window per client, with X-RateLimit-* headers on every response and Retry-After on a 429. A caller can always tell exactly where they stand.
Traceable responses
Every response carries a requestId and server-measured latency. When a client says “it failed at 14:20”, that is the difference between a five-minute fix and a five-hour one.
Reference
Endpoints
Two endpoints, no authentication, no signup. Discovery first so a caller can find valid ids without reading documentation.
/api/sandbox/quoteLists supported locations and service levels.
/api/sandbox/quotePrices a delivery. Accepts an optional Idempotency-Key header.
{
"pickup": "lag-ikeja",
"dropoff": "lag-lekki",
"weightKg": 3,
"service": "express",
"declaredValue": 150000
}