Solution guide · Custom Software

Building a Platform With a Public Partner API: What It Actually Costs

The short answer

A partner API bolted onto an existing product typically runs $15,000 to $60,000. Shipped as part of a first release, expect $50,000 to $130,000 over 10 to 16 weeks. A full platform where the API is the product, with a developer portal, sandbox, OAuth app model and per partner billing, runs $150,000 to $350,000 over 6 to 12 months. The number moves on one thing more than any other: whether external companies write code against you, because from that day forward you can never quietly change a field name again.

What changes the day someone else's code calls yours

Internal APIs are cheap because you can fix both ends in one pull request. A partner API removes that. Every change after the first integration is a negotiation with people who will not deploy on your schedule.

Here is the shape it takes. You have a status field with three values. You ship a fourth, paused, in a sprint nobody flagged as risky, because your own frontend has a default case and handles it fine. A partner generated a Java client from your OpenAPI spec eight months ago. Their deserializer throws on an unknown enum value. Their consumer stops processing your webhooks entirely, not just the paused ones, and the backlog grows for six hours until someone notices. The ticket arrives addressed to your CEO, because that is who their VP knows.

Adding an enum value is a breaking change. It is on nobody's list of breaking changes, it passes every test you have, and it is the most common way partner integrations die. That is what a partner API budget actually buys: not endpoints, but the machinery that stops that deploy from shipping.

Versioning is the decision, and there are three real options

  • URL versioning (/v1, /v2). Visible, simple, and it forces a big bang migration on everyone at once. Fine if you expect two versions ever and have few enough partners that you can email each one personally.
  • Date based versioning pinned per API key. A partner is pinned to whatever version was current the day they created their key and opts into a newer one when they choose. Every change ships as a transformation shim converting new responses back to older shapes, chained oldest to newest. This is the Stripe pattern and the only one we have seen hold up past three years and twenty partners. The cost people find in year two: your codebase permanently carries every shim you have ever written.
  • Additive only, no versions. New optional fields and nothing else, forever. Cheapest to run, and it works right up until your domain model is genuinely wrong and you cannot fix it.

Whichever you pick, enforcement has to be mechanical. Put an OpenAPI spec diff in CI with a tool like oasdiff and fail the build on a breaking change, so the enum addition above cannot merge without someone consciously overriding it. If your partners are few and known, consumer driven contracts with Pact are stronger, because they test what partners actually consume rather than what your spec claims. Announce removals with the Deprecation and Sunset headers from RFC 8594, not a blog post, so a partner's monitoring can catch it.

Webhooks are a distributed system you are handing to someone else

Every partner asks for webhooks and nobody quotes them properly. What a real implementation owes:

  • Signing that is actually verifiable. HMAC-SHA256 over the timestamp concatenated with the raw request body, verified with a constant time compare. The timestamp goes inside the signed payload and you reject anything older than about five minutes, otherwise you have signed a replay attack. Support two active signing secrets at once, or partners can never rotate without dropping events.
  • Retries with jitter and a dead letter queue. Exponential backoff without jitter means every event queued during a partner's outage fires the instant they recover, and your retry storm takes them down a second time. Cap retries, park the rest in a dead letter queue, and give the partner a replay endpoint so recovery is theirs to run rather than a support ticket for you.
  • An honest statement about ordering. You cannot guarantee it. Ship a monotonic sequence number or the resource version in the payload and tell partners to treat the webhook as a hint and re-fetch. Partners who assume ordering will build a state machine on your event stream and blame you when it corrupts.
  • SSRF protection on the callback URL. A partner hands you a URL and you make an HTTP request to it from inside your network. Block private and link local ranges, resolve the DNS name and validate the resolved address rather than the hostname (or a partner rebinds it after your check), and deliver from an egress with static IPs so partners can allowlist you.

The isolation question decides your architecture: one partner whose endpoint takes 30 seconds per delivery must not stall deliveries to everyone else. That means per partner concurrency and per partner queues, not one global worker pool. Teams discover this when their largest partner's Friday deploy backs up the queue for all forty.

Rate limits protect you from your own partners

The rate limit is not for abuse. It is for the partner who wrote a nightly job that pages through your entire dataset at 2am, because they could not find an incremental endpoint, and your database is now serving them instead of your customers.

