Services · APIs and integrations
API development and integration services for products that depend on other systems
We design and build REST and GraphQL APIs, and connect your product to payment providers, CRMs, messaging and data sources. Every integration is built to survive retries, rate limits and the day the other system goes down.

Short answer
API development and integration covers building the interfaces your product exposes and connecting it to the systems it relies on: Stripe, HubSpot, Salesforce, Twilio and your own back office. Innovation Insight builds documented, versioned APIs and integrations with idempotent writes, verified webhooks, queues and monitoring. Work is priced at $25 to $49 an hour for senior engineers, or as a fixed scope after a $3k to $8k discovery sprint for larger programmes.
Reviewed by Zain Khalid Malik, CTO & Co-founder · Updated
Two kinds of API work
Most requests we receive fall into one of two groups. The first is building an API: the interface your web app, mobile app, partners or customers call. The second is integration: making your product work with systems you do not control, such as a payment provider, a CRM, an advertising platform or a legacy database. The skills overlap, but the risks differ. Your own API fails when it is badly designed. An integration fails when the other side changes, slows down or sends the same event twice, and your code was not written to expect it.
What we build
| Work | What it includes | Typical tools |
|---|---|---|
| Product APIs | REST or GraphQL API for web and mobile clients, authentication, validation, pagination, error contracts | Node.js with NestJS or Hono, Python with FastAPI, PostgreSQL, OpenAPI |
| Public and partner APIs | Versioning, API keys or OAuth, rate limits, usage metering, reference docs, sandbox | OpenAPI, API gateways, hosted docs |
| Payment integrations | Subscriptions, one-off payments, marketplaces with payouts, refunds, tax, multi-currency | Stripe Billing, Stripe Connect, Paddle, app-store billing |
| CRM and marketing integrations | Two-way sync of contacts, deals and activity; lead capture; attribution | HubSpot, Salesforce, Zoho CRM, ActiveCampaign, LinkedIn and Google Ads |
| Messaging and notifications | SMS, email, WhatsApp and push with user preferences and delivery tracking | Twilio, SendGrid, Firebase Cloud Messaging |
| Webhooks | Receiving events safely and sending your own to customers | Signature verification, queues, retries with backoff, dead-letter queues |
| Legacy and internal systems | Wrapping an old database, ERP or file drop in a clean API | Adapters, scheduled sync jobs, change data capture |
| AI access to your API | Letting assistants and agents use your product | MCP servers over your existing endpoints |
How we make integrations reliable
- Idempotent writes. Every operation that creates or charges something carries an idempotency key, so a retry after a timeout cannot create a second order or a second charge.
- Verified, queued webhooks. We check the signature, store the raw event, acknowledge quickly and process from a queue. Duplicate and out-of-order events are expected and handled.
- Retries with limits. Failed calls retry with backoff, then move to a dead-letter queue where a person can see and replay them. Nothing fails silently.
- Respect for rate limits. Sync jobs run with controlled concurrency and resume where they stopped, so a large account does not exhaust a provider's quota.
- Reconciliation. For payments and CRM data we keep our own record and compare it with the provider on a schedule, because webhooks alone will eventually miss something.
- Contract tests and monitoring. Tests run against provider sandboxes in CI, and dashboards show failure rate and lag for each integration.
Integration work we have shipped
- TamTracker: nine integrations including LinkedIn Ads, HubSpot, Google Ads, Zoho CRM and ActiveCampaign, using OAuth, API-key and webhook authentication. Syncs run through an SQS queue and an ECS Fargate task with a dead-letter queue, three retries and one-at-a-time concurrency to respect provider limits.
- Paint Nite: a six-stage checkout with idempotent Stripe payments and an atomic order transaction, with separate Stripe accounts, keys and webhook secrets for the US and Canada.
- Seek My Service: a NestJS API with more than 80 REST endpoints documented in Swagger, Stripe payments for vendor credits, and notifications through Twilio SMS and SendGrid email.
- Edge OCR: four Stripe subscription plans with usage limits, overage purchases and full webhook handling.
API design principles we follow
- Write the contract first. An OpenAPI or GraphQL schema is reviewed before code, so front-end and partner teams can start against a mock.
- Authorise every object. Each request checks that the caller may access that specific record, which addresses the top risk in the OWASP API Security list.
- Version from the first release. Breaking changes go into a new version with a published deprecation date.
- Return errors a developer can act on: a stable code, a human message and a request ID that matches your logs.
- Paginate, filter and limit by default, so one request cannot pull the whole table.
- Document as part of the work. Reference docs and examples are generated from the contract and shipped with the API.
What it costs
| Scope | Typical effort | How it is priced |
|---|---|---|
| One third-party integration (for example Stripe subscriptions or HubSpot sync) | 1 to 3 weeks for a senior engineer | Time and materials at $25 to $49 an hour |
| New product API for a web or mobile app | 6 to 12 weeks with a small team | Fixed scope after discovery; web MVPs run $15k to $40k |
| Integration programme across several systems | 2 to 4 months | Discovery sprint ($3k to $8k), then fixed scope or a dedicated team |
| Dedicated integration engineer | Ongoing | From $4,000 a month for a senior engineer |
| Monitoring and upkeep | Ongoing | Support retainer, $1.5k to $8k per month |
Effort depends mostly on the other system: the quality of its API and sandbox, its rate limits, and how many edge cases your business rules add. We read the provider's documentation and test the sandbox before we estimate.
How a project runs
- Discovery: the systems involved, the data that moves between them, which side is the source of truth and what must happen when a call fails.
- Contract and spike: the API schema or integration design, plus a working call against each provider sandbox to surface surprises early.
- Build in sprints, with contract tests and a staging environment connected to sandbox accounts.
- Hardening: failure injection, load tests against rate limits, reconciliation jobs and alerting.
- Handover: reference docs, runbooks for the failure cases and dashboards your team can read.
Sources and further reading
Next step
Tell us what you're building and get a written estimate.
A senior engineer replies within one business day. NDA on request.
Products we've shipped, and what happened next.
Case studies written from the technical documentation of each project: the stack, the scale and the outcome.
Questions we get asked a lot.
REST or GraphQL?
REST for public and partner APIs, because it is simple to cache, document and consume. GraphQL when several front ends need different shapes of the same data. We build both: several of our platforms put a GraphQL gateway in front of their own apps, and others expose documented REST endpoints.
Can you integrate with a system that has no API?
Usually. Options include reading its database through a controlled adapter, scheduled file exchange, or automating its interface as a last resort. We choose the least fragile route and monitor it.
How do you stop duplicate charges or records?
Idempotency keys on every write, webhook events stored and de-duplicated before processing, and a scheduled reconciliation against the provider's records.
Do you document the API?
Yes. An OpenAPI or GraphQL schema, hosted reference docs and example requests are standard deliverables.
Can you take over integrations another team built?
Yes. We start with a short audit of error handling, retries, secrets and monitoring, fix the riskiest gaps first and then continue feature work.
How long does a typical integration take?
One provider with a good sandbox usually takes one to three weeks including tests and monitoring. Syncing two systems in both directions takes longer, because conflict rules have to be agreed and tested.


