ReimeiTech
REIMEITECH.
← API & Integration
Custom API Development

Custom API Development

An API your partners can build on.

REST or GraphQL APIs designed for the long haul — versioning, pagination, rate limiting, auth with API keys, OAuth, and JWT, an OpenAPI spec, and developer docs. A contract your own frontend and your partners can rely on, and that survives the next refactor.

A contract, not a guess — the surface every client reads from.
01The idea

An API is a promise written in code — and someone is going to depend on it.

The first call is easy. The hard part starts the day a partner ships an integration against your endpoints, or your mobile app pins itself to a response shape, and then you need to change something. A good API treats that future as the design constraint: it's versioned so you can move forward without breaking callers, paginated so it survives real data volumes, and documented so the people building on it never have to email you to get unstuck. We design for the second year, not the first demo.

02Design principles
  1. 01

    Version it from day one

    Breaking changes live behind a new major version while the old one keeps working; additive changes ship without a bump. Callers upgrade on their schedule, not yours, and a deprecation always comes with real dates and a heads-up — never a silent removal.

  2. 02

    Paginate everything that can grow

    The list that returns fifty rows today gets asked for five million next quarter. Cursor pagination stays stable while data shifts underneath it, page sizes are bounded, and no single caller can pull the whole table and take the database down with them.

  3. 03

    Make errors predictable

    Correct status codes and a consistent error body — a stable machine code, a human message, the offending field — so clients can branch on the code and developers can read the message. The same failure always looks the same, with a request id that ties it back to our logs.

  4. 04

    Authenticate to fit the caller

    API keys for server-to-server and partners, OAuth when a third party acts for your users, JWTs for stateless calls between your own services. Every credential is scoped to the minimum it needs and rotates without downtime, so a leak is contained, not catastrophic.

  5. 05

    Rate limit, and say so

    Per-key limits protect everyone from one noisy client. We return standard rate-limit headers so callers can see their remaining budget, and answer a burst with a 429 and Retry-After rather than dropping work — so well-behaved clients can back off cleanly.

  6. 06

    Document so nobody has to ask

    An OpenAPI or GraphQL schema as the source of truth, generated reference docs that can't drift from the code, a getting-started guide, real examples per endpoint, and the error catalogue. The bar: a developer who has never met us can integrate from the docs alone.

03The surface

What a well-designed surface gives a developer to work with.

  • GET

    Read a resource or a paginated collection — cacheable, side-effect free, and safe to retry. The bread and butter your clients call most.

  • POST

    Create something new and return what was created, with an idempotency key so a retried request never makes two of the same order.

  • PATCH

    Update only the fields you send, leaving the rest untouched — partial edits without forcing a client to round-trip the whole object.

  • DELETE

    Remove or archive a resource, returning a clear result whether it existed or not, so cleanup logic stays simple and predictable.

  • QUERY

    For GraphQL: one request assembles exactly the shape a screen needs, so your mobile and web apps stop stitching five REST calls together.

  • WEBHOOK

    Push events the other way — signed, retried, and replayable — so partners react to a refund or a status change without polling you to death.

The work behind an API people trust.

Designing the resource model before a line of code.
Designing the resource model before a line of code.
Reviewing the OpenAPI spec as the source of truth.
Reviewing the OpenAPI spec as the source of truth.
Pairing on the auth and pagination edges.
Pairing on the auth and pagination edges.
Load-testing the endpoints under realistic volume.
Load-testing the endpoints under realistic volume.
Writing the docs a stranger can integrate from.
Writing the docs a stranger can integrate from.
Watching the contract hold across client builds.
Watching the contract hold across client builds.
Sketching the request and response shapes on a wall.
Sketching the request and response shapes on a wall.
Tracing a request id from client back to the logs.
Tracing a request id from client back to the logs.
Tuning cursor pagination against real volumes.
Tuning cursor pagination against real volumes.
Working through OAuth scopes and token rotation.
Working through OAuth scopes and token rotation.
Reading the generated reference like a new partner would.
Reading the generated reference like a new partner would.
Reviewing a deprecation plan before it goes out.
Reviewing a deprecation plan before it goes out.
04Versioning, over time

v1 ships

The first contract goes live with a frozen response shape. Partners and your own apps build against it with confidence.

additive growth

New optional fields and endpoints land on v1 without breaking a single caller — no version bump required.

v2 introduced

A breaking change earns a new major version. v2 runs alongside v1; nobody is forced to migrate overnight.

v1 deprecated

We publish real dates, instrument who still calls v1, and reach out before anything is switched off.

Built to be lived in

One place the logic lives.

When your mobile and web apps both call one API instead of each re-implementing the rules, the bugs stop being platform-specific. There's a single place to change a calculation, a single place to test it, and a single contract that partners and your own teams read from. The API stops being plumbing and becomes the thing the product is built on.

05How we work
1

Model the domain

Name the resources, their relationships, and who owns each field — before any endpoint exists.

2

Write the contract

Auth, pagination, error shapes, and versioning decided up front and captured in an OpenAPI or GraphQL spec.

3

Build & test the edges

Implement against the spec, then prove the hard cases: limits, retries, bad input, and large pages.

4

Document for strangers

Generated reference, a getting-started guide, and real examples — until a new developer can integrate solo.

5

Ship & support versions

Release, watch real usage, and manage versions and deprecations with dates rather than surprises.

06The stack
Design
REST/GraphQL/Resource modelling/Schema-first
Contract
OpenAPI/JSON Schema/Versioning/Contract tests
Delivery
Node & TypeScript/Python/Go/Gateways & auth
Docs
Redoc & Swagger UI/GraphiQL/Guides/Live examples

Questions teams ask first.

It depends on who's calling and how. REST stays the right default for partner-facing APIs and anything where caching, simple tooling, and a low barrier to entry matter — a partner can hit it with curl and understand it in an afternoon. GraphQL earns its keep when a single client (usually your own mobile and web app) needs to assemble varied shapes of data in one round trip and you want to avoid a dozen bespoke endpoints. We've shipped both, and sometimes both side by side: GraphQL for the first-party app, REST for the public contract. We pick based on the consumers, not on fashion.

Give them something to build on.

Tell us who's going to call the API — partners, your own apps, or both — and what they need it to do. We'll design the contract, build it with versioning, pagination, auth, and a real spec, and write the docs so the people depending on it never have to guess.