Competent looks like this: a token bucket per partner per endpoint class, since writes are expensive and should not share a budget with reads; 429 with Retry-After; and RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset headers so a well behaved client paces itself instead of hammering into your wall. Then remove the reason for the full sync. Give them an updated_since cursor or a bulk export, because if you do not build the incremental path they will build the nightly full scan and you pay for it forever.

Pagination: cursor, not offset. Offset pagination on a table receiving inserts silently skips and duplicates records while the partner pages, and it surfaces as a data loss accusation six months later with no way to prove which side is wrong. Cursor on a stable composite of created timestamp plus id, and keep the cursor opaque so you can change the implementation later.

Keys, OAuth, and the rotation nobody plans

API keys are the right answer for server to server partner access, and they are usually stored wrong. Store a hash, not the key, and show the plaintext exactly once. Prefix it (sk_live_, pk_test_) so it is greppable and so GitHub's secret scanning partner program can notify you when someone commits one. Allow two live keys per partner at once, because rotation without overlap is a scheduled outage.

OAuth 2.0 is a different product, not a bigger API key. You need it only when a partner's application acts on behalf of your individual users, which brings app registration, redirect URI validation, PKCE, scopes, a consent screen, refresh token rotation, and a way for a user to revoke an app. That is where the jump from $50,000 to $150,000 lives. If your partners are companies integrating as themselves, API keys plus scopes are enough and OAuth is a quarter you did not need to spend.

Error shapes matter more than they should. Use RFC 9457 problem details, give every error a stable machine readable code, and never change what a code means. Partners branch on those strings.

Sandbox parity

Partners ask for a sandbox on the first call, and a sandbox that behaves differently from production is worse than none, because it manufactures confidence that fails in front of the partner's own customer.

Real parity means seedable and resettable data, working webhook delivery rather than a stub, and a way to trigger the states that are hard to reach naturally: a failed payment, an expired subscription, a rate limit, a 500. Partners cannot test error handling against a sandbox that only ever returns 200, so they ship without error handling and you both find out during their launch. Budget two to four weeks and do not ship half of it.

What this costs and what drives the number

These bands come from Digital Heroes delivery experience across 2,000+ projects.

$15,000 to $60,000, 4 to 8 weeks. API keys with scopes, a documented REST surface over a data model that is already fit to expose, signed webhooks with retries and a dead letter queue, per partner rate limiting, cursor pagination, an OpenAPI spec with generated docs, and a breaking change gate in CI.

$50,000 to $130,000, 10 to 16 weeks when the API ships with the first release. You are designing a permanent public contract on top of a product that still changes weekly, and part of that cost is calendar: the contract has to freeze before the product wants to.

$150,000 to $350,000, 6 to 12 months when the API is the product. OAuth with app registration and scopes, a self serve developer portal with key management, a sandbox with seeded data and triggerable states, usage metering accurate enough to invoice against, and audit logging that survives a SOC 2 review.

What moves your number inside those bands:

  • Whether your data model is publicly presentable. The biggest swing by far. If the API would expose internal concepts, auto increment IDs and columns named after a 2019 migration, phase one is designing a public model and a translation layer. That is where a $20,000 quote becomes $60,000.
  • OAuth on behalf of users. Three to six weeks on its own, and it never leaves.
  • Usage based billing. Metering you invoice against has to be idempotent and reconcilable, which is a different bar from metering you graph.
  • Sandbox. Two to four weeks, plus a second environment you maintain forever.
  • How many partners are already signed. Zero means you can still change your mind. Ten means every decision you make this month is permanent.

The recurring cost that surprises people is not infrastructure. It is the permanent engineering tax of maintaining shims and the support load of partners who read your docs differently than you wrote them.

When you should not build this

Do not own the plumbing unless developer experience is your differentiator. Svix or Hookdeck for webhook delivery, signing, retries and the partner facing debug UI. Kong or Zuplo for the gateway, key management and rate limits. WorkOS if partner auth drifts toward enterprise. Each replaces weeks and absorbs edge cases you have not met yet.

Check the direction of the integration before building anything. If partners want you to integrate with their CRM (Customer Relationship Management), HRIS, accounting or ticketing systems, you may not need a partner API at all. A unified API layer like Merge or Nango covers those categories and removes the build. The partner API is the answer when they need to reach into your data, not when you need to reach into theirs.

Own the whole stack when the API is what you sell, when your domain has no vendor equivalent, or when a compliance boundary rules out routing partner traffic through a third party.

How to brief and vet a developer for this

Brief with facts: how many partners are signed and who they are, whether their code calls you or yours calls them, whether their app acts on behalf of your users or as itself, the largest read a partner will realistically make, and whether you have already published anything you cannot take back.

Then ask these.

  • "Is adding a value to an enum a breaking change?" Yes, and they should say it before you finish the sentence. Anyone who says no has not had the 3am ticket.
  • "How does a partner rotate a signing secret without dropping events?" Two active secrets. If the answer is a maintenance window, they have not run this.
  • "Offset or cursor pagination, and why?" Cursor, with a reason that involves inserts.
  • "A partner registers a webhook URL of http://169.254.169.254/latest/meta-data/. What happens?" If they do not recognise that address instantly, your cloud credentials are their next deliverable.
  • "One partner's endpoint takes 30 seconds. What happens to the other 39?" You want per partner concurrency. "The queue backs up" is at least an honest wrong answer.
  • "What mechanically stops a breaking change from merging?" A spec diff or contract tests in CI. "Code review" is not a mechanism.
  • "How do you store API keys?" Hashed, shown once, prefixed. If they say encrypted, ask who holds the key.
  • "Show me a sandbox you built. How do I trigger a failed payment in it?" If there is no answer, the sandbox was a copy of staging.

Ask for a paid discovery whose deliverable is the OpenAPI spec and a written versioning policy, before anyone writes an endpoint. The spec is the expensive artifact. The code implementing it is comparatively cheap, and no amount of good implementation rescues a wrong spec.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Large companies globally have captured, on average, only 31% of the expected revenue lift and 25% of the expected cost savings from their digital and AI transformations - a significant gap between expected and realized value. Source: McKinsey & Company (2023) →
  2. Companies in the top quartile of McKinsey's Developer Velocity Index had 2014-18 revenue growth four to five times faster than bottom-quartile peers, showing that software-building capability is a driver of business performance, not just a support function. Source: McKinsey & Company (2020) →
  3. Gallup reports global employee engagement fell to 20% in 2025 (its lowest since 2020, down from a 2022-2023 peak of 23%), and estimates low engagement costs the world economy an estimated $10 trillion in lost productivity, or 9% of global GDP. (Note: this figure appears in Gallup's evergreen State of the Global Workplace page, currently reflecting the 2026 edition reporting on 2025 data.). Source: Gallup (2025) →
  4. WordPress powers 41.5% of all websites and holds 59.2% of the market among sites running a known content management system, making it by far the most-used CMS on the web. Source: W3Techs (2026) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does it cost to add a partner API to an existing product?
Typically $15,000 to $60,000 for a focused build on an existing product with a clean data model. That covers API key auth, a documented REST surface, webhooks with signing and retries, rate limiting and generated docs. The main cost driver is whether your existing schema can be exposed publicly or whether a public data model has to be designed from scratch first.
How long does it take to build a public partner API?
A focused build inside an existing product is usually 4 to 8 weeks. Shipping it as part of a first release runs 10 to 16 weeks because the public contract is being designed while the product underneath is still changing. A full platform with OAuth, a developer portal and a sandbox is 6 to 12 months.
Can you add a partner API to our existing app?
Yes, and it is usually the cheapest path. The determining factor is your current data model. If your tables already have clean tenant boundaries and stable public identifiers, the retrofit is straightforward. If your partner API would expose internal concepts that were never meant to be seen, the first phase is designing a public data model, which is where most of the budget difference comes from.
What breaks at scale with a partner API?
Three things, in order. Webhook delivery, because one partner going down produces a retry backlog that becomes a thundering herd on their recovery unless you have jitter and a dead letter queue. Rate limits, because a single partner's nightly full sync will take your database down for everyone else. And versioning, because once ten partners are pinned to different behaviour, every change needs a transformation shim.
Should we use a third-party service instead of building the API ourselves?
Use third-party services for the plumbing unless the API is your actual product. Svix or Hookdeck for webhooks, Kong or Zuplo for the gateway and key management, WorkOS for enterprise auth. If your integrations are into standard categories like CRM, HRIS or accounting, a unified API layer like Merge or Nango may replace the build entirely. Own the whole stack only when developer experience is your differentiator.
Is a $20,000 budget realistic for a partner API?
Yes, for a specific scope: API key authentication, read plus a small set of write endpoints, HMAC signed webhooks with retries, per partner rate limiting and OpenAPI generated docs, on top of a data model that is already publicly presentable. It does not cover OAuth on behalf of users, a sandbox environment or usage based billing. Each of those adds three to six weeks on its own.
What does a $150,000 partner API platform buy that a $50,000 one does not?
At $150,000 and up you get the API as a product: OAuth 2.0 with app registration and scopes, a self serve developer portal with key management, a sandbox with seeded data and triggerable edge states, usage metering accurate enough to bill against, and audit logging that survives a SOC 2 review. At $50,000 you get a well built API that your team onboards partners onto by hand.
Do we need a sandbox environment for partners?
Partners will ask for one on the first call, and a sandbox that behaves differently from production is worse than having none. A real sandbox needs seedable and resettable data, working webhook delivery, and a way to trigger states that are hard to reach naturally like failed payments or expired subscriptions. Budget two to four weeks for it and do not ship a half version.
How do we avoid breaking partner integrations when we change the API?
Additive changes only within a version: new optional fields and new enum values, never removals or type changes. Gate it in CI with an OpenAPI spec diff tool like oasdiff that fails the build on a breaking change, or consumer driven contracts with Pact. For real changes, use date based versioning pinned per API key with transformation shims, which is the pattern Stripe uses and the only one that holds up over years.
What should I have ready before I contact a development agency?
Three things, none of them technical: a one-page description of the problem in your own words, a list of the tools and spreadsheets the new system must replace or connect to, and a must-have versus nice-to-have split of features. Add a budget range, even a wide one, because it changes the conversation from fantasy to engineering. You do not need a formal specification; producing that is what a discovery phase is for.
We run everything on Airtable and spreadsheets. When is it time to go custom?
The switch usually makes sense when you hit one of two walls: Airtable's record caps (125,000 records per base on the Business plan) or logic the tool cannot express, like multi-step approvals with conditional pricing. There is also a simple cost signal: 25 people on Business at roughly $45 per seat per month is about $13,500 a year, forever, for a tool you are already fighting. Custom is worth it when the workflow is core to how you make money; for peripheral processes, staying on Airtable is the right call.
Couldn't I just build my app in Bubble or another no-code tool instead of hiring an agency?
For validating an idea with real users, yes, and we tell clients that honestly. The walls come later: Bubble apps cannot be exported as code to run anywhere else, performance drops on complex data operations, and usage-based pricing climbs as you grow. A meaningful share of Digital Heroes custom builds are rebuilds of no-code MVPs that proved the business worked, which is the system operating as intended: validate cheap, then build the version that scales.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
How much should a small business expect to pay for custom software?
Across 2,000+ Digital Heroes projects, a small business system that replaces spreadsheets or one core workflow typically lands between $40,000 and $80,000, with more complex first versions running up to $150,000. The two levers that move the number most are integrations and user roles, not the team's hourly rate. Any quote under $15,000 for a full production system means the vendor has not understood your scope yet.
How small can the first version of my software be and still be worth building?
One workflow, end to end, for one type of user: the single process that currently burns the most hours or loses the most money. In Digital Heroes delivery experience, first versions scoped to 6 to 10 weeks of build time ship, get used, and generate the feedback that makes version two obviously right, while 9-month first versions routinely launch with features nobody touches. Everything you cut from v1 gets cheaper to build later, because real usage reorders the roadmap for you.
How do I make sure custom software is secure and compliant with rules like HIPAA?
Start with the baseline every business system should have: encryption in transit and at rest, role-based access control, and audit logs. If HIPAA applies, the hosting provider must sign a Business Associate Agreement, which AWS, Azure, and Google Cloud all offer, and access controls have to be designed in from day one, not bolted on. SOC 2 certifies a company's operating practices, not a codebase, so ask vendors what they have shipped in your regulated domain rather than which logos are on their website.
Will custom software work with the tools we already use, like QuickBooks and Stripe?
Yes, and this is one of custom software's genuine advantages: QuickBooks, Stripe, Shopify, and most mainstream business tools publish documented APIs built for exactly this. Expect each standard integration to add one to two weeks of build time, and be suspicious of any quote that lists five integrations without asking what data flows in which direction. The hard cases are legacy systems with no API, which is a question to raise in discovery, not in week nine.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?